文法は、きみが決める
if は、本質か
あなたの言語には、いま4つのキーワードがあります。if else while fn。どれも英単語です。
ここで、このコースで一番すきとおった問いを置きます。この英単語たちは、言語の本質でしょうか。それとも、着せ替えのきく衣装でしょうか。
コース1のレッスン7で、あなたは「英語キーワードやセミコロンは方言にすぎない。構造(木)は同じ」と学びました。今日はそれを、実装で証明します。
意味と表記を、切り離す
種を明かすと、この言語の処理系の内部では、キーワードは英単語で持たれていません。「もしもという意味」「くりかえしという意味」という札だけがあって、その札をどの文字列で書くかは、1枚の対応表が決めています。
意味 表記もしも ← "if"ちがえば ← "else"くりかえし← "while"関数定義 ← "fn"粒に分ける工程(字句解析)が if という文字列を読んだとき、この表を引いて「もしもの札」に貼り替える。その先の工程——木にする、意味にする——は表記を一度も見ません。札しか見ない。だから、表の右側を差し替えても、言語の意味は1ミリも変わらないのです。
差し替えて、たしかめる
下の実験室には、その対応表がそのまま置いてあります。if を もし に、else を ちがえば に書きかえて、コードもそのことばで書き直してみてください。
差し替えたあと、①の欄を見てください。もし が「合図」の粒になり、もし元の if をコードに書けば、それはただの名前として読まれます(if = 3 という代入すら書けます)。王座は1つで、誰がそこに座るかを決めるのは、対応表——つまり、あなたです。
⟡ よりみち:実在する「英語でない」言語たち
ひまわり・なでしこ(日本語)、Qalb(アラビア語)、中文Python——自然言語の壁を越えようとした言語は、実際にいくつも作られています。一方で、世界の主要言語のキーワードが英語のままなのは、技術的必然ではなく歴史と慣習です。あなたはいま、その慣習を3分で破る装置を手にしています。
にわ語の、正体
ここまで読んだあなたには、もう見えているはずです。
コース1であなたが最初に出会った言語——まる を かく のにわ語。日本語のキーワード、もし 〜 ならば の文法、日本語で困りごとを伝えるエラー。あれは、いまあなたの手の中にあるのと同じ仕組みで作られた言語です。 粒に分けて、木にして、意味にする。キーワード表が日本語で、意味の側に「タートルを進める」「円を描く」が置いてあるだけ。
コース1のレッスン1で、あなたは「まる を さんかく に変えて」と言われて、1語を入れかえました。コース2の最後にあなたがやったのは、言語そのものの語を入れかえること。あの日の操作と今日の操作は、相似形です。庭の入口で蒔かれた種は、ここで花になります。
文法を決める、ということの重さ
最後に、ひとつだけ静かな注意を。表記は自由に決められますが、読み手のいる場所では、表記は約束になります。
if を もし にすれば日本語話者には読みやすく、世界の大多数には読めなくなる。while を w にすれば打つのは速く、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の「方言と構造」の実装的証明
- にわ語の正体:この仕組みでキーワードを日本語にし、意味の側に描画を置いた言語
- 表記の設計は、言語のすべての使い手への手紙。自由には読み手がついてくる