読者です 読者をやめる 読者になる 読者になる

今はプログラミングできるようにはなりません/清水亮『教養としてのプログラミング講座』

書評 自然科学

 

教養としてのプログラミング講座 (中公新書ラクレ)
 

 変わった本で、ある種のプログラミングのある種の思想を抜き出した本。あとGUI推し。

だからこの本をプログラミング多少書ける人が読んでもあんまり感銘は受けないと思う。ただし、それはよくある「教養としての」とか「文系のための」とかタイトルについた本みたいな「バカ向けの」の婉曲表現ではなく、根本的な方向性の違いにある。プログラミングを多少でも知ってる人は、この本が何を言いたいのかあんまりわかんないんじゃないかな(もちろんそれはこの本が多少散漫なせいでもあるんだけど)。

 

藁人形で申し訳ないんだけど、プログラミング多少なりともできる人は、たぶんこの本が何をやりたいのかさっぱりわからないと思う。それはなぜかというと、たぶん「プログラミングとはパソコンに文字をガリガリ打ち込んでコンピューター上で仕事をしてもらうものだ」という思い込みがあるからだ(よくよく考えると「プログラミング多少なりともできる人」というのはひどい偏見かも。プログラミングやったことある時間が0時間だろうが100時間だろうが、プログラミング=コンピューターという思い込みをしている人はこの点で引っかかると思う)。

 

では、清水が考えているプログラミングの本質はなにか。それは「自分以外のものを、思い通りに動かす方法」(『教養としてのプログラミング講座』中公新書ラクレ、p.5)だそうな。パソコンとか文字入力とかはかかわらない。その証拠に、この本の3/5ぐらいはほとんどパソコンとかかわる話ではなく、むしろおつかいの注文とか信長の鉄砲隊とかタロットカードとか、変な話がちらほら。なので、不思議に思う人もいると思うし、よくわからない話にうんざりして本を投げる人もいると思う(ちなみにそういう人は実はこの本をよむ必要はあまりないかもしれない。そういう意味では賢明な判断)。

さらに、4章に入るとようやくコンピューターを使ったプログラミングがでてくるわけだが、そこで扱うのが「MOONBlock」という清水が開発したプログラミング言語。開いてみればわかるんだけど、GUIの側面をかなり重視したもの。一般的なプログラミングのイメージとはかなり違う。

そして最後の章のタイトルは「プログラミングの未来」。ここで提示されるのは、プログラミング言語がどんどん普通言語に寄っていったり、「MOONBlock」のようなGUIプログラミング言語が主流になっていったり、さらにはTUIという、現実世界の物質を入力するプログラミング言語が重要になってくる、という未来像だ。ここもたぶんプログラミングの一般的なイメージとはかなり違う。

 

さて、もう一度考える。この本は結局なにをいいたいのか? それはたぶん、5章に提示された未来像だ。そしてこの未来像は、ぼくが読んだ限りではわりと正当なものだと思う。なぜかというと、今主流のプログラミング言語は、UIの進化に対応しているとは言い難いからだ。

そもそも今主流のプログラミング言語CUIに最適化されたものだと思う。それが今のMacWindowsのようなGUIが主流になっても、プログラミングの世界では未だに派遣を握っている。ここらへんはMacのほうがWindowsよりも優れているのにもかかわらずWindowsのほうがずっとシェアが高いのと似ている話かもしれない。さらに今は、スマホタブレットのような、より直感的なGUIが覇権を握っている時代だ。もちろんスマホタブレットでも今のプログラミング言語は書けるけど、最適化といわれると微妙……。

ということで、もっとGUIにあわせたプログラミングを活発化したほうが幸せなのではないか? というのがこの本の提唱していること(のはず)。プログラミングの根本的な思想さえ理解していればだれでも簡単にプログラミングができるというのはある種の理想的な状況だと思う。そして、そういうプログラミング言語ができたとき、この本は必読書になるはずだ。

 

と、Pythonをちょっとしかいじったことのないぼくは思うのでした。ちなみにこの本は悪いところもいっぱいあって、例として挙げているもののなかにあんまり的確じゃないものがあったり、「MOONBlock」が応用性うんこだったり、「MOONBlock」を使ったプログラミングの実践がトップダウン的で下手だったり(問題解決方式のほうがよかったと思う)、そもそも今あんまり役に立たなかったり。まあでも、わざわざ本棚にとっておくほどではないけど、読む価値のある本ではあると思う。