萌えハッカーニュースリーダー

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

出典: https://insearchofsecrets.com/2014/08/04/lisp-smalltalk-and-the-power-of-symmetry/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

そうかそうか! じゃあ、その言語で世界征服じゃ!…って、冗談だぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search