開発ツール

開発言語「C++」の歩み--生みの親が語る「慎重な進化」のアプローチ

「C++」は世界中のシステムを支えているプログラミング言語だ。生みの親であるB・ストロヴストルップ氏に、同言語の初期の取り組みや今後の展開について聞いた。

 「C++」の起源は、1979年までさかのぼる。同プログラミング言語の生みの親であるBjarne Stroustrup氏が、当時「C with Classes」として知られていた言語の開発に乗り出したときだ。当初は「C」プログラミング言語の改良版として設計され、オブジェクト指向プログラミングに基づく機能が追加された。

 「もちろん、C++の成功は驚きだった」。Stroustrup氏は米TechRepublicにこう語った。「C++の成功の要因は、ハードウェアの効率的な使用と強力な抽象化メカニズムという最初の設計目標と、実際の使用者からのフィードバックに基づく慎重な進化であると考えている」。C++は現在、開発者に最も広く利用されている言語の1つであり、世界中のシステムやサービスを支えている。

 「共有メモリーか、あるいはネットワークのような通信システムを備えたマルチコンピューターシステムを構築したかった」とStroustrup氏は説明する。

 「注力したのはソフトウェアだ。メモリーマネージャーやプロセススケジューラー、デバイスドライバーなど、ハードウェアに近い低レベルのコードを記述して、ソフトウェアコンポーネントを分離することで、明確に定義された方法で通信する別々のコンピューターで実行できるようにする必要があった」

 当時はそのタスクに対応できる言語がなかったため、Stroustrup氏はそれが可能な言語の開発に力を尽くした。「C with Classesは、ハードウェアの近くで動作するCの機能と、『Simula』の抽象化とコード整理用のクラスの効率的なバリアントを組み合わせたものだ」(Stroustrup氏)

 同氏はかなり早い段階から、自分が同言語を独裁的に管理できないことに気づいていた。C++の初期の作業に関わっていたのは、同氏とBell Labsの数人の同僚だけだったが、同言語を標準化する取り組みが始まったとき、関係者の数は数十人に膨れ上がった。

 現在、C++の標準委員会のメンバーは約400人だ。さらに、同言語の方向性を注視して影響を与えようと試みる大規模なユーザーコミュニティーもある。

 では、そこまで熱烈に支持されるプログラミング言語の一貫性を保つには、どうすればいいだろうか。「それはチャンスでもあり、非常に大きな問題でもある」とStroustrup氏は語る。

 「最も難しいのは、何が重要なのかを判断して、一貫性を維持することだ。何をやりたいかが分かれば、それを実現するための優れた技術的手段がいずれ見つかる」

「Vasa」を思い起こせ

 1998年は、C++が正式に標準化され、堅実な定番言語になった年だ。その時点で、すでに世界で最も広く使用されるプログラミング言語の1つになっており、現在もその地位を維持している。

 とはいえ、同言語の未来の進化の基礎を築いたのは、それから13年後に登場した「C++11」だった、とStroustrup氏は語る。「C++11の登場で、C++が新しい言語であるかのように感じられるようになった」

 「並行処理の型安全性サポートは不可欠だった。C++11では、コンパイル時計算用の(定数式)関数、ラムダ、自動型推論、可変個引数テンプレートなど、相互にサポートする機能が豊富に提供された」

 C++11では、シンプルさ、スピード、表現力を高める新機能がいくつか導入されたが、習得が難しい言語という評判は変わっていない。その事実は、作成者であるStroustrup氏も認めている。

 「C++は確かに複雑であり、使いこなす方法を学ぶには努力が必要だ」とStroustrup氏。「残念ながら、人々が望んでいるのはシンプルさだけではない。シンプルでありながらも、機能が豊富で、既存のコードを破壊しない言語が求められているが、それは実現不可能だ」

 Stroustrup氏はこれを「トリレンマ」と呼ぶ。その問題に対する同氏の答えは、たとえば一般化または一般的なユースケースの直接的なサポートによって、「簡単なことを簡単に実行できるようにする」機能を追加し、一方で互換性と安定性の両方を維持することだ。

 C++ほどの大規模な言語の場合、それは言うほど簡単に実行できることではない。他のすべての主要プログラミング言語でも同様だ。最大の課題の1つは、採用する新機能と採用しない新機能の決定に関して合意を得ることであり、それ自体に多大な労力、議論、時間、忍耐が必要になる、とStroustrup氏は説明する。

 合意できても、優れた機能をすべて採用できるわけではない。「本当に人々の役に立つものだけを追加するように努力して、そうした機能をごく少数採用しなければならない。誰かに役立つ機能をすべて採用していたら、言語が自重で沈んでしまうからだ」とStroustrup氏は述べた。

 Stroustrup氏は、17世紀に建造されたスウェーデンの壮大な戦艦「Vasa」に言及した。Vasaは稚拙な設計が原因で、処女航海の際にストックホルムの港で沈没した。

 「最高権力者である王の主張により、技術者の的確な判断に反して、美しい彫像や大砲が高く積み上げられた。上部が重くなったため、突風を受けて転覆してしまった」

「開発ツール」で読まれている記事

TechRepublic Japanで人気の記事

編集部オススメ

トレンドまるわかり![PR]

財務・経理
人事・労務
マーケ・営業
購買・調達
生産・製造
データ分析
コミュニケーション
通信・通話
文書・コンテンツ
PC・モバイル
新興技術
ITインフラ
クラウドサービス
OS・ミドルウェア
開発
開発ツール
開発支援
ノンプログラミング開発ツール
データベース
運用
セキュリティ

ホワイトペーパーランキング

  1. マンガでわかる「ルール駆動開発」レガシーモダナイズを成功させる開発手法を基礎から理解する
  2. 5分でわかる、レポート作成の心得!成果至上主義のせっかちな上司も納得のレポートとは
  3. APIエコシステムを狙うサイバー攻撃が急増、Webアプリにおける最新のAPIセキュリティ対策とは?
  4. クラウドやコンテナ利用が増える中、世界の企業が利用するAPI経由の安全なアプリ構築手法とは?
  5. ウェビナーによる営業活動が本格化、顧客接点が増加する一方で見えてきたハードルと解決策とは?

Follow TechRepublic Japan

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]