『言語設計者たちの考えること』を読んだ。本書は、下記プログラミング言語の設計者へのインタビュー集。括弧 () 内がインタビュイーとなった設計者。
多くの言語設計者たちが、機能を増やさないことに腐心していたことがよく分かる。それが如実に表れているのが、「2章 Python」。関連して、「6章 AWK」でブライアンは、
やり過ぎたと設計者の一人が言っているのが、「第14章 UML」。UMLは詳細が膨大な割に、そこまで書いても実装に落とせない。だから、UMLからコード生成なんて酷いアイディアだと言っている。でも、一方でもう一人の設計者は「2種類の言語を使う根本的な必要性はありません」なんて言っている。自分の感覚では前者が正しいと思う。『UMLモデリングのエッセンス』で、Martin Fowlerが言っているように、コードやアイディアが先にあった上で、コミュニケーションのためのスケッチに使うのが、コストパフォーマンスが高い。
UMLに限らず、プログラムに関わるものはすぐにプログラムになろうとする傾向にあると思う。「13章 C#」で「12章 Java」のゴスリンのこんな言葉が引かれている。
- C++(ビャーネ・ストラウストラップ)
- Python(グイド・ヴァンロッサム)
- APL(アディン・D・フォークオフ)
- Forth(チャールズ・H・ムーア)
- BASIC(トーマス・E・カーツ)
- AWK(アルフレッド・エイホ、ピーター・ワインバーガー、ブライアン・カーニハン)
- Lua(ルイス・エンリケ・デ・フィゲイレード、ロベルト・イエルサリムスキー)
- Haskell(サイモン・ペイトン・ジョーンズ、ポール・ヒューダック、フィリップ・ワドラー、ジョン・ヒューズ)
- ML(ロビン・ミルナー)
- SQL(ドン・チェンバレン)
- Objective-C(ブラッド・コックス、トム・ラブ)
- Java(ジェームズ・ゴスリン)
- C#(アンダース・ヘルスバーグ)
- UML(イヴァー・ヤコブソン、ジェームズ・ランボー、グラディ・ブーチ)
- Perl(ラリー・ウォール)
- PostScript(チャールズ・ゲシキ、ジョン・ワーノック)
- Eiffel(バートランド・メイヤー)
- Ruby(まつもとゆきひろ)
多くの言語設計者たちが、機能を増やさないことに腐心していたことがよく分かる。それが如実に表れているのが、「2章 Python」。関連して、「6章 AWK」でブライアンは、
小さな言語が抱えている最大の問題は、それがどんどん成長していくという点にあります。と言っている。これは、『人月の神話』「第5章 セカンドシステム症候群」が指摘している問題にも似ている。
やり過ぎたと設計者の一人が言っているのが、「第14章 UML」。UMLは詳細が膨大な割に、そこまで書いても実装に落とせない。だから、UMLからコード生成なんて酷いアイディアだと言っている。でも、一方でもう一人の設計者は「2種類の言語を使う根本的な必要性はありません」なんて言っている。自分の感覚では前者が正しいと思う。『UMLモデリングのエッセンス』で、Martin Fowlerが言っているように、コードやアイディアが先にあった上で、コミュニケーションのためのスケッチに使うのが、コストパフォーマンスが高い。
UMLに限らず、プログラムに関わるものはすぐにプログラムになろうとする傾向にあると思う。「13章 C#」で「12章 Java」のゴスリンのこんな言葉が引かれている。
Goslingは、すべての構成ファイルはそれ自身がプログラミング言語になっていってしまうと言っていたと思います。それは非常に正しい、そのことには本当に気をつけた方がいいでしょう。この傾向はなんなんだろう? 「17章 Eiffel」が実装する〈契約による設計〉はおろかユニットテストも書けないものを、実装としてしまうのに、大きな危険を感じるのだけれど。