The Untold Story of C++
こちらの動画の要約。
「The Untold Story of C++」要約
-
C++の現在の地位
2022年にC++はJavaを抜き、2024年にはPythonに次ぐ世界第2位の人気言語に。GUIやブラウザの裏側で静かに広く使われている。
※「TIOBEランキング(オランダのTIOBE Software社が毎月発表する「TIOBE Programming Community Index」)」での順位
-
誕生の背景
1970年代後半、Bell Labsのビャーネ・ストロヴがシミュレーションのために「Cにクラスを付けたC with Classes」を作成。速度と抽象化の両立を目指した。1983年にC++と命名。
-
初期の発展
1980年代後半には大学教育や企業採用が進む。C++は構造化・再利用・低レベル操作を両立し、OSやソフトウェア、ゲーム開発に広く利用される。
-
標準化と拡張
1998年にC++98として国際標準化。例外処理、テンプレート、STL、名前空間など機能が拡張されるが、複雑さも増す。
-
批判と課題
メモリ管理やポインタ操作が自由な一方で、メモリリークや未定義動作のリスクも。Linuxカーネルのリーナス・トーバルズや他の著名プログラマからは複雑すぎると批判される。
-
2000年代の地位
JavaやPython、PHP、JavaScriptの台頭でC++は進化が遅いと見られるが、金融、高頻度取引、ゲーム、組込み、航空宇宙などパフォーマンス重視の分野で不可欠。
-
近代C++
C++11以降、ラムダ式、スマートポインタ、ムーブセマンティクス、多スレッドサポートなどが導入され、コードは安全で効率的に。C++14、17、20でさらにモジュールやコルーチンなどを追加。
-
現代の役割
PythonやJavaの下で動作するライブラリもC++で書かれることが多く、ブラウザ、データベース、VR、ロボティクス、航空宇宙など広範囲で使用。2025年時点で、C++はトレンドの言語ではなく「システムを支えるインフラ」として不可欠。
-
安全性と未来
メモリ安全性の課題に対応するため、コアガイドラインや静的解析ツールが整備され、C++とRustなどの共存が予想される。熟練者は単にコードを書くのではなく、システム全体を形作る力を持つ。
コメント欄
C++ は、他の製品を構築する製品を構築する言語です。
よく言えば「縁の下の力持ち」。悪く言えば「地味で目立たない存在」。
C++ が嫌われる理由は、言語の目的は「学ぶ」こと、つまり全体を暗記して理解することだと考えているからです。 しかし、それはまるで、英語全体を知らなければ偉大な作家や詩人になれないと言っているようなものです。本当に重要なのは、言語をいかに上手に使うかです。だからこそ、最高のツールとは、最も簡単に習得できるものではなく、常に最も便利なツールなのです。 優れたツールは、非常に幅広い用途で役立ちます。しかし、もしそれらをあらゆる用途で使うつもりがないのであれば、使う目的に必要な特定のサブセットだけを習得すれば良いのです。
ストラウストラップ先生も 『プログラミング言語 C++ 第4版』でこう言っている。
「言語の学習は、その言語本来の自然なスタイルの習得に集中すべきであって、言語機能のすべての詳細までを理解する必要はない」
C++を使えば、誰にも理解できないような言語を書くことができます。それは一生の仕事になることが保証されています。
C++の複雑さ・可読性の低さへの皮肉。テンプレートメタプログラミングとかを多用したコードは本当に読みにくい。
「C++はひどい言語だ…これを使うと、完全にゴミのようなコードを簡単に作れてしまう。」LinusがJavaScriptのことを知ったらどうなるか、待ってろ。
JavaScriptやC++だけの問題でもない気がする。言語特有の設計技法を理解せずにコーディングすれば、どの言語でも大抵ゴミになる。
C++とは愛憎入り混じった関係です。書くのは大変ですが、最終的に何とか動作するようになった時の感動は格別です。
C++使い続けた人はみんなこう思うんじゃないかな。
おわり
動画内で 「C++ wasn't the easy choice. It was the necessary one.(C++は簡単な選択ではなかった。それは必要な選択だった。)」 と言われているが、まさにこの言葉に尽きる。