このサイトについて
Pythonを学ぶ最良の方法とは?
プログラミングはなぜ難しいのか

プログラミングはなぜ難しいのか

4月19日(水)に開催される勉強会にお呼ばれして,お話をすることになった。10年間多くの方に読んで頂いているPythonの入門書を書いている関係もあって,つねづね「プログラミングはなぜ難しいのか」について考えたり調べたりすることが多いのだけど,当日はそのことも含め,どうすればよりよく学習できるのか,プログラミングとは何か,ということなどにも言及したいと思っている。

プログラミングが難しいのは,一言で言うと「ロジックの塊」だから,ということなんだけど,そうすると「じゃあ論理的な思考が得意な人だけがプログラミングやればいいじゃん」みたいな話になりかねないので,もう少し砕いて考えてみたいと思う。

たとえば,この手の話題でよく引き合いに出されるFizzBuzz問題

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

これを解くプログラムを作るには,二種類のハードルがある。

ひとつは,プログラム言語で実行できることがらの要素を知る,というハードル。演算(割り算の余りを得る),条件分岐,ループ,文字列の表示。

そして二つ目は,問題の条件を満たすよう,機能を組み合わせる方法を考えるというハードル。

一つ目は,言ってみれば暗記で乗り越えられるタイプのハードルなので,それほど難しくはない。問題は二つ目で,このハードルを越えるには,問題を要素に分割して,プログラム言語で実行できる命令に置き換え,問題の要件を満たすように組み上げてゆく必要がある。ここに論理的思考が必要で,このハードルは一般ピープルには容易に超えられない。プログラミングができる人は,この種の論理的思考になれているので,この種の問題を難なく解ける。

では,論理的思考が得意な人とそうでない人を分けるのはなんなのか? そう思っていろいろ調べてみると,面白いことが分かってきた。人間は「論理そのもの」を扱うのがそもそも苦手らしいのだ。

2017-04-14 12:00 Read More
マサカリが無かったらみんなのPython第四版も無かったよな〜,という話

マサカリが無かったらみんなのPython第四版も無かったよな〜,という話

マサカリも受け方で血肉になるよ,という話をします。

しばらく前,みんなのPython第三版のAmazonレビューに誤字のリストを投げた人がいた。誤字があるのは著者として読者の皆様に大変申し訳ない。実際はコスト的に時間あんまかけられないとか諸事情があるのだけど,とにかく恥ずかしい話である。なお,誤字を報告しても連絡が無い,というのは常識的に考えても本当かどうか微妙だ。事実,読者からの質問や誤字の情報については,定期的に編集者の方から連絡をいただいていた。

そうこうしているうちに,今年の初め頃,SBクリエイティブ編集部から改訂のお話をいただいた。

2017-01-05 16:00 Read More
プログラミング力向上のコツ - みんなのPython第四版のオマケ

プログラミング力向上のコツ - みんなのPython第四版のオマケ

みんなのPython 第四版サンプルコードを公開に向け整備していたとき,ちょっとしたオマケの文章があるといいかなと思って書いた見たところ,一部に好評だったので公開してみたいと思います。

オマケ : プログラミング力上達のコツ

このNotebookでは,拙著を読んで,その後どうすんだ,ということについて,書籍には載せないような砕けたかんじで書いてみたいと思います。プログラミングを上達させるためのコツについて,つらつら書いてみました。どうぞ。

目標を設定しよう

まずは,Pythonを使ってなにがしたいのか,ゴールを明確にしましょう。

「Webアプリを作りたい」「Raspberry PiでIoTデバイスを作りたい」「人工知能を活用したい」「データ分析をしたい」など,できるだけ具体的な目標を立てましょう。

「世の中を変えたい」「お金を稼ぎたい」「異性にモテたい」「とにかくビッグになりたい」というような抽象的な目標をたててはいけません。

煩悩は知的成長を助けないのです。

2016-12-16 15:00 Read More
Pythonで嫁を見つけた話 - みんなのPython第四版に寄せて

Pythonで嫁を見つけた話 - みんなのPython第四版に寄せて

まもなく発刊される拙著みんなのPython 第四版の改訂向け執筆を終えた。

初版の発売は2006年で,今年はちょうど10年目になる。そこでふと,もしPythonを使っていなかったらどうなったろう,と考えてみた。そして重大なことに気づいた。

みんなのPythonを書く少し前,2005年ごろの僕は,今以上に後先考えないで行動するオッサンだった。当時まだ日本では無名に近かったPythonのより新し情報を仕入れ,本場のオープンソース関連カンファレンスに行って技術の成長点の雰囲気を味わうべく,ワシントンDCで開催されたPyCon USに行ってみよう,と突然思ったのだった。今以上に英語ができなかった僕は,頭がキレッキレの第一線級エンジニアが繰り出す早口の英語トークも聞き取れるはずもなく,おまけに機内で米国人のパーサーにコーヒーを頼んだらコーラが出てくるような始末であった。

2016-11-25 12:00 Read More
Pythonのプログラムをワンライナー化するOnelinerizerがいろんな意味ですごい

Pythonのプログラムをワンライナー化するOnelinerizerがいろんな意味ですごい

Pythonのプログラムを構成する要素には大きく分けて「式(Expression)」「文(Statement)」がある。式とは演算式や比較式,オブジェクトのリテラル,関数呼び出しなど。一方,文は,if文,for文や関数定義,クラス定義やモジュール/パッケージのインポート,そして代入,など。式は改行を要求しないので,一行にいくらでも連ねることができるけど,文は改行や,しばしばインデントを伴うブロックを要求する。

Pythonは文と式がきっかり分かれている。そんなわけで,Pythonではプログラムを一行で書くいわゆる「ワンライナー」がつくりにくいと言われている。Pythonでワンライナー作るとき,文をいかにして式に変換するか,というテクニックを駆使することになるんだけど,lambda式を駆使したり名前空間を無理矢理貪ったりするような技巧の数々はたいてい変態的で,だからこそプログラマの魂を揺さぶって一定の人々の興味を常にかき立てるのかも知れない。

ここで紹介するOneliner-izerは,Python2のワンライナーに斜め上から挑戦したツール。スクリプトを食わせると,文法解析して自動的にワンライナー化してくれる。

2016-11-09 17:00 Read More
シン・ゴジラはアンノ自身の再生・覚醒の物語だ

シン・ゴジラはアンノ自身の再生・覚醒の物語だ

実は一度だけプライベートのリアル庵野を見たことがある。神奈川県内のとあるパーキングエリアの売店でのことだった。2013年ごろ,エヴァQが終わってしばらくした頃で,エヴァを完結すべく製作に邁進しているはずの庵野さんがなんでこんなところにいるのか,その時は正直不思議でならなかった。

声をかけようかとも思ったのだけど,妙におどおどしているというか,自信なさげな表情で,「気づいてくれるなよ」といった負のオーラを発していた。そのまま遠巻きに見ているとカールを買ってそのまま売店を出て行ってしまって,スナック菓子が主食って本当だったんだなぁ,と思ったりした。

その時の,数々のヒットアニメを手がけた巨匠,というイメージからはほど遠い印象の彼の沈んだ表情が,妙に頭から離れなかった。

2016-08-18 17:00 Read More
自宅の庭にウッドデッキを作りました

自宅の庭にウッドデッキを作りました

自宅のウッドデッキ

去年の12月に新築した世田谷区某所の自宅は思いのほか庭が広い。家族といろいろ活用計画を練りながら,庭にウッドデッキを作ることにした。設計から業者に頼んでもよかったんだけど,どうせならと思って自分達で青写真かいて作ろうと思ったのだった。ソフトウエアの開発と土木とか木工って根底では繋がっていると思っていて,ソフトウエア開発の分野でもとんがった部分に触れながら培ってきた,未知の領域に踏み込む手法とか,不案内な場でもできるだけ迷わずしなやかに出口にたどり着く方法論なんかを,別の分野でも試してみたかった,というモチベーションもあった。いろいろ調べていたらキットのウッドデッキを見つけたりして,これなら行けそう,と判断して自作することにした。

木工で一番大変なのは木材のカット。このキットはあらかじめ寸法を出しておけば,部材を必要なサイズにカットして届けてくれるので,大変な部分を初心者がやらなくて済み,手軽にデッキを作れ,失敗する可能性も低くなる。

これが施工前の様子。

2015-11-24 14:00 Read More