トップページへ > プログラミング言語の作者へ
前のページに戻る
Google  

ビアルネ・ストラウストラップ

Bjarne Stroustrup

1950 -

オブジェクト指向言語C++の設計者

1999/11/29 掲載

できのよい息子

1985年に発表されたビアルネ・ストラウストラップのC++は、よく知られるコンピュータ言語 としてはJavaに次いで(JavaはほかでもないC++から派生した)新しい言語である。 C++の父はC、母はSimula(注1)だ。CはUNIXを始めコンピュータ・プログラミングに一番多く使われている言語で、Simulaは最初のオブジェクト指向言語と言われている Smalltalk(注2)の母でもあり、言ってみればオブジェクト指向の家元である。 C++はこの両親の血統を受け継いで、非常に柔軟で使いやすい言語、一口に言えば「できのよい言語」に仕上がっている。現在ではほとんどすべてのプラットフォームでC++は活躍している。

コンピュータ科学の秀才

ビアルネ・ストラウストラップは1950年デンマークのオールフスで生まれた。 1975年オールフス大学を卒業し、コンピュータ科学および関連数学で特別に 修士号を授与されている。卒業後イギリスにわたってケンブリッジ大学の博士課程に入り、 チャーチル・カレッジの一員となった。大学のコンピュータ研究所で分散システムの設計を研究し、 1979年にコンピュータ科学で博士号を取得した。博士課程を修了すると、 ストラウストラップは家族をつれて米国のニュージャージー州に移住した。 ニュージャージー州マレーヒル近辺にはAT&Tベル研究所があり、 彼はそのコンピュータ科学研究センターに勤めることになったのだった。 現在ストラウストラップはAT&Tベル研究所のフェローで、 AT&T大規模プログラミング研究部の部長をしている。1993年 グレース・ホッパー賞を受賞した。

シミュレーション用にCを拡張

ストラウストラップがC++の設計と実装に動き出したのは1979年AT&Tベル研究所に 移ってきてすぐのことらしい。彼はケンブリッジ大学時代に分散システムのシミュレーション にSimula67を使っていたが、クラスの考え方などが気に入っていた。しかし何と言ってもパフォーマンスの悪さはネックだと思っていた。ベル研究所に移ってきて、好きなことをやっていいと言われたとき、ストラウストラップはすぐに、C言語にSimula67のクラスの考え方を取り入れてみようと考えたようだ。目指すところはパフォーマンスのよい、実際にストレスなく使えるものだ。当初C with Classesと呼んでいたこの拡張版Cは意外といけることがわかって、 ストラウストラップは本格的にオブジェクト指向言語としてのC を設計していった。 1983年にはAT&Tの内部で使われだし、C++の名前もこのころ採用された。 1985年に「プログラミング言語C++」初版とともに一般に公開された。

より良いC : C++

ストラウストラップは最初C++をクラスのあるCと呼んでいたが、色々な人がアドバイスを 出してくれて、その候補のなかから「C++」(シープラスプラス)を選んだ。それはシンプルでストラウストラップの気持ちをよく表しているように思えた。 という表記はC言語においては1を加えるという意味だが、そのことからC++がC言語をベースにしてそれにオブジェクト指向を加えたものだということが容易に類推できる。ストラウストラップはC を設計するにあたってC言語との互換性に細心の注意を払った。かれはC++もC言語のようにシステムプログラムを記述できる十分な柔軟性をもっていなければならないと考えていた。また、C言語で書かれた膨大なソースコードの蓄積は継承すべきものだった。ストラウストラップが視野の狭い人間だったら C++にはならず、「D言語」が誕生していたことだろう。実際にはそうならなかったことは、われわれにとっても幸いだった。ストラウストラップは現実をよく尊重したし、広い視野をもち、そして何よりも十分に謙虚だった。C++はまるでCのように書いてもよいし、オブジェクト指向言語として書いてもよい。 その融通無碍な特質はC++の設計の卓越した柔軟性によっている。

C の標準化とSTL(標準テンプレートライブラリ)

1989年にANSIの中で始まったC++の標準化は、1991年にISOのワーキング・グループに合流し、1997年に合意されて内容が固まった。C++の標準化の内容は、同じ年に発売になったストラウストラップの「プログラミング言語C++」第3版に盛り込まれた。ストラウストラップはこの標準化作業でワークグループのまとめ役をやったりして積極的に協力した。 STL(標準テンプレートライブラリ)はアレックス・ステファノフ(Alex Stepanov)、 メン・リー(Meng Lee)等によってC++のテンプレートという機能を使って標準化されたライブラリで、標準化作業の目玉になっている。このC 標準化案は最終的に1998年ISO/IEC14882として採択された。

いまは何をしているの?

ベル研究所というところは研究者にとってよほど居心地がいいのだと思う。 UNIXを創ったケン・トンプソンも、C言語を作った デニス・リッチー、それにブライアン・カーニハンももう何十年もベル研究所にいて、どこかへ移ったという話は聞かない。ストラウストラップもまた、ベル研究所にきて足かけ20年になるが、私はまだ若いと言って大規模システム(==分散システムか?)の研究に余念がない。C++についてはISOの標準化が成ってほぼ完成の域に達したので、次はC++の応用面に関心を移しているようだ。せっかくなので、最後にストラウストラップからのアドバイスを聞いておこう。彼自身の著書「プログラミング言語C++」第2版からの引用である。

「良いC++のプログラムはいかにして書くか?という問は良い英語の散文はいかにして書くか? という問に非常に似ている。これには二種類の答えがある:自分が何を言いたいか知りなさい、そして、練習しなさい。うまく書かれたものを真似しなさい、両方のアドバイスとも、英語と同じくらいC にもふさわしい-そして同じくらい従うのが難しい-ことがわかる」
「プログラミング言語C++」第2版から
「良いプログラムを書くことは知性、趣味の良さ、忍耐を必要とす」
「プログラミング言語C++」第2版から

この"趣味の良さ"という資質の要件にストラウストラップらしさが出ていると思う。 要するに、同じ内容ならスマートでエレガントなプログラムを書いてほしい、 と言っているのだろうか。がんばりたい。

(注1) Simula

シミュラは1960年代中頃に、ノルウェーのオスロでノルウェー計算センターに勤務していた オレ・ヨハン・ダール(Ole-John Dahl)とクリスティン・ニガード(Kristen Nygaard) によってデザインされたシミュレーション用言語である。シミュラには現在のオブジェクト指向の要素とされるクラスやオブジェクトの概念やクラスの継承といった革新的な機構が盛り込まれていた。このため多くの専門家に注目され、オブジェクト指向の発信源と見なされている。

(注2) Smalltalk

ゼロックス・パロアルト研究所のALTOプロジェクトの中で1970年代始めに生まれた言語で、 デザインはアラン・ケイとそのグループが行った。 シーモア・パパートのLOGOから強い影響を受けるとともに、Simulaからオブジェクト指向の基本概念を取り入れている。今日的な意味での最初にオブジェクト指向を実装した言語と言われている。

参考文献および関連書籍の紹介
「プログラミング言語C++ 第2版」 B・ストラウストラップ著 斎藤信男/三好博之/追川修一/宇佐見徹訳 トッパン 1993年8月  6699円
月刊Cマガジン1999年10月号 インタビューT.A.Dolotta 日下部圭子訳 ソフトバンク 1999年10月  1380円
偉大なるプログラマからのメッセージ
「パーソナルコンピュータを創ってきた人々」 脇英世著 ソフトバンク 1998年11月  1400円
インターネットソースの紹介
ストラウストラップのホームページ(英文)(別ウィンドウ)
http://www.research.att.com/~bs/homepage.html

 

 

コメントの投稿と一覧

感想、ご意見など自由にご記入ください