言語に名前をつけて、世に出す

よみもの+手を動かす時間:およそ30分

最初の魔法を、もう一度

コース1のレッスン2で、あなたが最初に覚えた魔法は「値に名前をつける」ことでした。このコースの最後の仕事も、名前をつけることです。ただし今度は、値ではなく言語に

FORTRANは「数式の翻訳機」、Pythonはコメディ番組から、Rubyは宝石から。名前は言語の人格の、最初の一文字です。あなたの言語は、何と呼ばれたいでしょうか。

ことばの工房へ

この庭には、最後のレッスンのための場所があります——ことばの工房

工房には、レッスン11のキーワード表と、言語名の欄と、あなたの言語のためのエディタがあります。そして「この言語を、リンクにして世に出す」というボタンが。押すと、あなたの言語——名前、キーワード表、プログラム——が1本のURLになります。

リンクに言語が棲む、という仕組み

このボタンの裏側に、隠された魔法はありません。最後まで、種を明かします。

あなたの言語の定義(名前・対応表・コード)は、小さなデータのかたまりです。それを文字の列に直し、URLに使える文字だけに変換して、リンクの # の後ろにぶら下げる。リンクを受け取った人のブラウザが、それを逆向きにほどいて、復元する。サーバはどこにも要りません。 あなたの言語は、どこかの会社の計算機ではなく、リンクそのものに棲んでいます。

この庭が「登録不要・ずっと無料」でいられるのも、同じ理由です。技術は、所有されない場所に物を置くことを可能にしました。あなたの言語も、その場所に置かれます。

よりみち:言語を「公開する」ことの系譜

1991年、グイド・ヴァンロッサムはPythonをニュースグループに投稿しました。1995年、まつもとゆきひろさんはRubyをメーリングリストで公開しました。どちらも最初は、たった数人に届くだけの「リンク」でした。規模はちがえど、あなたが今日やることは、彼らがやったことと同じ種類の行為です。

言語のトリセツを書く

世に出す前に、もうひとつだけ。あなたの言語の説明を書いてください。長文は要りません。

  • 言語の名前と、その由来(一行)
  • キーワード表(4語が何と書かれるか)
  • 短いサンプルプログラムと、その結果

コース1のレッスン1から今日まで、あなたはずっとリファレンスの読み手でした。説明を書いた瞬間、あなたは書き手の側に移ります。読み手として欲しかったもの——正直さ、具体例、つまずきの予告——を、今度はあなたが用意する番です。

最終演習:あなたの言語を、世に出す

ことばの工房で、次の3つを仕上げてください。

  1. 言語に名前をつける
  2. キーワード表を、あなたの設計に差し替える
  3. その言語らしさが出る短いプログラムを書いて、リンクを作る

できたリンクを、誰かに送ってください。送る相手がいなければ、未来の自分へ(メモに貼っておく)。リンクを開いた人のブラウザで、あなたの言語が動きます。

ためらったときに、読むもの

「こんな小さな言語を世に出していいのか」と思ったら、レッスン2を思い出してください。数しか話せない言語も、まぎれもなく言語でした。小ささは欠点ではありません。それに、リンクを作る行為に審査はありません。世に出すかどうかを決める権利は、最初からあなたにあります。

この庭で身につけたこと(コース2の総括)

  • 言語処理系の3工程:粒に分ける → 木にする → 意味にする
  • 字句解析は根気のいる単純作業、構文木はただのデータの入れ子、評価は木を畳むこと
  • 優先順位の正体は木のかたちであり、文法の階層がそれを決める
  • エラーメッセージは言語の人格。どこで・何を期待して・何が来たか
  • 変数の正体は環境(名前→値の辞書)。スコープは辞書の重なり
  • 「何を真とするか」も「いつ止まるか」も、設計者の決断
  • 関数は、言語が自分の語彙を増やす力。再帰は環境の重なりから「勝手に」生まれる
  • キーワードは衣装。意味と表記の分離が、にわ語の正体だった
  • 言語は与えられるものではなく、設計するもの

庭の出口で

コース1の入口で、あなたは まる を かく のボタンを押しました。誰かの作った言語を、使う側として。

いまのあなたは、その言語がどう動いているかを知っていて、同じ種類のものを自分で設計し、名前をつけ、世に出しました。机の反対側に座る、と最初に言ったのはこのことです。

プログラミング言語は数千あると言われます。今日、そこにあなたの一つが加わりました。誰に数えられなくても、動くものは動く。それがこの世界の、いちばん誠実なところです。

修了、おめでとうございます。庭はこれからも広がります。またいつでも、歩きに来てください。