本物のプログラマー

非常に有名な文章を今頃読みました。

http://www.genpaku.org/realprogrammerj.html

なんか、いろいろ考えさせられますね。ここで言うQuiche Eaterな人々がほぼ完全勝利を収めた一般的なプログラムの世界にあって、「本物のプログラマー」めいた人々が比較的多く生息するのがゲームプログラムの世界ですよね。

本物のプログラマがその信念に妥協して、私たちと同様に、生活破綻よりはましと、充分な金銭的見返りと引き替えに、少しばかりくだらないことがらに手を染めることはあるかもしれない。たとえば、アタリ社でテレビゲームを作っている本物のプログラマもいる。(だけど、テレビゲームでは遊ばない -- 本物のプログラマはコンピュータをいつでも倒せるからね:チャレンジ精神は湧いてこないわけだ。)

あとは、

コンピュータグラフィックスの世界では、本物のプログラマの割合はやや少ない。

なんかこれって、CG + ゲームプログラマーの巣窟と化した現在のゲーム業界には「本物のプログラマー」もしくは「本物のプログラマーの生き残り」が跋扈しているということでしょうか?20年も前に予言されていたということになりますね...。おそろしや...。

CとUNIXを称して以下のような話も...

下に示す文がきっちりコンパイルできるのを確認すると、私たちは進化を止めた:

for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
 こんな文法を許容してしまうような言語を、まさか現代のプログラマが使うだろうとは、私たちは思っていなかったんだ! 私たちはただ、このシステムをソ連に売れば、連中のコンピュータサイエンスは少なくとも20年ほど退化するだろうなぁ、とか考えてたんだ。AT&T その他の米国企業が本気で Unix と C を使いはじめたときは、驚いたのなんの!

なんだかすごい文章ですね。人生で一度は見ておくべきですね。結局ゲーム屋はいろんなものをハードウェアにやらせたり、エクセルで管理したりするわけですが、それに適した構造って、やっぱり配列的なものですよね。直線的、ローテクとでも言いましょうか...。原始的で単純。1は1でしかない。C++に対するCみたいな(コンストラクタ、デストラクタ、仮想関数などのソースコードに直接書かれていない物が出力されるアセンブリに勝手に追加されてしまうC++に対してそういったことが全くないC)。
モデルデータをハードウェアにやらせるには、頂点バッファと、インデックスバッファという配列を使うわけです。最近流行の?シェーダーも少しふたを開けるとかなり原始的なアセンブリにすぐにぶつかっちゃう。あとは自前のスクリプトエンジンにクラスや、例外なんて機能を加えたところで、結局「5番の音をここで出したいんだけど、どうするの?」なんてことを言われるわけです(シンボルというより抽象的な概念ではなくインデックス)。
本物のプログラマーの跋扈する世界で、狂信的なQuiche Eaterだった僕もだいぶ変わってしまいました。「配列の良さ」なんてのを感じ始めた今日この頃です。ですが、世界の潮流は明らかにQuiche Eatingです。元々Quiche Eaterなので、一風変わった配列の味をQuiche Eaterにも本物ののプログラマーにも提供できるすべを持てば、何か面白いことができるかもしれないなとふと思いました。