Ask HN: 今でもC++でのコーディングを楽しんでいますか?

Ask HN: Do you still enjoy coding in C++?

近年、C++はその複雑さと(感じられる)機能の肥大化により多くの批判を受けています。しかし私はC++11以降、厳格な型システム(constを含む)、範囲ベースのforループ、スマートポインタ、テンプレートでできることの多さなど、C++を書くことを本当に楽しんでいます。一方で、正しいイテレータを書くこと、右辺値参照の扱いを正しく理解すること、テンプレートを含むエラーメッセージを読むことが非常に難しいことも知っています。そこで、あなたはC++のソースコードを書くことを楽しんでいますか、それとも嫌いですか?その理由は何ですか?

私はC++を書くのが大好きです。特にパフォーマンスが重要で、ハードウェアに近いレベルで制御が必要な場面では最高です。ただし、コードベースが大きくなると、ビルド時間と複雑さが大きな負担になります。
C++はもはや「C with classes」ではなく、非常に複雑な言語になりました。私はRustのような現代的な言語に移行しました。Rustはメモリ安全性を保証しつつ、C++と同等のパフォーマンスを提供します。
私は組み込みシステムでC++を20年以上使っています。テンプレートメタプログラミングやスマートポインタは強力ですが、チームメンバー全員が言語の細かい部分を理解しているわけではありません。教育コストが高いのが難点です。
C++の進化は速すぎます。C++11、14、17、20と新しい機能が次々と追加され、古いコードベースを維持するのが大変です。ただし、モダンC++の機能を使えば、以前より安全で表現力豊かなコードが書けるようになったと感じます。
私はC++を書くのは楽しいと思いますが、エラーメッセージの改善が必要です。テンプレートのエラーは特にひどく、デバッグに何時間もかかることがあります。ClangのエラーメッセージはGCCよりましですが、まだ改善の余地があります。
  1. simonask

    ああ、C++よ。

    C++は、私が好意を抱いている昔の恋人のようなものだ。私たちは何年も一緒にいて、C++20あたりまで、苦楽を共にした。それは爽快だった――驚くほど速く、おそらく無責任なほどに。でも、まあ、その旅はワイルドだった。それは私に多くのことを教え、今日のプログラマーとしての私を形作った。しかし、その欠点が耐え難いほど大きくなり、その振る舞い――あまりにも頻繁に未定義――がもはや許容できなくなったとき、私たちは別々の道を歩んだ。

    私は今でもC++を愛しているので、その動向を追い続けているが、それが下している多くの人生の選択について深く懸念していることを認めざるを得ない。その歴史を知っていたのだから、それがどれほど問題含みか気づくべきだったが、変われるという希望があった。そして、それは決して変わらないように見える。

    私はまだC++を応援している。新しい主要言語であるRustにはとても満足しているけれど。C++には良くなってほしい。本当に最高であってほしいから。でも今は、それが見えない。それは古い過ちを繰り返し(例えば、新機能ごとに未定義動作のフットガンが増える)、大きな欠陥(堅牢なソフトウェアを構築するためのツール不足)には一切対処していない。

    今でも時々C++を書くが、以前のようにワクワクすることはない。C++を書くときは、そうせざるを得ないからだ。選択肢があれば、私が行うほとんどすべてのことにおいて、Rustの方が単純により良い選択だ。今のところ、C++と私の未来は見えない。

  2. chris_j

    C++については本当に気持ちが揺れる。C++は大好きだが、どうしても好きになれない点もある。多くの面で素晴らしい言語だが、40年以上の老朽化した遺産を背負っている。今日プログラミング言語を発明するなら、そんな風にはしないだろうというものだ。

    私は何年もプロとしてC++を書いていないし、プロとして使っていた頃(C++11以前)の記憶は幸せなものではない。使用を許可される言語の厳格なサブセットに合意しなければならず、それはどのコンパイラも十分にサポートしていない機能や、チームメイトが好まない機能を避けるものだった。悲しいことに当時、禁止機能のリストにはテンプレートと名前空間が含まれていた。

    しかし最近、個人プロジェクトでC++を使い、言語のどの部分を使い、どれを避けるかを選べるのはずっと楽しい。正直なところ、C++11以降、言語はかなり良くなった。

  3. adev_

    一言で言えば:パワー。

    C++は間違いなく周りで最も強力な言語だ。そしてこれは最善のためでもあり、(しばしば)最悪のためでもある。

    ジェネリックプログラミング、ハードウェアの制御、抽象化の能力、より一般的には表現力の点で、今日でもC++に近づくものは何もない。

    フットガンだらけの言語であり、それなりのレガシー問題も抱えている。

    しかし、それを避けることを学べば(経験と痛みを通じて)、C++で達成できる生産性とパフォーマンスのレベルは、Rustを含む他の何かで打ち負かすのは非常に難しい。

    皮肉なことに、AIの時代に特にそう感じる。

    なぜなら、周りにあるC++の量は膨大で、エージェントは適切に導かれれば現在かなり得意だからだ。

  4. mort96

    私はC++のコードを書くのが楽しい。

    C++は多くの面で悪い言語だと認めるが、それは私が非常によく知っている悪い言語であり、コードについての私の考え方に合っている。そして、メモリ管理の方法で「巧妙な」ことを楽にやってのけ、不要なアロケーションを避けられる。私はすでにその特異性のほとんどを学んだ。右辺値参照/ムーブセマンティクス、イテレータやコンテナのようなコントラクトの実装方法などだ。

    私はRustを書くのも好きで、Rustが私の間違いを防いでくれる方法が好きだ。Rustは多くの面でより良い言語であり、低レベルプログラミングの未来だと思う(そして、C++に対する適切な競合相手を得るのに何十年もかかったのは驚くべきことだ!)。しかし、C++が気にせず、子守りのように振る舞わずに好きなことをさせてくれるのも好きだ。公開されたWebサーバーをC++で書くなんて絶対にしないが、ゲーム?もちろん!

この日のほかの記事

2026-11-09