「プログラミング言語を理解するにはどうしたらいい?」という話を聞いて思うこと

「プログラミングとか特定のプログラミング言語とかを習得したくて色々勉強したけど、いまいち理解できた感じがしない、何がいけないのだろう、何を学べばいいんだろう」という話を聞いて思ったこと。

それって、目的が曖昧だから達成感が得られないというだけじゃないのか?

僕の今までの人生の中には「プログラミングを習得した!」と思える瞬間も「Pythonを理解した!」と思える瞬間もなかった。具体的な「Pythonで継続のある言語を実装できた!」とかならある。でも「継続の概念を完全にマスターしましたか」と言われるとそんな気はまったくしない。まだまだ先は長い。しかし僕よりはるかに継続に詳しい人たちが集まって継続に関する議論をしてたりするのを見ると、この道に明確なゴールはないことがわかる。どこまで行っても「まだ先がある」という感じが残るに違いない。

手段が間違っているのではなく、目的が間違っているんだ。「○○を習得する」なんてゴールは存在しないんだ。だからいくら進んでもゴールにたどり着かないんだ。達成感が得られないんだ。

なぜJavaでもPythonでもRubyでも、世の中の大半の言語はバージョン1.0でフィックスではなく、どんどんバージョンが上がって行くのか?そりゃその言語の作者が「作って公開はしたけど、やっぱここはああするよりこうした方がよかったな、修正しよう」って思うからじゃないのか。言語の作者ですらわからないゴールに本とかで勉強してたどり着けると思うのか。本気である言語をマスターしようと思うのであれば、まずその言語のオフィシャルのドキュメントを全部読み、それから標準ライブラリのコードを全部読み、処理系の実装を全部読み、それから自分で処理系を実装するべきだろう。そこまでやればまあ「この言語はマスターした」と言ってもかまわないだろう。僕はそんなことをしようとは思わない。僕の目標は特定の言語を完全に理解することじゃない。作りたいものがあるから、それを作るために最低限必要なだけの知識が欲しいだけだ。

君の目的は本当にその言語をマスターすることなのか?


なんかホットエントリー化しているようなので自分の書いた本とおすすめのPython本のアフィリエイトを貼っておく。

僕がこの本を書いたときも、だいぶ長いこと「こんな内容でいいんだろうか、もっとよくできるんじゃないだろうか、ごめんなさいって言って出すのをやめた方がいいんじゃないだろうか」という気持ちに悩まされた。本に限らず「もっと理解してから作った方がいい」のは事実だが「ここまで理解すれば十分」というゴールが存在しないのも事実。今の自分でできるものを作って公開して、その行為を通して学んで行くしかないのだと思っている。