やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

【書評】「コーディングを支える技術」で言語に対する興味を掻き立てられた。

コーディングを支える技術を読んだ。

今までで、JavaRubypython、html、CSSJavaScriptなどを簡単に触れてきたが、プログラミング言語の本質的なところにはあまり触れてこなかったのだなぁとこの本を読んで思った。
ちょうどこの本を読んでいるときに、YouTubeRubyの父まつもとゆきひろ氏のN高校での講義の動画があったので見てみた。

www.youtube.com

プログラミング言語を開発しちゃうくらいだから、物心ついた頃からさぞかしプログラミングっ子だったんだろうなと思っていたが、実はそうでもない。
確か高校生くらいからプログラミングをやりだしたらしい。
それに、そんなに高度なことをやっていたわけでもなく、コンパイラを自作しようとしたら難しすぎて諦めたという話は親近感を覚える。
しかし、そんな状態からいまのMatzがあるわけである。
そんなわけで、ちょっと言語に対する興味が湧いてきていた時期に、ちょうどこの本を読んでみた。 コンピュータの歴史、プログラミングの歴史とともに、なぜそんな文法や決まり、仕様ができたのかをわかりやすく解説してくれている。

これは個人的にコンピューターサイエンスっぽい感じがする、大学でもちょっとアセンブラ言語っぽいverilog(本当はハードウェア記述言語)というものをやっていたので、親近感が湧いて、ちょっと勉強する気になった。

大学時代には「何だこの言語、参考書籍も全然ないし、こんなにプログラム書いてただの繰り上がりありの足し算しかできないのかよ、ゴミかよ」って思っていたが、今になってそれが帰ってきたように思う。   コンピューターって本当はこうやって動くんだということがようやく山の両方から掘っていたトンネルが繋がったみたいだ。

全体を通して言えることは、「プログラミング言語は完璧ではない」ということだ。   コンピューターの仕組みは、ある程度は完璧と言ってもいいものなのかもしれない。 (例えば2+2はいつでも4である。)
しかし、そのコンピューターを使って、人間が作るものはどうも完璧というのはなし得ないようだ。

だからいろいろなルールを作って、なるべく間違えがないようにするにはどうしたらいいだろう?という理念の基プログラミング言語が構築されているのだ。

「正しく書けば、動くんだ」という無機質なものから、「どうすればみんなの考えを理解できるか、自分の考えを理解させられるか」ということを考えていかないと、プログラミング、及びチーム開発はできないのではないか?とひしひしと感じた。
ルール通りに厳格に決めきってしまうのも一方では重要であるが、なぜそれを使っているのかという大本を考えてみると、納得がいくものも多いような気がする。