2009年05月25日 23:00 [Edit]

神は細部に宿る - 書評 - まつもとゆきひろ コードの世界

「勝間本なのに、なんで献本こないかな」と思ってたらMatz本でした:)。というわけで購入。

イイ!イイよこれ!

けど、すごくわかりづらいイイ!であるというのも確か。残念ながら勝間本と違って、本書はプログラムを書ける人でないと読むこともままならないので。

この本をどれだけイイ!と思えるかで、プログラマーとしての発展段階を測れる、そんな一冊だ。本blogのプログラム関連の記事を、飛ばさず読んでらっしゃる方であれば、絶対楽しめます。


本書「まつもとゆきひろ コードの世界」は、まつもとゆきひろの本ではあるが、プログラミング言語Rubyの本ではない。「レイヤー」で言うと、それより一段上の本である。強いてRuby本として本書を見ると、本書はなぜ著者が ruby を「そうしたのか」を語った「メタRuby本」であり、"How to"ではなく"Why"が語られた本である。

目次 - 日経BP書店|商品詳細 - まつもとゆきひろ コードの世界より。
【第1章】 私はなぜRubyを開発したのか
私はなぜRubyを開発したのか
【第2章】 オブジェクトについて
プログラミングとオブジェクト指向の関係
抽象データと継承
多重継承の負の側面
2つの誤解
Duck Typingが生まれるまで
メタプログラミング
「プログマティズム」
【第3章】 ブロックについて
ブロックのパワー
ブロックによる繰り返し
コレクションを使いこなす
「外観で広がる応用範囲」
【第4章】 デザイン・パターンについて
デザイン・パターン(1)
デザイン・パターン(2)
デザイン・パターン(3)
「語彙と共通言語の重要性」
【第5章】 Ajaxについて
AjaxとJavaScript(前編)
AjaxとJavaScript(後編)
「名前重要」
【第6章】 Ruby on Railsについて
MVCとRuby on Rails
オープンクラスとモンキーパッチング
「Ruby on Railsの秘密」
【第7章】 文字コードについて
文字コードの種類
プログラムでの文字の扱い
「Unicode」
【第8章】 正規表現について
正規表現の基本
正規表現の応用例と「鬼車」
「DSL」
【第9章】 整数と浮動小数について
意外に深い整数の世界
浮動小数点数の謎に満ちた世界
「常識が通じないコンピュータ」
【第10章】 プログラムの高速化と並列化について
プログラムを高速化する(前編)
プログラムを高速化する(後編)
並列プログラミング
並列プログラミングの有望技術、アクター
「2つの法則」
【第11章】 プログラムのセキュリティについて
プログラムの脆弱性と攻撃手法
例外によるエラー処理
「セキュリティ対策の変遷」
【第12章】 時間を扱うプログラムについて
時刻と時間を扱うプログラム
「時間の難解さ」
【第13章】 データの永続性について
データを永続化する方法
オブジェクトの保存
XMLに関する一考察
【第14章】 関数型プログラミングについて など
新パラダイム「関数型プログラミング」
コードジェネレーション
メモリー管理とガーベジ・コレクション
C言語によるRubyの拡張
なぜオープンソースなのか
「パラダイムの変化」

それを念頭において目次を見ると、むしろ驚くかも知れない。これではまるで「Ruby逆引きハンドブック」か「Rubyクックブック」かといった、ハウツー本ではないか。もっと思想とか思考法とか掟とかフレームワークとか、「骨組み」について書いた本ではないのか。と。これを読んで10倍効率よくプログラミングできるようにならないんでつか?

と、感じた人は、中級者である。そして、中級者であれば各章は間違いなく楽しめる。本書はたとえばK&RSICPといった教科書と比べても、ずっとカジュアルな一冊であり、「プログラミング言語Ruby」と比べてすらそうである。

しかし、これらの散文的な各章の課題を、すべて自分でやってみたことがある人となると、どれくらいになるのか。よほどの経験者でも、いや経験者であればこそこれほど多岐にわたる問題に直面することはむしろ少ないのではないか。しかしそれこそが、日常言語を実装するということなのである。

そう。「日常」言語。Cは「汎用」ではあるが、日常とはいいがたい。あれは日常言語を書くための言語であり、実際Rubyも--正確には MRI = Matz Ruby Implementation は--Cで書かれている。よほどCが好きな人でも、ワンライナーで済むことをCで書くとは思えない。それでいて、ワンライナーだけ書ければよいというわけには行かない。Larry Wall風に言えば、「簡単なことは簡単に」出来るだけでは駄目で、「難しいことも可能」でなければならない。

その点において、名著"Programming Pearl"(珠玉のプログラミング)のawkは、十分日常的であったとは言えない。同書の「無理があるなあ」という部分は、そういったawkの機能不足によるところが大きい。これを一挙に解決したのが Perl で、ラクダ本の正式名称である"Programming Perl"が同著に引っ掛けてある点を思い出す方も少なくないかも知れない。

その Perl においても「難しいことも可能」に分類されていたことをも、「簡単なことに」しようとし、少なからぬ成功をおさめたのがRubyなのだ。その実装において、たとえばLispプログラマーから見て枝葉末節的なことにもきちんと取り組まざるを得ない。Rubyのすごさは、すごくないことにある。いや、すごい人にしか手が届かなかったことを、すごくない人の手に届けたことにある。言語にとってその父は神であるが、現代の神はディテールに宿らざるを得ないのだ。「正規表現なんぞ人間の仕事」と言っているわけには行かないのだ。

その神が、自ら because を解説しているのだ。こんな本が他にあるだろうか。

確かにそれは「神々しさ」を損ねる行為ではある。もし十誡をヤハウェ自らが解説していたら、預言者は不要である。モーゼ涙目。しかし、MatzのRuby神としてのふるまいは、まさにアミニズム的。私のようなPaganとも平気で言葉を交わすし、こんな表紙にもなったりもする。

それがどれほど幸運ことなのか。預言者でもないあなたのところに、英語ではなく日本語で話しかけることが、どれほど有り難い、そうレトリック抜きで、有り、難いことなのか、改めて考えて欲しい。

本書はプログラミング中級者以上であれば、Rubyistでなくても楽しめて、しかし全章を味わうには上級者でなければならないという、そんな本なのだ。

Matzにっき(2009-05-23)
などと、一部で不評な本ですが、私だって恥ずかしいのを我慢してるんだから、 せめて書店で中身を眺めるくらいはしてください。 面白くなかったら買わなくてもいいから。

本書が面白くないという人は、プログラマーとして一人前ではないと喜んで弾言させていただく。しかし、中味を眺めるだけで面白さがわかるという本でもないことも断言せざるを得ない。買って読むのが一番手っ取り早いのだろう。実際それほど高額な本ではないのだし、という台詞に「プログラミングの本としては」という但し書きをつけざるを得るのはちょっと悲しいことだけど。

Matzにっき(2009-05-23)
ただ、残念なことにプログラミング関係書籍は順位の割に部数は出ないし、 「夢の印税生活」というわけにはいきそうにない。 今回は連載の再利用なので、さらに印税率が低いし。

一般書なみにプログラミングの本が売れる時代は来ないのかなあ....

Dan the Salt of the Blogsphere


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:神は細部に宿る - 書評 - まつもとゆきひろ コードの世界
404 Blog Not Found:神は細部に宿る - 書評 - まつもとゆきひろ コードの世界【】at 2012年01月21日 22:56
「まつもとゆきひろ コードの世界」(まつもとゆきひろ)  この本は気になっていたんだけど、表紙や帯を見ると、なんだか安っぽいノリなのかな?と思わせる感じなので手が伸びなかった、という状態だった。 「shi3zさんの日記」を見ると、次のように書いてあって...
「まつもとゆきひろ コードの世界」(まつもとゆきひろ)【積ん読 または 買い物リスト IT部門】at 2009年07月04日 14:03
一時期「キッパリ!」なんて本がベストセラーになっていた事を覚えている方はいるかもしれませんが、今でもこの手の自己啓発書は飛ぶように売れています。 それだけ「継続できない事」や「向上する事」を求める人が増えているという証拠です。 つまり、ダラダラし...
即座に自分を変える単純な方法【貧乏脱出プログラム】at 2009年05月27日 22:46
この記事へのコメント
>そして「あなた視点を押しつける」わけですね。

アホですか。「俺の視点」がどんな視点か言ってみろノータリン。
Posted by shou at 2009年05月27日 11:39
現役トップクラスのプログラマーでありアーキテクターの日本人が
日本語で書いてくれるのは、ありがたいです。

ジェダイマスターから学べる機会は少ないので
全然、中級じゃない私ですが読んでみたくなりましたw
Posted by くま at 2009年05月27日 10:38
> shi3zのダンナが喚き出しそうな「俺視点は皆視点」意見はヤメトケ。

そして「あなた視点を押しつける」わけですね。
益にも毒にもならないエントリーが読みたいなら、ブログ読むのやめたらいいよ
Posted by taekoo at 2009年05月26日 22:18
>Cは「汎用」ではあるが、日常とはいいがたい。あれは日常言語を書くための言語で

shi3zのダンナが喚き出しそうな「俺視点は皆視点」意見はヤメトケ。
Posted by shou at 2009年05月26日 11:55
「反貧困」湯浅誠 岩波新書を読みましょう。話はそっからです。
Posted by 日本人プログラマー at 2009年05月26日 03:48
彼はすごいです。

CPUのコア設計できる人。
プログラム言語体系、作れる人。

コンピュータの神様です。


やっぱり、すごいです。
Posted by higekuma3 at 2009年05月26日 01:06
個人的には、こういう書評の割合が多いとうれしいです
ありがたい
Posted by u-n at 2009年05月26日 00:51
s/アミニズム/アニミズム/g
Posted by thz at 2009年05月26日 00:26
一流の日本人プログラマーに 日本語で、もっと本を書いてもらわないと。
この分野の日本語の言い回しをもっと豊かにしないと。
Posted by PK at 2009年05月26日 00:13