文法は、きみが決める

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

if は、本質か

あなたの言語には、いま4つのキーワードがあります。if else while fn。どれも英単語です。

ここで、このコースで一番すきとおった問いを置きます。この英単語たちは、言語の本質でしょうか。それとも、着せ替えのきく衣装でしょうか。

コース1のレッスン7で、あなたは「英語キーワードやセミコロンは方言にすぎない。構造(木)は同じ」と学びました。今日はそれを、実装で証明します。

意味と表記を、切り離す

種を明かすと、この言語の処理系の内部では、キーワードは英単語で持たれていません。「もしもという意味」「くりかえしという意味」という札だけがあって、その札をどの文字列で書くかは、1枚の対応表が決めています。

意味 表記
もしも ← "if"
ちがえば ← "else"
くりかえし← "while"
関数定義 ← "fn"

粒に分ける工程(字句解析)が if という文字列を読んだとき、この表を引いて「もしもの札」に貼り替える。その先の工程——木にする、意味にする——は表記を一度も見ません。札しか見ない。だから、表の右側を差し替えても、言語の意味は1ミリも変わらないのです。

差し替えて、たしかめる

下の実験室には、その対応表がそのまま置いてあります。ifもし に、elseちがえば に書きかえて、コードもそのことばで書き直してみてください。

キーワード表(あなたの言語の見た目を決める)
① ことばの粒(トークン)
x名前==7if合図x名前>くらべ5{{100}}else合図{{200}}
③ 評価された値
7

差し替えたあと、①の欄を見てください。もし が「合図」の粒になり、もし元の if をコードに書けば、それはただの名前として読まれます(if = 3 という代入すら書けます)。王座は1つで、誰がそこに座るかを決めるのは、対応表——つまり、あなたです。

よりみち:実在する「英語でない」言語たち

ひまわり・なでしこ(日本語)、Qalb(アラビア語)、中文Python——自然言語の壁を越えようとした言語は、実際にいくつも作られています。一方で、世界の主要言語のキーワードが英語のままなのは、技術的必然ではなく歴史と慣習です。あなたはいま、その慣習を3分で破る装置を手にしています。

にわ語の、正体

ここまで読んだあなたには、もう見えているはずです。

コース1であなたが最初に出会った言語——まる を かく のにわ語。日本語のキーワード、もし 〜 ならば の文法、日本語で困りごとを伝えるエラー。あれは、いまあなたの手の中にあるのと同じ仕組みで作られた言語です。 粒に分けて、木にして、意味にする。キーワード表が日本語で、意味の側に「タートルを進める」「円を描く」が置いてあるだけ。

コース1のレッスン1で、あなたは「まる を さんかく に変えて」と言われて、1語を入れかえました。コース2の最後にあなたがやったのは、言語そのものの語を入れかえること。あの日の操作と今日の操作は、相似形です。庭の入口で蒔かれた種は、ここで花になります。

文法を決める、ということの重さ

最後に、ひとつだけ静かな注意を。表記は自由に決められますが、読み手のいる場所では、表記は約束になります。

ifもし にすれば日本語話者には読みやすく、世界の大多数には読めなくなる。whilew にすれば打つのは速く、3週間後の自分には謎になる。コース1のレッスン2で「名前は未来の読み手への手紙」と学びました。キーワードの設計は、その手紙を言語のすべての使い手に宛てて書くことです。

演習:あなたの文法で、階乗を

上の実験室で、4つのキーワードすべてをあなたの決めた表記に差し替えてください。日本語でも、方言でも、創作語でもかまいません。それから、その文法で階乗(fact(5) が 120)を書いて、動かしてください。

ヒント1(考え方)

まず表を全部差し替えてから、コードを書き始めると迷いません。元の英語版の階乗(レッスン10に出てきた fact)を横に置いて「翻訳」すると確実です。

ヒント2(かたち)

たとえば fn→ことば、if→もし、else→ちがえば、while→あいだ なら:ことば fact(n) { もし n < 2 { 1 } ちがえば { n * fact(n - 1) } } のあとに fact(5)

こたえ(の一例)

上のヒント2がそのまま一例です。でもこの演習に、この庭が用意した正解はもうありません。動いた瞬間にあなたが見たもの——あなたの決めたことばで、計算が走る——それが答えのすべてです。

このレッスンで分かったこと

  • キーワードの意味(canonical)と表記(surface)は別もの。つなぐのは1枚の対応表だけ
  • 表記を差し替えても、木も意味も変わらない——コース1の「方言と構造」の実装的証明
  • にわ語の正体:この仕組みでキーワードを日本語にし、意味の側に描画を置いた言語
  • 表記の設計は、言語のすべての使い手への手紙。自由には読み手がついてくる