言語に名前をつけて、世に出す
最初の魔法を、もう一度
コース1のレッスン2で、あなたが最初に覚えた魔法は「値に名前をつける」ことでした。このコースの最後の仕事も、名前をつけることです。ただし今度は、値ではなく言語に。
FORTRANは「数式の翻訳機」、Pythonはコメディ番組から、Rubyは宝石から。名前は言語の人格の、最初の一文字です。あなたの言語は、何と呼ばれたいでしょうか。
ことばの工房へ
この庭には、最後のレッスンのための場所があります——ことばの工房。
工房には、レッスン11のキーワード表と、言語名の欄と、あなたの言語のためのエディタがあります。そして「この言語を、リンクにして世に出す」というボタンが。押すと、あなたの言語——名前、キーワード表、プログラム——が1本のURLになります。
リンクに言語が棲む、という仕組み
このボタンの裏側に、隠された魔法はありません。最後まで、種を明かします。
あなたの言語の定義(名前・対応表・コード)は、小さなデータのかたまりです。それを文字の列に直し、URLに使える文字だけに変換して、リンクの # の後ろにぶら下げる。リンクを受け取った人のブラウザが、それを逆向きにほどいて、復元する。サーバはどこにも要りません。 あなたの言語は、どこかの会社の計算機ではなく、リンクそのものに棲んでいます。
この庭が「登録不要・ずっと無料」でいられるのも、同じ理由です。技術は、所有されない場所に物を置くことを可能にしました。あなたの言語も、その場所に置かれます。
⟡ よりみち:言語を「公開する」ことの系譜
1991年、グイド・ヴァンロッサムはPythonをニュースグループに投稿しました。1995年、まつもとゆきひろさんはRubyをメーリングリストで公開しました。どちらも最初は、たった数人に届くだけの「リンク」でした。規模はちがえど、あなたが今日やることは、彼らがやったことと同じ種類の行為です。
言語のトリセツを書く
世に出す前に、もうひとつだけ。あなたの言語の説明を書いてください。長文は要りません。
- 言語の名前と、その由来(一行)
- キーワード表(4語が何と書かれるか)
- 短いサンプルプログラムと、その結果
コース1のレッスン1から今日まで、あなたはずっとリファレンスの読み手でした。説明を書いた瞬間、あなたは書き手の側に移ります。読み手として欲しかったもの——正直さ、具体例、つまずきの予告——を、今度はあなたが用意する番です。
✎ 最終演習:あなたの言語を、世に出す
ことばの工房で、次の3つを仕上げてください。
- 言語に名前をつける
- キーワード表を、あなたの設計に差し替える
- その言語らしさが出る短いプログラムを書いて、リンクを作る
できたリンクを、誰かに送ってください。送る相手がいなければ、未来の自分へ(メモに貼っておく)。リンクを開いた人のブラウザで、あなたの言語が動きます。
ためらったときに、読むもの
「こんな小さな言語を世に出していいのか」と思ったら、レッスン2を思い出してください。数しか話せない言語も、まぎれもなく言語でした。小ささは欠点ではありません。それに、リンクを作る行為に審査はありません。世に出すかどうかを決める権利は、最初からあなたにあります。
この庭で身につけたこと(コース2の総括)
- 言語処理系の3工程:粒に分ける → 木にする → 意味にする
- 字句解析は根気のいる単純作業、構文木はただのデータの入れ子、評価は木を畳むこと
- 優先順位の正体は木のかたちであり、文法の階層がそれを決める
- エラーメッセージは言語の人格。どこで・何を期待して・何が来たか
- 変数の正体は環境(名前→値の辞書)。スコープは辞書の重なり
- 「何を真とするか」も「いつ止まるか」も、設計者の決断
- 関数は、言語が自分の語彙を増やす力。再帰は環境の重なりから「勝手に」生まれる
- キーワードは衣装。意味と表記の分離が、にわ語の正体だった
- 言語は与えられるものではなく、設計するもの
庭の出口で
コース1の入口で、あなたは まる を かく のボタンを押しました。誰かの作った言語を、使う側として。
いまのあなたは、その言語がどう動いているかを知っていて、同じ種類のものを自分で設計し、名前をつけ、世に出しました。机の反対側に座る、と最初に言ったのはこのことです。
プログラミング言語は数千あると言われます。今日、そこにあなたの一つが加わりました。誰に数えられなくても、動くものは動く。それがこの世界の、いちばん誠実なところです。
修了、おめでとうございます。庭はこれからも広がります。またいつでも、歩きに来てください。