本書を手にとったとき、「やられた」と思った。同時に、この手を思いつかなかった己の不明を恥じた。このジャンルについては人より明るいつもりでいたのに、自分はこの手を考えつかなかった。ちょっと、落ち込んだ。
本書は「プログラミングとは何か」を述べた入門書である。2部構成になっていて、前半はまさしく「プログラミングとは何か」について概説している。後半はもっとも利用されているだろうプログラミング言語、C(なにしろ、WindowsもiOSも基幹部分はCでつくられている)との比較と簡単な紹介によって、JavaとかBasicとかPerlとか、有名言語・人気言語を20取り上げ、紹介している。
類書は、たぶんない。
ワン&オンリーの本である。
じつは、出版の世界において類書がないことは必ずしも誇るべきことではなくて、むしろ不幸なことだと私は思っているのだが、それはひとまず置こう。本書が孤高の書物であることを認識していただければ十分だ。
プログラミング言語の解説本は、なにかテーマとなる言語を取り上げ(「C」とか「Java」とか)それについて述べるのが常だった。むろん、初心者向けの優しいものもあれば高度な技法について述べたものもある。しかし、程度の差こそあれテーマは同じだ。それしか、あり得ないものだと思っていた。
ところが、本書はそうではない。本来であれば1冊の本のテーマとなるべき言語を20選び出し、並列することによって、「プログラミングとは何か」という切り口を見せることに成功しているのだ。
先に断っておくが、本書を読んだところで、プログラマになることはできない。ひとつの言語に熟達するのは、そんなに甘いこっちゃないのだ。いみじくも本書の著者が述べているごとく、継続して学習することが絶対に必要になる。
特徴的なのは、そのための教材として、著者がネットの情報を紹介していることである。いわく、「本書で取り上げた言語は、インターネットを通じて無料で学習できます」。
ところで、私は不用意に「プログラミング」「プログラミング言語」という言葉を使ってきたけれど、「プログラミングって何?」という人はとても多いはずだ(なにしろ、学校で習うこっちゃないから!)。簡単に述べておこう。
プログラミングとは、「機械(コンピュータ)に命令を与えること」である。そのための言葉をプログラミング言語という。異論もあろうが、そう考えて大きくはずれることはない。
機械というのは融通が利かないものだから、人間の言葉を理解しない。「これをそっちにもっていけ」と言えば、3歳の子供でもそれを実行できるだろう。ところが、機械に同じことを言うとなるとたいへんだ。「これ」って何か、「そっち」とはどこか、いちいち正確に指定してやらなければならない。たとえば空間座標など、高度なデータも必要になってくるだろう。人間ならば「適当に」「いい塩梅に」「常識的な範囲で」理解してくれるのに、相手が機械だとそうはいかないのである。したがって命令は必然的に、くどく、細かく、うるさくなる。
その、「くどく、細かく、うるさい」命令を伝えるのがプログラミング言語だ。
すこし大きな書店のIT本のコーナーに行けば、プログラミング言語の解説本がたくさん並んでいるのを見ることができるだろう。そのとき、誰もがこう思うはずだ。「プログラミング言語って、こんなにたくさんあるのかよ!」
ところが、これほどたくさん種類があっても、煎じ詰めると言語の役割はひとつしかないのである。「機械に命令を与えること」。ただそれだけだ。
だったらひとつあればいいじゃないか、と思うでしょ? ところが、そうなっていないのは、それぞれの言語に得意・不得意があるからだ。科学技術計算するならこれ、インターネットで使うならこれ、アプリを作るならこれ。その特性にしたがって、いくつも種類ができたのだ(別の理由もある)。
……と、いうようなことは、本書には載っていない。逆に言うと、これぐらいとば口に立たないと、本書の範疇からは逸脱できないのだ。
本書は、「プログラミング言語とは何か」というたいへん重要で現代的なテーマを、主要言語を紹介することで消化した書物である。何度も言うが、類書はたぶんない。ワン&オンリーの本である。
そして……、おそらくネットでは本書に書かれた情報を本書以上に効率的に学ぶことはできないだろう。その意味でも、希有の本である。
レビュアー
早稲田大学卒。書籍編集者として100冊以上の本を企画・編集(うち半分を執筆)。日本に本格的なIT教育を普及させるため、国内ではじめての小中学生向けプログラミング学習機関「TENTO」を設立。TENTO名義で『12歳からはじめるHTML5とCSS3』(ラトルズ)を、個人名義で講談社ブルーバックス『メールはなぜ届くのか』『SNSって面白いの?』を出版。「IT知識は万人が持つべき基礎素養」が持論。2013年より身体障害者になった。