【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

WhyINoLongerLikeOrUseCPlusPlus - もう C++ なんて好きでもないし使いもしない理由。

目次

もう C++ なんて好きでもないし使いもしない理由。

この文書について

もう C++ なんて好きでもないし使いもしない理由。

今日、 Artima に上がっていた C++ の記事を読んだ。右辺値参照(rvalue reference) という C++ の新機能について解説するものだ。頑張って読むうち に瞼が落ちてきた。記事の冒頭に戻ってその機能の動機を探した。C++ の記事 には大抵そういうのが書いてある。動機を見れば、なぜその機能が理解できな いか、なぜ理解できなくても気にしなくていいかがわかる。金言があった: 「右辺値参照は C++ 言語における小さな拡張です ... もっぱらより高い性能 と、より堅牢なライブラリを設計する目的があります。」

この二つは、 私が C++ を必要としなくなった理由のトップにある。「C++ を 使いもしないくせに」と私を責める前にわかってほしい。私はこれ以上 C++ を 使わなくて済むとせいせいしているんだ。君の罵倒は賛辞に聞こえるよ。それ でも一時期は、私だって様々なシステムでC++ を使い、それを正当化していた んだ。

私は Stroustrup の C++ Programming Language を端から端まで読んだ。二度 読んだ。Modern C++ Design を端から端まで読んだ。二度読んだ。Imperfect C++ を読んだ。他にも C++ について多くの本を読んだ。幸いもう題名は覚えて いないけれど。私は STL の熱心なユーザで、正しくそれを使う方法を学んだも のだ。ACE Toolkit も大好きだった。Boost も熱心に使った。今でも、これら 全てを使った古いコードを持っている。私は generic programming をがっちり 抑えていた。template metaprogramminig, pure virtual base classes, virtual destructors, trait based programming, operator overloading, RVL, など...男気溢れる C++ プログラマならみんな使ってるだろ? プログラ ミングには g++ も Visual C++ も使った。Visual C++ でプログラミングすると いっても、書いたのは 本物の C++ だ。COM ベースじゃない。COM とやりと りする必要があるときは、良い C++ の技術を使ってコードを書き、機能は薄い ATL/COM ラッパーごしに公開したものだ。世界最先端な C++ の専門家というわ けじゃなかったけれど, 巧みで知識もある C++ プログラマだった。

何が起きたのか? 嫌気が差したんだ。C++ のどの面をとっても、その設計は性 能と引き換えに私の生産性をうばった。もう一つうんざりなのは, リンカのエ ラー診断だ。ただライブラリをダウンロードして使うなんてことが決してでき ない。新しいライブラリを使うのに、自分でソースからビルドしないといけな い。C++ にはコンパイル済コードをさっと使うための ABI がないからだ。コン パイラがアップグレードするたびに、私はアプリケーションとライブラリ全体 を再コンパイルして、その中でいつも不可解なエラーを診断して数時間つぶし た。ライブラリひとつのアップグレードでも更なるコンパイルと暗号的エラー に見舞われた。「より高い性能」という誓いが、私を冒しはじめた。誓い(コー ドの可読性は低いが)は守られ、C++ ABI 不在による保守の地獄には一切注意が 払われなかった。私は気がついた。C++ の連中は性能に取り憑かれている。 他の全てをなげうって。そして、私はもうそこで仕事をしないと決めたのだ。

人々が目を覚まし、C++ は自身の複雑さに溺れかかっていると気付けばと思う。 私がいま高性能なアプリケーションを書こうと思ったら、C を使うだろう。他 のアプリケーションではスクリプトや VM ベースの言語を使い、遅い部分を C で書くだろう。なぜ C++ じゃないかって? なにしろスクリプトや VM 言語は C++ とうまくやれないからね。 C++ には ABI がないから。

C++ の人々は本当に賢い。彼らが全ての意思決定を完全に正当化できるのは知っ ている。聞いてみればわかる。彼らがこの投稿にある指摘を無視するのはほぼ 確実だと思う。彼らには大抵、指摘の筋が通っていないとする理由がちゃんと あるだろうから。それでも, 私はもう C++ がもたらす種類の性能はいらない。 私にしてみれば C++ が複雑なせいで C の方を使いたくなる。C++ の人々にとっ ての問題は、時がたつにつれ C++ の性能を必要とする人は減っているというこ とだろう。彼らが言語機能を追加するほど、人々は 複雑さと性能のトレードオ フのコストが高すぎると思うようになる。

だから私が右辺値参照について考えるのは、もうどうでもいいってこと。ま た高性能で複雑な機能が一つ増えて、C++ のライブラリの問題は解決しないまま。 Java や Groovy に帰ろう。私は C でもいいよ。