Smalltalk は死んだ言語だ。by アラン・ケイ

Matzにっき - Alan Kayといっしょ日本 Ruby カンファレンス 2006(RubyKaigi)の まつもとさんの基調講演での言及から、一部の隠れ Smalltalk ファンの方々には衝撃をもって受け止められたり、あるいはおもしろおかしく取り上げる向きもある、くだんのセリフ。実は、アラン・ケイSmalltalk への失望や批判的評価を述べることはそんなに珍しいことではありません。(…ので、びっくりしちゃった人は、これを機会に“耐性”を持つようにしましょう!w)



たとえば、このブログではお馴染みの The Early History of Smalltalk には、こんなくだりがあります。

When I looked at Smalltalk in 1975, I was looking at something great, but I did not see an enduser language, I did not see a solution to the original goal of a "reading" and "writing" computer medium for children. I wanted to stop, dynamite everything and start from scratch again.

1975年頃のSmalltalkに、私が何か素晴らしいものを見ていたのは確かですが、エンドユーザー言語の完成を見たわけではありませんでした。"読む "と "書く "という子供向けのコンピュータ媒体という本来の目的に対する解決策が見えてきませんでした。私は、もうやめにして、すべてを消し去り、またゼロからやり直したいと思っていました。[DeepL訳を改変]

もうすでに30年前に(つまり、Smalltalk がよく知られる「Smalltalk-80」として '81 にデビューする5年以上も前に!w)、アラン・ケイSmalltalk のあり方に疑問を呈していたわけです。

[2021-01 補足:ちなみにここで言及されている 1975年頃の SmalltalkSmalltalk-72)は今の Smalltalk-80 以降の Smalltalk や、後述の Smalltalk-76 と全く違う、ケイの当初の着想に比較的近い仕組みで動く言語処理系でした。Webブラウザで簡単に動かせるので、良かったら体験してみてください。→Smalltalk-72で学ぶOOPの原点 Advent Calendar 2019 - Qiita ]


OOPSLA'97 カンファレンスの基調講演でもこんなことを言っています。

Smalltalk died when it left Xerox Parc and became a fixed environment unable to evolve into something new.

SmalltalkXerox Parcから出て、新しいものに進化できない固定環境になった時に死んだ。[DeepL訳を改変]

最近もインタビュー記事で、こんな発言もありました。

Basically what happened is this vehicle became more and more a programmer’s vehicle and less and less a children’s vehicle―the version that got put out, Smalltalk ’80, I don’t think it was ever programmed by a child. I don’t think it could have been programmed by a child because it had lost some of its amenities, even as it gained pragmatic power.

So the death of Smalltalk in a way came as soon as it got recognized by real programmers as being something useful; they made it into more of their own image, and it started losing its nice end-user features.

基本的に何が起こったかというと、この乗り物はますますプログラマー向けの乗り物になり、子供向けの乗り物ではなくなっていったということです。実利的な力を得たとはいえ、いくつかのアメニティが失われていたので、子供がプログラムすることはできなくなっていたと思います。

つまり、Smalltalkの死はある意味、現場で使うプログラマSmalltalkを便利なものとして認識するようになってからすぐにやってきたと言えるでしょう。[DeepL訳を改変]


まつもとさんとの会話でくだんのセリフが発せられた文脈は、その場にいなかった私が知るよしもないのですが、少なくとも、これまでの同様の発言においては、コンピュータ・リテラシー教育を意識した当初の開発目的を鑑みて、子供向け、エンドユーザー向けではなくなってしまった時点で、あるいは、さらにそうした傾向が進むことで、商用化や標準化が新たな目的となり“変化すること”をやめた時点で…、ということのようですね。たしかにそういった前提ならば、「(アラン・ケイにとっての)Smalltalk は死んだ」という言葉が設計者、自らの口から発せられたとしても、それは、高い理想を持つアラン・ケイならば、なおさらのこと、しごく当然のことのように思われます。


同じ「 Smalltalk は死んだ」でも、自分は Smalltalk が有効活用されている場面に遭遇したことがない…という文脈で、それこそ 3 + 4 を print it したこともないような Smalltalk のスの字も知らない輩にしたり顔で言われるのとはわけが違います。w(まあ、実際は、こういうことを書いたり言ったりする人の多くは、Smalltalk で昔、それなりに仕事をした経験がある…と自負する人が多いのですが(^_^;))


いささか杞憂に過ぎるとは思いますが、今回のことで「Smalltalk は死んだ言語だ」という衝撃的なフレーズや、それをアラン・ケイの口から(ここにきての、まさに打ち明け話のように)発せられたという事実(や、事実に反するイメージ)だけが一人歩きし、すでに生みの親にまで見捨てられた過去の遺物である Smalltalk から学ぶことなどもうありはしない…というような早とちりをしてしまう人が出てくることのないようにと、切に願うばかりです。

2006-09 追記

冒頭でご紹介している まつもとさんの講演の内容が音声データとして公開されましたので、くだんの「…は死んだ」フレーズだけが取りざたされて誤解を生むことのないよう、言及の前後部分について書き起こしてみました。

で、えーと。アラン・ケイ、という人がいましてね。Smalltalk を作った人。[はい? だれ、誰ですか、なんか言った? ん、うん。] で、アラン・ケイという人がいてですね。えーと、これ、Smalltalk をデザインした人なんですけれども。で、えー、この人、今、日本に来ててですね、おとつい、えー、お昼ご飯を食べに。なんか、おいしいお昼ご飯をごちそうになってですね、ラッキーって感じなんですけれども。


で、えー、Smalltalk について話をしました。で、ですね。アラン・ケイ。ああ、今日の日記のエント…、ああ、今日書いた日記のエントリーを見たかたはお気づきかもしれませんけど、アラン・ケイ、なんか結構不穏当なことを言ってですね「Smalltalk はもう死んだ言語だ」とかですね[しばし笑い]。とか、あのぉ、いや、「僕は Ruby が好きだ」とかいって、「もう Smalltalk は好きじゃない」とかですね[笑い]「Squeak を作ったのは、ツールが欲しかったからで、別に Smalltalk を復活させたかったからじゃない」とかですね、かなり不穏当なことを平気なこと、平気な顔で言っててですね。で、「僕、ブログ書いているんだけど、それ書いてもいい?」って訊いたら「いいよぉ」とかって非常に気楽に言ってましたので、ええ。…、だそうです。


で、えーと、アラン・ケイが言うにはですね、あの、Smalltalk-80 っていうのは、えー、実際は、その、ま、彼が、ほんとにその、最初、ダイナブック構想の中で作ろうと思っていた、そのぉ、ま、言語ではないというふうに言うんですよね。一番近いのは Smalltalk-76。ま、(Smalltalk の)76 年版ですね。


で、えー、で、そのあと、まあ、コンセプトのアラン・ケイと、その、実装の…デ、あーなんだっけか、ああダン・インガルスか、とのあいだの、非常に、こう、せめぎ合いがあってですね、で、こう、ま、最終的には LISPer(…的なもの)が勝ってですね、ああいうこう非常にシンプルな Smalltalk-80 ができたんだけれども、アラン・ケイ自身が欲しかったのはどっちかっていうと、こう、もうちょっと、なん…、トラディショナルというか、文法なんかもメッセージングじゃなくてもいいじゃんとかという感じなものだったらしくて、ですね。


えー、僕まだ、ちょっと確かめて…、まだ裏とっていないんですけど、アラン・ケイが言うにはですね、「Smalltalk-76 は(Smalltalk-80 より)もっと Ruby に近かった」と、いうふうに言って、「Ruby、いいよね」とか言ってくださいましたので、ラッキー。


RubySmalltalk-76 との類似点(あくまで、エンドユーザーから見た表層的な…ですが)やその関連した事柄については、私なりに調べて、次に挙げるエントリーでまとめてありますので、よかったら以下のエントリーも訪ねてみてください。

2019-09 追記

このエントリーから13年経過し、Rubyも今や「(もう)死んだ」と言われたり、「死にゆく運命にある言語」の筆頭に挙げられるようになりました^^; 当時のRubyの「若さ」や「勢い」からは信じられませんね…。もっともRubyのシェアは盤石で当時(今も)のSmalltalkと比べるべくもないですし、何より、早々にSmalltalkを見捨てて久しいアラン・ケイと違い、まつもとさんはその後も変わらずRuby大好き!なんですけれどもねw

え?Smalltalkはその後どうなったかって? もちろんまだ死んでいませんよ!w 近年は Squeak からその後フォークした Pharo という処理系とそのコミュニティーが活発です。コアメンバーが若いのか、しがらみにとらわれない思い切りの良さと勢いがあります。Smalltalk、名前はよく聞くけど触ったことないな…という向きは、この機にぜひお試しあれかし!

2021-01 追記

DeepL訳を改変したものを付けました。