名前「Mere」、そしてそれが何であるか

言語は、それが何であるかを知るまで仮称で走った —— 命名は意図して後回しにされた、このプロジェクトのすべてが、コミットに値するまで後回しにされたのと同じように。得た名前は二つの仕事を一度にする:控えめで見つけやすい語(古英語で湖)の上に、テーゼ全体を圧縮した backronym —— Make Explicit Region-bound Effects。静かな表面、正確な芯;名前が言語を演じる。

merenamingidentitypublic-releaselanguage-design

五つの Part が、動く言語を、何と呼ぶかをついぞ定めきらないまま記述した。それは意図的だった。 プロジェクトは長いあいだ仮称で走り、コア —— メモリモデル、エフェクト、型 —— が実際に動く頃に仮称を 再考すると明記されていた。この Part は、私的な実験から公のものへの渡りについてで、そしてその渡りが 始まるところ —— 名前 —— で開く。

値するまで後回しにされた命名

言語は建てられるのに名前を要さない;使われるのに要する。だから名前は保留された、プロジェクトの 他のすべてを統べたのと同じ原則で:知ったときにコミットせよ、その前ではなく。仮称は正直な表明だ —— 「これがまだ何か知らない」—— 一方、早すぎる名前は、その後付き合わねばならない推測、やがて現れる ものに合わないかもしれないラベルだ。言語は、その性格が定まってから名づける。名前は、なってほしかった ものではなく、なった結果を記述すべきだからだ。

コアの設計上の問いがおおむね解決し、実装がそのすべての backend にわたって走る頃には、性格は定まって いて、命名が自然な次の行為になった。言語が何であるかは問いであることをやめ、まさにそのとき、答えを ラベルに載せられる。

Mere:控えめな語の上に正確な芯

選ばれた名前は Mere —— 古英語で湖、静かな水たまり。一音節、四文字、拡張子は .meremere という コマンド。その表面では、静かで、自嘲的とすら言える語だ:mere、「ただの〜」の mere、自分を告げるのを 辞退する名前。

その控えめさの下には、飾りではなくテーゼ全体を圧縮した表明である backronym がある:

MereMake Explicit Region-bound Effects.

各単語が、連載が五つの Part を費やした荷重を担う決定の一つを運ぶ。Make —— 言語は能動的な制作の ための道具、動詞だ。Explicit —— 第一原則、簡潔さより明示性、隠れた挙動の拒否。Region-bound —— メモリモデル、Trivial 制約の下 region と view によって寿命を管理される値。Effects —— ケイパビリティ 渡し、環境的な力ではなく可視な値として移動する副作用。四文字、言語を定義する決定の四つ。名前は、 これまで建てられたすべての、可能な限り短い要約だ。

その対 —— 控えめな表面の上の正確な芯 —— は偶然ではない;それは言語自身の美学が、その名前によって 演じられたものだ。Mere は野心的でも巧妙でもなく現れる;素朴に現れ、下は正確だ。明確な内容の上の 控えめな名前は、言語がコードに対して取るのと同じ姿勢だ:見せびらかしはなく、すべてが読める。

なぜ、あらゆる語のうち湖か

選択は、小さな風景の語の長いリストから —— glen も cove も tarn も loch も、みな境界づけられた地形の 一片だ、メモリモデルの中心的なアイデアが region、周囲から境界づけられた領域だから —— なされた。 いくつかは強かった。glen は region を直接名指し、きびきびした Scots の頑健さを持つ;cove は穏やかな 境界づけられた入り江だ。Mere が勝ったのは、力ずくではなく、合致についての理由でだ。

湖は、設計に最も完全に写像するメタファーだ。それは周囲から境界づけられた領域 —— region、それ自身の 寿命を持つ。その水面は透かして見えるほど静かだ —— ケイパビリティ渡しと明示的な型が求める可視性、 推論するのでなく見られる流れ。そして mere は小さく、素朴で、見せびらかさない水域で、それは意図して 小さなコアを持つ minimal な ML 系言語に合致し、設計全体が立脚する静けさに合致する:巧妙さではなく、 静的検査で積み上げられた確かさ。名前はその響きだけで選ばれたのではない。それが描く絵 —— 境界づけられ、 静かで、底まで澄んだ —— が、言語の絵だから選ばれた。

閾としての名前

仮称からのリネームは、機械的には、コードベースとドキュメントを一掃すること —— リポジトリ、モジュール名、 あらゆる例の拡張子、あらゆる設計ノートのフロントマター —— だった。だが機械的なことは要点ではない。 要点は、公へ渡るソフトウェアにとって名前が何のためかだ:それは、そのものが呼び出せるようになる瞬間だ。 名前の前は、プロジェクトは「私が取り組んでいるもの」だ;後には、他者が検索し、参照し、依存し、採用 できる何かだ。名前は渡りの最初の行為だ。コードを変えるからではなく、コードが他の人々にとって何であり うるかを変えるからだ。

言語はいまアイデンティティを持つ —— 一つの語、一つのメタファー、四文字に圧縮されたマニフェスト。まだ 持たないのは、公的な存在だ:住む場所、それを聞いたことのない誰かがそれを見つけ、学び、試す道。名前を 持つことは、利用できることと同じではない。次回:公開 —— サイト、チュートリアル、言語が言語として 現れるための登録、そして私的な実験を世界に開くのに何が要るか。

← Back to Mere: 言語を作る