ビャーネ・ストロヴストルップ

ビャーネ・ストロヴストルップ:エレガンスとスピードの融合

ビャーネ・ストロヴストルップ(Bjarne Stroustrup)は、紙の上では矛盾しているように聞こえるものを求めていた。それは、「Simulaプログラムのようにエレガントでありながら、Cプログラムのように効率的」なプログラムを書ける言語である。Simulaは遅く学術的であり、Cは速いが容赦がなかった。ストロヴストルップはその後40年間をかけて、その矛盾が見かけ上のものに過ぎないことを証明し、その過程で、世界のオペレーティングシステム、ブラウザ、ゲームエンジン、取引所を今も動かしている言語を構築した。

オーフスでの労働者階級の始まり

ストロヴストルップは1950年12月30日、デンマークのオーフスで労働者階級の家庭に生まれ、1969年から1975年までオーフス大学で計算機科学を専攻し数学を学んだ。その後、ケンブリッジ大学で計算機科学の博士号を取得し、1979年にデビッド・ウィーラー(David Wheeler)の下で分散コンピューティングに焦点を当てた研究を完了した。ケンブリッジで、Simulaの2人の発明者の1人であり、オブジェクト指向プログラミングそのものの発明者でもあるクリステン・ニガード(Kristen Nygaard)の影響を通じて、ストロヴストルップはクラス、継承、抽象化に関するアイデアを吸収し、それが彼のライフワークを定義することになった。彼は、Simulaの表現力に触れたことと、その実行速度が実用的でないほど遅いことへの不満が、C++が解決するために構築された具体的な問題の種となったと語っている。

ベル研究所と「C with Classes」の誕生

1979年、ストロヴストルップはニュージャージー州マレーヒルのAT&Tベル研究所の計算機科学研究センターに入社した。そこは、UnixとC言語そのものを生み出したのと同じ研究文化を持つ場所だった。そこで彼は、CをSimulaスタイルのクラスで拡張し始め、当初はその結果を「C with Classes」と呼んだ。後にC++と改名されることになる言語の内部リファレンスマニュアルは1984年に登場し、言語は1985年に商用リリースされた。同年、ストロヴストルップは『The C++ Programming Language』の初版を出版し、この本は4版まで改訂され、21言語に翻訳されることになった。彼はC++をゼロから作る言語ではなく、Cの拡張として意図的に構築した。この決定は理論的な純粋さを多少犠牲にしたが、既存の膨大なコードベースとツールチェーンとの即時の互換性を獲得した。これは、言語がどれほど速く普及するかを決定する上で、何よりも重要な実用的なトレードオフであった。彼はその後、AT&Tベル研究所の大規模プログラミング研究部門を設立から2002年後半まで率い、1993年にベル研究所フェロー、1996年にAT&Tフェローに任命された。

C++が実際に加えたもの

C++はCに、ユーザー定義型を組み込み型と同じように真剣に扱う静的型システム、Simulaのクラスと継承に基づいたオブジェクト指向プログラミング、そして、後により影響力を持つことになるジェネリックプログラミングをテンプレートを通じて追加し、コードを一度書けば、速度を犠牲にすることなく多くの型に対して専門化できるようにした。そのリソース管理イディオムであるRAII(Resource Acquisition Is Initialization:リソースの取得は初期化である)は、コンストラクタとデストラクタを介してリソースの寿命をオブジェクトの寿命と結びつけた。これは、Cプログラマーを長年悩ませてきたメモリやリソースリークのバグのクラスを解決し、後にガベージコレクションを持つ言語自身のリソース処理設計に影響を与えた。重要なことに、これらはすべて、ハードウェアやオペレーティングシステムのリソースへのCの直接的なアクセスを犠牲にすることなく実現された。ストロヴストルップの当初の野心の「効率性」の半分は、「エレガンス」の半分と引き換えに妥協されることは決してなかった。

無料テスト
あなたはどのくらい?

20問、8分の制限時間、そして受験者全員と比べたパーセンタイル。登録不要。

IQテストを受ける →

標準化を通じて言語を導く

ストロヴストルップは単にC++を発明して立ち去ったわけではない。彼は1989年のANSI標準化の取り組みと、その後の1991年のISO委員会の創設メンバーであり、委員会のEvolution Working Group(言語への提案されたすべての追加を審査する機関)の議長を24年間務めた。これは、プログラミング言語の作成者としては異例の長い管理期間であり、ストロヴストルップが、並行処理のサポートからコンパイル時のメタプログラミングに至るまで、数十年にわたる新しい要求を、すでに本番環境で稼働している膨大な既存のC++コードを壊すことなく、C++がどのように吸収するかを個人的に形作ったことを意味している。

ベル研究所後の学術および産業キャリア

ベル研究所の後、ストロヴストルップは2002年にテキサスA&M大学の工学部チェア教授に就任し、2011年には大学のディスティングイッシュトプロフェッサー(卓越教授)となった。2014年にはモルガン・スタンレーにテクニカルフェロー兼マネージングディレクターとして加わり、同時にコロンビア大学の客員教授も務めた。2022年からはコロンビア大学の計算機科学の正教授を務めている。これは、システム言語の発明者をウォール街の取引会社の技術の中心に置くという、キャリア後半の異例の軌跡である。

受賞と評価

ストロヴストルップの栄誉は、単一の有名なブレイクスルーではなく、彼の絶大な影響力を示している。1993年のACMグレース・マレー・ホッパー賞、1994年のACMフェローおよびIEEEフェローへの選出、2005年のウィリアム・プロクター科学功績賞(計算機科学者として初の受賞)、2017年のIETファラデーメダル、そして2018年のチャールズ・スターク・ドレイパー賞(「C++プログラミング言語の概念化と開発」に対して)などである。コンピュータ歴史博物館は2015年に彼をフェローとして認め、「オブジェクト指向プログラミングとジェネリックプログラミングを主流にした」と評価した。彼はACMチューリング賞は受賞していない。

なぜビャーネは天才と呼ばれるのか

ストロヴストルップを天才と呼ぶ根拠は、理論的な独創性の単一の閃きにあるのではない。オブジェクト指向はニガードとダールから来ており、ジェネリックプログラミングには前例があり、Cはすでに存在していた。そうではなく、それはより稀な種類のエンジニアリングの判断力にある。それは、現場が緊張関係にあると想定していたアイデアを、どちらも壊すことなく融合させ、コンピューティング自体が言語の下で変化する中で、四半世紀にわたる標準化の決定を通じてそのトレードオフを正しく行い続ける能力である。ドレイパー賞の引用は、彼がC++を「概念化し開発した」ことを称えており、これは純粋な発明ではなく合成を認める言語である。正直な反論は実質的である。C++は、その蓄積された複雑さ、Rustのような新しい言語が明示的に排除するように設計されたメモリ安全性の落とし穴にプログラマーをさらすこと、そしてCとの後方互換性を維持するというストロヴストルップの当初の決定に直接遡る設計上の妥協について、現場内を含めて広く批判されている。もし「天才」という言葉が当てはまるなら、それは純粋な抽象的な洞察の閃きというよりも、極めて有用で不完全なものを構築し、それを40年間維持し続けるという、職人技と管理に近いものである。

レガシー

C++はオペレーティングシステム、ブラウザ、ゲームエンジン、金融取引システムにとって依然として基礎的であり、その影響はJava、C#、Rustに目に見えて流れている。ストロヴストルップ自身のライフワークに対する評価は、常に特徴的なほど感傷的ではない。彼は使われることを意図したツールを構築し、その尺度(数十年にわたる純粋な遍在性)において、C++は歴史上の他のどのプログラミング言語よりも成功している。

偉人と比較

Sun Tzu vs William James SidisCharles Dickens vs VoltaireJames Clerk Maxwell vs Ren DescartesImmanuel Kant vs Niels Bohr
IQランキングを見る →すべての比較 →

神童

Macaulay CulkinMacaulay CulkinCarried Home Alone to global blockbuster status and became the…Connie TalbotBritain's Got Talent Finalist at Age 6 — Debut Album Platinum…Shakuntala DeviShakuntala DeviMultiplied two 13-digit numbers in her head in 28 secondsJeremy ShulerCornell University at 12 — Reading at 21 Months, Top-Decile SAT…
神童 →

遊んで、また明日

毎日の天才チャレンジ · Brain teaser
A farmer has 17 sheep. All but 9 run away. How many are left?
答えをタップ ↓
あなたはどの天才? 無料IQテスト