何故私はC++を捨ててC#を選んだのか

先日のとある飲み会にて、複数の方に訊かれた。
「どうしてC#にしたの?」
「そうそう、あんなにC++好きそうだったのに」
C++の何がダメだったの?」
「何故C#なの?Javaでは駄目だった?」
新しい会社(株式会社カタッチ)で挑戦を始めて以来、僕はC++からC#プログラマになった。自らの意思でC++を捨てて、C#に乗り換えたのだ。いや、正確に言えばC++を完全に捨てたわけではなくて、今でもC++/CLIなどを使うこともあるのだけれど、9割以上はC#だ。
何故か。もちろん、勝つためだ。
僕はC++は大好きだったのだけれど、それでも正直、C++では勝てないと思った。少なくとも、プログラマが一人だけという超零細企業には、C++は向かないと感じたのだ。


確かPaul Grahamが書いていたと思うのだけれど、ベンチャー企業の9割以上は失敗するわけで、ということは自分が他人と同じ事をやっていたらやっぱり9割以上の確率で失敗してしまうのだ。逆に他人と違うことをやれば、成功する確率が少しだけ上がる、かもしれない。
で、たぶん、3次元CADを幾何演算も含めてすべてC#で書くというのは、ちょっと普通じゃない。だからこそ、挑戦する価値がある。


僕が思うに、幾何演算とC#では「文化圏」が違うのだ。
幾何演算が書ける人、数値計算が出来る人というのは、大抵はC/C++の世界に住んでいることが多い。数値計算といっても流体シミュレーションなどになるとFortranも登場すると思うけれど、幾何演算の世界は大半はC/C++だ。そして、彼らは大抵、オブジェクト指向とかはあまり得意でないし興味もない。実際、彼らはオブジェクト指向が解決する問題とは全く異なる問題と戦っているのだ。
一方、C#な文化圏の人で、数値計算が出来る人というのも、これまた少ないだろう。大抵の人は、高校の頃に習ったはずの行列演算や内積外積からして覚えていない、らしい。
多分僕は、この2つの異なる文化圏の両方に所属している「変な人」になれるんじゃないか、と思ったのだ。だったらその「変な人」になってみようと。


・・・これって全然、「何故C#か」の説明にはなってないね。気が向いたらまた続きを書くことにしよう。