Brian Kernighan, Jon Bentleyほか著
オライリージャパン (2008/4/23)
「Beautiful Code」という刺激的なタイトルの本で使われているプログラミング言語の登場回数を数えてみました
- 1位:C言語(14回)
- 2位:Java(6回)
- 3位:C++, Python(3回)
- 5位:Fortran, Perl, Ruby(2回)
- 8位:C#, EmacsLisp, Haskell, JavaScript, Lisp, MATLAB, Scheme, VisualBasic(1回)
ここに挙げた以外にも、いろんな言語が登場しているので、贔屓のものがある人は、索引を見てください。ちなみに、PHPは索引にも載っていません
私の好きな言語でも、シェルスクリプトとMathematica、Prologは登場していませんね(Prologはともかく、Mathematicaはコア部分をオープンソースにするといいと思いますよ)
ちなみに、この本は「美しいコード」というよりは「すばらしいソフトウェア開発」を紹介したものだと思います(美しい「コード」も載っていますが)。広義の「美しいコード」という感じでしょうか
「美しいコード」で私がイメージするのは、『ハッカーのたのしみ』や『Short Coding ~職人達の技法~』です(『ハッカーのたのしみ』の著者ヘンリー・S・ウォーレン, Jr.は本書の第10章に登場しています。10章を楽しんだ人は『ハッカーのたのしみ』もきっと楽しめるでしょう)
第7章「ビューティフル・テスト」を楽しんだ人は、『珠玉のプログラミング』と『The Art of Computer Programming Volume 3 Sorting and Searching』も楽しめるでしょう(紹介するまでもないことですが)
| 1 | C | 正規表現マッチャ(ブライアン・カーニハン) |
|---|---|---|
| 2 | C | Subversionの差分エディタ:存在論としてのインタフェース(カール・フォーゲル) |
| 3 | C | 私が決して書かなかった、一番美しいコード(ジョン・ベントリー) |
| 4 | Ruby | ものの見つけ方(ティム・ブレイ) |
| 5 | Java | 正しく、美しく、速く(この順番で):XML検証ソフトの設計から(エリオット・ラスティ・ハロルド) |
| 6 | Java | テストのための統合的フレームワーク:脆さから垣間見る美しさ(ミカエル・フェザーズ) |
| 7 | Java | ビューティフル・テスト(アルベルト・サボイア) |
| 8 | C, C# | 画像処理のためのその場コード生成(チャールズ・ペゾルド) |
| 9 | JavaScript | 下向き演算子順位解析(ダグラス・クロックフォード) |
| 10 | C | 高速ビットカウントを求めて(ヘンリー・S・ウォーレン, Jr.) |
| 11 | Perl | 安全な通信:自由のための技術(アシシ・グルハッチ) |
| 12 | Perl | BioPerlにおける美しいコードの成長(リンカーン・シュタイン) |
| 13 | C | 遺伝子ソータの設計(ジム・ケント) |
| 14 | Matlab, Fortran, C | エレガントなコードはハードウェアに合わせて進化する:ガウス消去法の場合(ジャック・ドンガーラ、ピョートル・ラスツゼック) |
| 15 | Fortran | 美しいデザインの長期にわたる恩恵(アダム・コラワ) |
| 16 | C | Linuxカーネルのドライバモデル:一緒に働くことの恩恵(グレッグ・クローハートマン) |
| 17 | C | もう一段の間接参照(ディオミディス・スピネリス) |
| 18 | Python, C | Pythonの辞書実装:すべての人々にすべてのものであること(アンドリュー・クッヒリン) |
| 19 | C | NumPyの多次元イテレータ(トラビス・E・オリファント) |
| 20 | Java | NASAの火星探査機計画のための高信頼エンタープライズシステム(ロナルド・マック) |
| 21 | Python | ERP5:最高水準の適応性に向けた設計(ロジェリオ・アテム・デ・カルバルホ、ラファエル・モネラ) |
| 22 | C | スプーン一杯の汚水で(ブライアン・キャントリル) |
| 23 | C++ | MapReduceでの分散プログラミング(ジェフ・ディーン、サンジェイ・ゲマワト) |
| 24 | Haskell | 美しきかな、並列(サイモン・ペイトン・ジョーンズ) |
| 25 | Scheme | 構文の抽象化:syntax-caseマクロ(ケント・ディヴィグ) |
| 26 | C++ | 労力節約のアーキテクチャ:ネットワークソフトウェアのためのオブジェクト指向フレームワーク(ウィリアム・R・オッテ、ダグラス・C・シュミット) |
| 27 | Java | ビジネスパートナーをRESTfulにまとめ上げる(アンドリュー・パッツァー) |
| 28 | Python | 美しいデバッグ(アンドレアス・ツェラー) |
| 29 | Ruby, C, Java | エッセイのごときプログラム(まつもとゆきひろ) |
| 30 | VB | 世界につながる手段がボタンだけだったら(アラン・メータ) |
| 31 | EmacsLisp | Emacspeak:完全に音声のみのデスクトップ環境(T. V. ラマン) |
| 32 | C, C++ | 働くコード(ローラ・ウィンガード、クリストファー・セイワルド) |
| 33 | Lisp | 「本」のためにプログラムを書く(ブライアン・ヘイズ) |
コメントする