C++は何を間違えたのか
以前Webで見かけたプログラミングの魔導書というのを買い、ちょこちょこ読み進めて今日終わった。
タイトルはなんかものものしいが、単にC++のマニアックな話題が詰まった本である。
新仕様のc++0xの解説もちょっとあるが、いよいよ変態の領域にきている。ムーブコンストラクタなぞとても使いこなせる自信がない。
いま思い返せば、C++はテンプレートの病的な使い方にフォーカスしてきたあたりから風向きがおかしくなってきた気がする。テンプレートはうまくキマれば格好いいのだが、メタプログラミングのレベルまでいくとコンパイルを通すだけでプログラミング本体と同等の思考力が必要なのがきつい。
この本も変態テンプレートはたくさん出てくるが、テンプレートでどこまでできるかの追求自体が目的化していて本末転倒である。まあ読み物としては面白いし、他の言語なら実行時にしか分からないエラーがC++ならコンパイル時に分かる!というのはメリットではあるが、結局UnitTestを書く手間を考えると実行時にしかわからなくても特に害はないからな。
たとえばこんなくだりがある。
1994年のことであった。標準化委員会の会議中に、Erwin Unruhなる者が、ある、興味深いコードを示した。
そのコードは、コンパイル時に、テンプレートのインスタンス化を用いて、素数を計算するというものであった。これが、記録に残る初めての、テンプレートを用いた、メタプログラムのコードであった。
しかし、Erwin Unruhの本来の意図は、メタプログラミングの可能性を示すものではなかった。彼は、テンプレートを用いて、コンパイル時に計算するようなコードが書けることを、危険だと考えていた。それ故、彼は、コンパイル時に素数を計算するコードを示して、以てテンプレートの危険性を周知させようとしていたのであった。
しかし、Bjarneその他の者は、むしろ素晴らしいと、絶賛した。彼は、この意外な反応にひどく驚いたという。
これが方向性の歴史的誤りだったよな。
C++はこういうのではなく、2パスコンパイルにしてヘッダファイルを不要にしたり、GCを言語レベルでサポートしたりすれば今頃の情勢は違うものになったかもしれないのに、結局JavaやC#の外見的な言語仕様のベースになっただけなのはちょっとさびしい。
10年前は何万行もC++でコーディングしてたのに今や皆無、むしろObjective-Cをよく書くようになっているのは何とも不思議な話である。
なお、安くて物理的な場所を取らないPDF版を買ったのだが、iPadで読むとページによってはクラッシュしてしまう。これがビューアの問題なのかiOSレベルでの問題なのかは不明。
« GIGAZINEのあれ | トップページ | 前回の補足+政治ネタ »
コメント
この記事へのコメントは終了しました。
岡嶋さんの話としてはこの手の話がダントツでおもしろい
採用とか相場の話も悪いとはいわないけど、採用はここ最近は
毎回ネガティブな告白一辺倒になってるし、相場に関しては
いえ、別にやるのにもちろん反対はしないんですけど
「相場やってる場合ではない、仕事のほうが楽しい」
的な発言たしか2,3度今までしてても結局のめり込んで
しまってるんだろうか?とかいらぬ心配してしまったりするので
やっぱり私としてはこの辺の本業の話が楽しめる
投稿: | 2010.08.16 01:11
アプリックスすごい強い
投稿: | 2010.08.25 10:03
私はプログラマーじゃないので、経済や相場の話も聞きたいです。
異種業界の話は雑学としては面白いけど、それ止まりですから。
雑音は無視して、日本破綻に向けたポジションの作り方など、うかがってみたいです。
投稿: | 2010.08.30 15:48