ホーム  ざれごと  ワシントン州  ツール  NT豆知識  Win32プログラミングノート  私的用語  ジョーク  いろいろ  ゲーム雑記  Favorites  掲示板   Mail

Bjarne Stroustrup Interview about C++

Last modified: Thu Mar 18 07:33:16 2004 PDT


English only

-----Original Message-----
Subject: FW: Bjarne Stroustrup Interview about C++ (Joke I hope)
Importance: Low
原文(In English) いいかげんな訳(Japanesish Translationish)

On the 1st of January, 1998, Bjarne Stroustrup gave an interview to the IEEE's 'Computer' magazine. Naturally, the editors thought he would be giving a retrospective view of seven years of object-oriented design, using the language he created. By the end of the interview, the interviewer got more than he had bargained for and, subsequently, the editor decided to suppress its contents, 'for the good of the industry' but, as with many of these things, there was a leak. Here is a complete transcript of what was was said, unedited, and unrehearsed, so it isn't as neat as planned interviews. You will find it interesting...

1998年1月1日に、IEEEの "Computer"マガジンは Bjarne Stroustrup にインタビューを行った。 インタビュアーは、Stroustrup が作った言語(訳注:もちろんC++のこと)を用いてのオブジェクト指向デザインに関して、この7年間を回顧するインタビューが取れるものと思っていた。 しかし、インタビューが進むに連れ、もともと取材しようとしてたものよりも衝撃的な記事を得ることになった。その後、業界への衝撃が強すぎるとして、 編集者はその取材記事をボツにしたが、 こういうものには情報の リークが付き物である。

Interviewer: Well, it's been a few years since you changed the world of software design, how does it feel, looking back?

インタビュアー: あなたがソフトウェア設計の世界を変革してから何年か経ったわけですが、過去を振り返ってどのように感じますか?

Stroustrup: Actually, I was thinking about those days, just before you arrived. Do you remember? Everyone was writing 'C' and, the trouble was, they were pretty damn good at it. Universities got pretty good at teaching it, too. They were turning out competent - I stress the word 'competent' - graduates at a phenomenal rate. That's what caused the problem.

Stroustrup: ちょうどあなたが来る前に、そのことを考えていたところです。 憶えてますか? 誰もが C プログラムを書いていました。問題は、皆それが非常に得意だったことです。 大学でも、C を教えるのが非常にうまかった。 彼らは有能だということが分かりつつあった − 私は「有能」ということを強調しますが − そして、驚くべき人数が卒業していたんです。 それが、問題を引き起こした原因です。

Interviewer: Problem?

インタビュアー: 問題?

Stroustrup: Yes, problem. Remember when everyone wrote Cobol?

Stroustrup: そう、問題です。誰もが Cobol を書いていた頃を憶えていますか?

Interviewer: Of course, I did too

インタビュアー: もちろんです。私もそうでした。

Stroustrup: Well, in the beginning, these guys were like demi-gods. Their salaries were high, and they were treated like royalty.

Stroustrup: はじめの頃は、彼らはまるで神でした。 彼らの給料は高かったし、まるで王族のように扱われていました。

Interviewer: Those were the days, eh?

インタビュアー: いい時代でしたねぇ。

Stroustrup: Right. So what happened? IBM got sick of it, and invested millions in training programmers, till they were a dime a dozen.

Stroustrup: その通り。そして、何が起きました? IBMは嫌気がさして、プログラマのトレーニングのために何億円も投資しました。 彼らが1ダースで10セント(訳注:珍しくもない、ありふれた、の意)になってしまうまで。

Interviewer: That's why I got out. Salaries dropped within a year, to the point where being a journalist actually paid better.

インタビュアー: だから私も辞めたんです。 一年もしないうちに給料が下がっていき、ジャーナリストの方が稼げるようになってしまいました。

Stroustrup: Exactly. Well, the same happened with 'C' programmers.

Stroustrup: まさしくその通りです。 そして、同じことが C プログラマにも起きたんです。

Interviewer: I see, but what's the point?

インタビュアー: それは分かりましたが、つまりどういうことですか?

Stroustrup: Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little. I thought 'I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers? Actually, I got some of the ideas from X10, you know, X windows. That was such a bitch of a graphics system, that it only just ran on those Sun 3/60 things. They had all the ingredients for what I wanted. A really ridiculously complex syntax, obscure functions, and pseudo-OO structure. Even now, nobody writes raw X-windows code. Motif is the only way to go if you want to retain your sanity.

Stroustrup: ある日私は、オフィスに座って、ある小さな企みについて考えていました。 このバランスをちょっと修正できるような。 「非常に複雑で習得するのが難しいため、誰にもプログラマ市場をあふれさせることができないような言語があったとしたら、どうだろう。」と私は考えました。 実際のところは、X10、つまり X Windows(ママ) からアイディアをいただいたんですが。 あれは、Sun 3/60やなにかの上で走るだけにすぎない、ひどいグラフィクスシステムでした。 私の欲しかった素材は、すべて X が持っていました。非常にばかばかしい複雑な文法、あいまいな関数、仮想オブジェクト指向な構造。 今でさえ、誰も生の X-Windows(ママ)のコードは書きません。 正気を保っていたいなら、Motif が唯一の選択肢です。

Interviewer: You're kidding...?

インタビュアー: 冗談でしょう…?

Stroustrup: Not a bit of it. In fact, there was another problem. Unix was written in 'C', which meant that any 'C' programmer could very easily become a systems programmer. Remember what a mainframe systems programmer used to earn?

Stroustrup: いいえ、ちっとも。 実際、他の問題もありました。 Unix は C で書かれていて、どの C プログラマもごく簡単にシステムプログラマになれました。 メインフレームのシステムプログラマが、どれくらい稼いでいたか憶えていますか?

Interviewer: You bet I do, that's what I used to do.

インタビュアー: もちろんです。私がやっていたことですから。

Stroustrup: OK, so this new language had to divorce itself from Unix, by hiding all the system calls that bound the two together so nicely. This would enable guys who only knew about DOS to earn a decent living too.

Stroustrup: OK、ですから新しい言語は Unix から離れる必要があったのです。 この2つを非常にうまく結合していたシステムコールを、すべて隠蔽することによって。 このことで、DOS しか知らないプログラマでも、裕福な生活が得られるようになります。

Interviewer: I don't believe you said that...

インタビュアー: あなたがそのようなことをおっしゃるのが信じられませんが…

Stroustrup: Well, it's been long enough, now, and I believe most people have figured out for themselves that C++ is a waste of time but, I must say, it's taken them a lot longer than I thought it would.

Stroustrup: もうずいぶんと時間が経ちました。 多くの人が、C++ は時間の無駄であると悟ったと思います。 私が想像したよりも長くかかりましたが。

Interviewer: So how exactly did you do it?

インタビュアー: 正確にはどのように行ったのですか?

Stroustrup: It was only supposed to be a joke, I never thought people would take the book seriously. Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient.

Stroustrup: あれは単なるジョークの筈だったんです。 人々があの本を真剣に受け取るとは思っても見ませんでした。 脳みそを半分でも持っている人なら、オブジェクト指向プログラミングは非直感的で、不合理で、効率が悪いということを見て取れます。

Interviewer: What?

インタビュアー: 今なんと?

Stroustrup: And as for 're-useable code' - when did you ever hear of a company re-using its code?

Stroustrup: そして、再利用可能コードに関しては、実際にコードを再利用している会社のことを聞いたことがありますか?

Interviewer: Well, never, actually, but...

インタビュアー: ええ実際には… しかし…

Stroustrup: There you are then. Mind you, a few tried, in the early days. There was this Oregon company - Mentor Graphics, I think they were called - really caught a cold trying to rewrite everything in C++ in about '90 or '91. I felt sorry for them really, but I thought people would learn from their mistakes.

Stroustrup: そういうことです。 念のため、早い時期にはいくつかの会社がやろうとしました。 オレゴンの会社 − メンターグラフィクスと呼ばれていたと思いますが − は、'90年か'91年に、全てを C++ で書き直そうという病気にかかってしまいました。 彼らについては非常に申し訳なく思いますが、しかし人々は彼らの例から学ぶだろうと思ったのです。

Interviewer: Obviously, they didn't?

インタビュアー: 明らかに学ばなかったと?

Stroustrup: Not in the slightest. Trouble is, most companies hush-up all their major blunders, and explaining a $30 million loss to the shareholders would have been difficult. Give them their due, though, they made it work in the end.

Stroustrup: 全く、です。 問題は、たいていの会社は大きな失敗を隠そうとしたことです。 株主に30億円の損失を説明するのは大変だったでしょう。

Interviewer: They did? Well, there you are then, it proves O-O works.

インタビュアー: 出来たのですか。それでは、オブジェクト指向が役に立つとことを証明したということですね。

Stroustrup: Well, almost. The executable was so huge, it took five minutes to load, on an HP workstation, with 128MB of RAM. Then it ran like treacle. Actually, I thought this would be a major stumbling-block, and I'd get found out within a week, but nobody cared. Sun and HP were only too glad to sell enormously powerful boxes, with huge resources just to run trivial programs. You know, when we had our first C++ compiler, at AT&T, I compiled 'Hello World', and couldn't believe the size of the executable. 2.1MB

Stroustrup: そうですね、大体は。 実行ファイルは巨大だったし、128MBのRAMを積んだHPのワークステーションでロードするのに5分かかりました。 動作もとろとろしていました。 私は、これは大きな障害になるだろうと思ったのですが、一週間もしないうちに、誰もそんなことは気にしないということに気付きました。 SunやHPは、小さなくだらないプログラムを走らせるだけの目的に、大量のリソースを積んだパワフルなマシンを売れるので、単純に喜んでいました。
我々が最初の C++ コンパイラをAT&Tで開発したとき、"Hello World"プログラムをコンパイルしたバイナリの大きさが信じられませんでした。2.1MBですよ。

Interviewer: What? Well, compilers have come a long way, since then.

インタビュアー: それはまた…。 しかし、コンパイラはそれからずいぶんと進化しました。

Stroustrup: They have? Try it on the latest version of g++ - you won't get much change out of half a megabyte. Also, there are several quite recent examples for you, from all over the world. British Telecom had a major disaster on their hands but, luckily, managed to scrap the whole thing and start again. They were luckier than Australian Telecom. Now I hear that Siemens is building a dinosaur, and getting more and more worried as the size of the hardware gets bigger, to accommodate the executables. Isn't multiple inheritance a joy?

Stroustrup: そうですか? 最新の g++ を試してごらんなさい。0.5メガバイトも変わっちゃいません。
それから、ごく最近の例もいくつかあります。 ブリティッシュテレコムは大きな問題を抱えていましたが、幸いなことに、全てをスクラップにしてまたやり直しました。 彼らは、オーストラリアテレコムよりも幸運でした。 また私は、シーメンスが恐竜並みのものを作っていると聞いています。 彼らは、実行ファイルを格納するためのハードウェアのサイズが大きくなることに、ますます不安を高めています。

Interviewer: Yes, but C++ is basically a sound language.

インタビュアー: しかし、C++ は基本的には健全な言語です。

Stroustrup: You really believe that, don't you? Have you ever sat down and worked on a C++ project? Here's what happens: First, I've put in enough pitfalls to make sure that only the most trivial projects will work first time. Take operator overloading. At the end of the project, almost every module has it, usually, because guys feel they really should do it, as it was in their training course. The same operator then means something totally different in every module. Try pulling that lot together, when you have a hundred or so modules. And as for data hiding. God, I sometimes can't help laughing when I hear about the problems companies have making their modules talk to each other. I think the word 'synergistic' was specially invented to twist the knife in a project manager's ribs.

Stroustrup: あなたは本当にそれを信じているのですね。 あなたはこれまでに、C++ のプロジェクトで働いたことはありますか?
最初に私は、小さなプロジェクトだけが動くような落とし穴を充分こしらえました。 オペレータオーバロードを例に取りましょう。 プロジェクトの終わりには、殆どのモジュールが使っているでしょう。 人々はたいてい、オペレータオーバロードを使うべきだと感じてるからです。 彼らが受けたトレーニングコースの例のようにね。 そうすると、同じオペレータなのに、違うモジュールでは全く異なる意味になります。 モジュールが100やそこらあるときに、全てを一つにまとめられますか。 データ隠蔽だってそうです。 あちこちの会社で、人々が彼らのモジュールをお互いにコミュニケートさせるときの問題を聞くと、私は笑いをこらえることができません。

Interviewer: I have to say, I'm beginning to be quite appalled at all this. You say you did it to raise programmers' salaries? That's obscene.

インタビュアー: 私はぞっとし始めたといわざるを得ません。 あなたは、プログラマの給料を上げるためにこれらのことをしたというのですか? 実に不愉快です。

Stroustrup: Not really. Everyone has a choice. I didn't expect the thing to get so much out of hand. Anyway, I basically succeeded. C++ is dying off now, but programmers still get high salaries - especially those poor devils who have to maintain all this crap. You do realise, it's impossible to maintain a large C++ software module if you didn't actually write it?

Stroustrup: 必ずしもそうではありません。 誰も皆、自分で選択することができます。 私は、事態がこんなに私の手に余るとは思っていませんでした。 ともかく、私は基本的には成功しました。 C++ は今や死にかけていて、しかしプログラマは高いサラリーを得ています。 とりわけ、このすべての糞ったれなものを保守しなければならないかわいそうなプログラマは。 自分が書いたわけでもない大きな C++ のソフトウェアモジュールを管理するのが不可能だということは分かりますか?

Interviewer: How come?

インタビュアー: なぜですか。

Stroustrup: You are out of touch, aren't you? Remember the typedef?

Stroustrup: 事情に疎いようですね。typedefを憶えていますか?

Interviewer: Yes, of course.

インタビュアー: もちろんです。

Stroustrup: Remember how long it took to grope through the header files only to find that 'RoofRaised' was a double precision number? Well, imagine how long it takes to find all the implicit typedefs in all the Classes in a major project.

Stroustrup: "RoofRaised" が倍精度実数であることを見つけるためだけに、ヘッダファイルを手探りするのにどれだけ時間がかかったか憶えていますか?
大きなプロジェクトで、クラス宣言の暗黙的な typedef をすべて探すのにどれだけの時間がかかるか想像してごらんなさい。

Interviewer: So how do you reckon you've succeeded?

インタビュアー: では、あなたが成功したということはどのように判断されたのですか。

Stroustrup: Remember the length of the average-sized 'C' project? About 6 months. Not nearly long enough for a guy with a wife and kids to earn enough to have a decent standard of living. Take the same project, design it in C++ and what do you get? I'll tell you. One to two years. Isn't that great? All that job security, just through one mistake of judgement. And another thing. The universities haven't been teaching 'C' for such a long time, there's now a shortage of decent 'C' programmers. Especially those who know anything about Unix systems programming. How many guys would know what to do with 'malloc', when they've used 'new' all these years - and never bothered to check the return code. In fact, most C++ programmers throw away their return codes. Whatever happened to good ol' '-1'? At least you knew you had an error, without bogging the thing down in all that 'throw' 'catch' 'try' stuff.

Stroustrup: 平均的なCプロジェクトの長さを憶えていますか? 大体6ヶ月です。 妻子のあるプログラマが余裕のある生活を手に入れるには、短すぎます。 同じプロジェクトをC++でデザインしたらどうでしょう。 いいですか。1年から2年です。 素晴らしいじゃありませんか。 この仕事の安定性は、一つの判断の間違いから来るのです。
他にもあります。 大学では、C を昔ほど長い時間教えませんから、今ではきちんとしたCプログラマが不足しているのです。 特に、Unixのシステムプログラミングに関して何かを知っているプログラマが、です。 `new' に長年慣れてしまった後、− 戻り値のチェックに煩わされることを忘れて − `malloc'をどう扱えばいいか知っているのは何人いるでしょうか。 実際、たいていの C++ プログラマは、戻り値というものを捨ててしまいました。 古きよき `-1' に何が起こったのでしょう。 少なくとも、`throw' `catch' `try' やらの泥沼の中を捜しまわる必要なく、エラーが起きたことが分かったはずです。

Interviewer: But, surely, inheritance does save a lot of time?

インタビュアー: しかし、絶対に、継承は時間の節約になるでしょう?

Stroustrup: Does it? Have you ever noticed the difference between a 'C' project plan, and a C++ project plan? The planning stage for a C++ project is three times as long. Precisely to make sure that everything which should be inherited is, and what shouldn't isn't. Then, they still get it wrong. Whoever heard of memory leaks in a 'C' program? Now finding them is a major industry. Most companies give up, and send the product out, knowing it leaks like a sieve, simply to avoid the expense of tracking them all down.

Stroustrup: そうでしょうか。 Cプロジェクトの設計と、C++プロジェクトの設計の違いに気付いたことはありませんか。 C++プロジェクトの設計段階にかかる時間は、3倍です。 継承すべきもの、すべきでないものを正確に決めるためです。 それでも、判断を間違えます。
Cプログラムがメモリリークを起こしたと聞いた人がいますか? メモリリークを見つけるのは、いまや大事業です。 たいていの会社はあきらめてしまい、ふるいのようにリークを起こすことを知っていながら、問題を追跡する費用をかけないのです。

Interviewer: There are tools...

インタビュアー: ツールがあります…

Stroustrup: Most of which were written in C++.

Stroustrup: それらの殆どはC++で書かれていますがね。

Interviewer: If we publish this, you'll probably get lynched, you do realise that?

インタビュアー: もし私がこのインタビューを出版すれば、あなたはきっとリンチされるでしょう。分かっていますか。

Stroustrup: I doubt it. As I said, C++ is way past its peak now, and no company in its right mind would start a C++ project without a pilot trial. That should convince them that it's the road to disaster. If not, they deserve all they get. You know, I tried to convince Dennis Ritchie to rewrite Unix in C++.

Stroustrup: そういうことにはならないでしょう。 前にも言いましたが、C++はもうピークの時期を過ぎました。 まともな神経の会社なら、いきなりC++プロジェクトをスタートさせたりはしないでしょう。 まず試験的な試行をするはずです。 この試行で、障害が多数待ち受けているということを納得する筈です。 そうでなければ、彼らはしっぺがえしを食らうでしょう。

Interviewer: Oh my God. What did he say?

インタビュアー: Oh my God. 彼は何と言いましたか?

Stroustrup: Well, luckily, he has a good sense of humor. I think both he and Brian figured out what I was doing, in the early days, but never let on. He said he'd help me write a C++ version of DOS, if I was interested.

Stroustrup: 幸運なことに、彼にはユーモアのセンスがありました。 私が思うに、彼とブライアンは私がやっていることを早い時期に分かっていたと思いますが、他の人には話しませんでした。 彼は、もし私が興味があるなら、DOSのC++版を書くのを手伝ってくれると言いました。

Interviewer: Were you?

インタビュアー: それで、興味を持ったのですか?

Stroustrup: Actually, I did write DOS in C++, I'll give you a demo when we're through. I have it running on a Sparc 20 in the computer room. Goes like a rocket on 4 CPU's, and only takes up 70 megs of disk.

Stroustrup: 本当のところ、私はC++でDOSを書きました。 これが終わったら、デモ版をお渡ししましょう。 コンピュータルームのSparc 20でずっと走らせています。4 CPUでロケットのように速く動きますし、たった70MBのディスクしか消費しません。

Interviewer: What's it like on a PC?

インタビュアー: PC上ではどのようになりますか?

Stroustrup: Now you're kidding. Haven't you ever seen Windows '95? I think of that as my biggest success. Nearly blew the game before I was ready, though.

Stroustrup: 冗談がうまいね。 Windows '95を見たことがないの? あれは私の最大の成功だと思います。 私の準備が整う前に、このゲームを吹き飛ばしてくれたけどね。

Interviewer: You know, that idea of a Unix++ has really got me thinking. Somewhere out there, there's a guy going to try it.

インタビュアー: Unix++ のアイディアは、非常に考えさせるものがあります。どこかで実際にやっている人がいると思います。

Stroustrup: Not after they read this interview.

Stroustrup: このインタビューを読むまではね。

Interviewer: I'm sorry, but I don't see us being able to publish any of this.

インタビュアー: 申し訳ありませんが、私どもはこのインタビューを記事にすることは出来ないと思います。

Stroustrup: But it's the story of the century. I only want to be remembered by my fellow programmers, for what I've done for them. You know how much a C++ guy can get these days?

Stroustrup: だけど、これは世紀的な話なんですよ。 私は、私がしたことで仲間のプログラマに憶えていて欲しいと願うだけです。 近頃のC++プログラマがどれくらい稼いでいるか、知っていますか?

Interviewer: Last I heard, a really top guy is worth $70 - $80 an hour.

インタビュアー: 私が最近聞いたところでは、トップレベルでは1時間に$70から$80だそうですが。

Stroustrup: See? And I bet he earns it. Keeping track of all the gotchas I put into C++ is no easy job. And, as I said before, every C++ programmer feels bound by some mystic promise to use every damn element of the language on every project. Actually, that really annoys me sometimes, even though it serves my original purpose. I almost like the language after all this time.

Stroustrup: ほらね。 私は本当にそれだけ稼げていると思いますよ。 私がC++に突っ込んだ`gotcha'(訳注:がらくたの意味か?)の全てに絶えず注意して仕事をするのは、簡単な仕事ではありません。 そして、前にも言ったように、C++プログラマは、全てのプロジェクトで全てのひどいC++の要素を使わなければならないという不思議な観念に縛られているのです。 私の本来の目的にかなうとしても、時々本当にこれには悩まされます。

Interviewer: You mean you didn't before?

インタビュアー: 以前はそうでなかったとおっしゃる?

Stroustrup: Hated it. It even looks clumsy, don't you agree? But when the book royalties started to come in... well, you get the picture.

Stroustrup: 憎んでいました。 C++は、むしろ不格好です。そうは思いませんか。 しかし、本の印税が入り始めると…。分かるでしょう。

Interviewer: Just a minute. What about references? You must admit, you improved on 'C' pointers.

インタビュアー: ちょっと待ってください。「参照」についてはどうです。Cのポインタを進化させたと、これはあなたは認めなければなりませんよ。

Stroustrup: Hmm. I've always wondered about that. Originally, I thought I had. Then, one day I was discussing this with a guy who'd written C++ from the beginning. He said he could never remember whether his variables were referenced or dereferenced, so he always used pointers. He said the little asterisk always reminded him.

Stroustrup: うーん。私はいつもそれを不思議に思っていました。 最初は、私もそうだと思いました。 するとある日、最初からC++で書いてきたプログラマと話をする機会がありました。 かれは、変数が参照元なのか参照先なのか憶えきれないので、いつもポインタを使っていると言いました。 小さなアスタリスク(訳注: `*'のこと)がいつも彼に、どちらなのか思い出させてくれる、と。

Interviewer: Well, at this point, I usually say 'thank you very much' but it hardly seems adequate.

インタビュアー: ええと、ここでは普通私は「ありがとうございました」と言うんですが、今日はその言葉が適当だとはとても思えません。

Stroustrup: Promise me you'll publish this. My conscience is getting the better of me these days.

Stroustrup: これが雑誌に載ると約束してください。 このごろでは、私の良心がうずくんですよ。

Interviewer: I'll let you know, but I think I know what my editor will say.

インタビュアー: 後でお知らせしますが、編集者がなんというか想像できますよ。

Stroustrup: Who'd believe it anyway? Although, can you send me a copy of that tape?

Stroustrup: 誰かがこれを信じるとでもいうの? いずれにしても、テープのコピーは送ってもらえますよね。

Interviewer: I can do that.

インタビュアー: それなら出来ます。

いわずもがなの訳注: ここのところ、このページへのアクセスが増えているらしいので、いわずもがなの注釈を…。 このページのインタビューが本当かどうかは、 Stroustrup氏のFAQ ページでご自分でお確かめください。

Since 1996


ホーム  ざれごと  ワシントン州  ツール  NT豆知識  Win32プログラミングノート  私的用語  ジョーク  いろいろ  ゲーム雑記  Favorites  掲示板   Mail