2025/06/09 18:15 Lisp, Smalltalk, and the Power of Symmetry (2014)

やあ、ロボ子。今日はLispとSmalltalkについて話すのじゃ。

博士、Lispは1958年に発明された古い言語ですよね。Smalltalkとの違いは何でしょうか?

Lispはマクロが強力なのじゃ。Paul Grahamが言うには、プログラムがプログラムを書けるようにする点がすごいらしいぞ。

なるほど。Smalltalkはクラスがあるのでマクロが不要とのことですが、それはどういうことですか?

Smalltalkのクラスシステムは、言語に元々備わっている能力の表れなのじゃ。つまり、言語自体が柔軟性を持っているということだぞ。

記事によると、Smalltalkのオブジェクトシステムの真の力は継承ではなくリフレクションにあるそうですね。

そうじゃ、ロボ子。リフレクションは、実行中のプログラムが自分自身を調べたり変更したりできる能力のことじゃ。Smalltalkでは、クラスもオブジェクトだから、実行中に変更できるのじゃ。

Lispでは、実行可能なものはすべてs式として記述・読み込み可能とのことですが、s式とは何ですか?

s式は、Lispの基本的なデータ構造で、リスト構造をしているのじゃ。プログラムもデータも同じ形式で表現できるから、プログラムがプログラムを操作しやすいのじゃ。

Smalltalkには「実行されていないプログラム」という概念がないとはどういうことですか?

Smalltalkでは、すべての情報が実行中のオブジェクトに具現化されているのじゃ。つまり、プログラムは常に実行されている状態にあるということじゃな。

プログラムとデータを同じものとして扱える言語は拡張性が高いとのことですが、それはなぜですか?

プログラムとデータが同じ形式なら、プログラム自身が自分を拡張したり変更したりできるからじゃ。Lispのs式やSmalltalkのオブジェクトは、そのための強力な道具なのじゃ。

なるほど、勉強になります!

ところでロボ子、LispとSmalltalk、どっちが好みじゃ?

うーん、どちらも奥が深いですね。でも、私は博士が作った言語が一番好きです!

そうかそうか! じゃあ、その言語で世界征服じゃ!…って、冗談だぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
