SECD マシン、そして

11月5日月曜日、晴れ

これと言ってこれを書いておかねば! ということが思い浮かばない……。

5月の頭、この note を始めたころは、暴走する頭の中をどうにか外に出さないとという焦りで溢れかえっていたのだけれど、落ち着いたものだ。
(さらにその半年前はツイッターにとめどなくツイートを垂れ流していたんだっけ)

空っぽになったわけではない。いまだってしたいこと、考えたいこと、いくつかある。けれど、「間に合わない!」「どうにかしなきゃ!」というどうしようもない焦燥感はなくなった。
要は暴走モードの天才が去って、普通の男が残ったっていう話だ。(気をつけておかないと、今度は自己批判モードの谷底に転げ落ちる)

* * *

それはそうとして、敬愛する先輩から SECD マシンというキーワードをもらった。

Wikipedia のエントリーはこちら。

ぶっちゃけると、 LISP をネイティブに実行する抽象機械といったところか。スタック、環境、コード、そしてダンプという四つのレジスターを持ち、これらレジスターの頭文字をとって SECD と呼ぶのだとか。

先輩は Scheme 処理系の上に SECD コンパイラーを作り、この実装を順次 C に移していったようだ。その経緯がこちら。

* * *

ダイナブック構想のアラン・ケイが「ゴールデンボックス」という概念を語っているけれど、まさにこれ。

小さくて単純なブートストラップを作り、その上にちょっと複雑な処理系をのせ、順次、複雑さの階層をあげて最終的な目的機械(と処理系)を完成させる。

とてもとても、憧れる。

* * *

たまに思うのだけれど、僕らプログラマーはなんでも一つの言語の「中」で実現したがりすぎだとおもう。
せっかく先人が標準入出力とリダイレクト、パイプによるプログラム同士の通信を発明してくださったというのに、いまだに一枚岩のアプリケーションを書きたがる。

スマホ OS の Android にしても、その当初はユーザーの「したいこと(インテント)」に応答する小さな「アクティビティ」をたくさんつなぎ合わせられるプラットフォームとして構想されていたとおもうのに、結局アプリの連携はどこかに吹き飛び、巨大な、似通っていて少しずつ違うアプリが Play Store に並ぶことになった。(セキュリティという話もあるし商業的な話もあるから分断が進むのは当たり前だし、差別化のために巨大化していくのも当然の帰結 ……としたり顔で言うのは簡単だけれど)

* * *

アプリケーションの最小単位って、なんだろう?

そこそこの仕事ができて、他のアプリケーションと連携できるインターフェースは、どうやったら定義できるんだろう?

この記事が気に入ったらサポートをしてみませんか?