Webで動く簡易コンパイラをつくってみた|「言語は自分でつくっていい」と気づいた日

目次

Webで動く簡易コンパイラをつくってみた

プログラミングというと、多くの人は「すでに用意された言語を使うもの」だと考えます。 文法は決まっていて、書き方は固定されていて、「合わない」と感じても、どこかで折り合いをつけるしかない。

けれど、あるときふと「ここ、書きにくいな」「こう書けたら楽なのに」と思った瞬間、 それを“仕方ない”で終わらせる必要は本当にあるのだろうか、と疑問が湧きました。

今回つくったのは、ブラウザ上で動く「簡易コンパイラ」です。 テキストエリアにコードを書き、ボタンを押すと、その場で実行され、結果が表示される。 それだけの、とても小さな仕組みです。

しかし、その小さな仕組みが、「言語は自分でつくっていいものだった」という感覚を、はっきりと与えてくれました。

実際に触ってみる

この記事の中に、実際に動く簡易コンパイラを埋め込みました。 左にサンプル、中央にエディタ、右に出力があります。

あわせて読みたい

そのまま Run を押してもいいですし、中央のコードを書き換えても構いません。

ここには、次のような最小限の機能があります。

  • 変数の代入
  • 条件分岐(if / else)
  • 繰り返し(while / for)
  • 数値や文字列の計算
  • print a 形式の出力

文の終わりは改行でも「;」でもよく、print a のように、言葉に近い形で書けます。 「正しさ」よりも、「考えを書きやすいか」を優先した設計です。

基礎解説:簡易コンパイラとは何か

この簡易コンパイラは、本格的な処理系ではありません。 裏側では、JavaScriptで次のような処理を行っています。

  • 入力されたテキストをトークンに分解する
  • 文法として解析し、構文木をつくる
  • その構文木を一つずつ評価して実行する

つまり、「言語を解釈して動かす」という最小単位の仕組みを、すべて自分で書いています。

その結果、文法は固定されたものではなくなります。 「ここは改行で終われた方がいい」「この命令はカッコを省きたい」 そう思えば、コードを書き換えるだけで、言語そのものが変わります。

言語が“与えられるもの”から、“編集できるもの”へと変わる瞬間です。

応用・背景:不満は設計に変えられる

私たちは日常的に、ツールに対して小さな違和感を抱きます。

  • この記法、回りくどい
  • もっと直感的に書けたらいいのに
  • なぜ、ここでこう書かなければならないのか

普通、その違和感は「愚痴」で終わります。 「そういうものだから」「自分が慣れるしかない」と。

けれど、簡易コンパイラを自作してみると、視点が変わります。

違和感は、「修正可能な設計」になります。 合わないなら、変えればいい。 なければ、つくればいい。

言語でそれができると気づくと、 UIやアプリ、作業環境そのものに対しても、同じ視点が持てるようになります。

世界は固定されていない。 自分の思考に合わせて、書き換えていい。

社会的意義・未来:思考の道具を自分で持つ

この簡易コンパイラは、学習用ツールでもあり、実験場でもあります。 しかしそれ以上に、「思考の道具を自分で持てる」という感覚を与えてくれます。

考えたことを、その場で書き、すぐ動かし、結果を見る。 その循環が、ひとつの画面の中で完結する。

それは単なる便利さではありません。 「考え」と「現実」の距離が、ぐっと縮まる体験です。

将来、この簡易言語に、

  • repeat 10 { ... }
  • sleep 1
  • rect x y w h

のような命令を足していけば、 それはやがて、「自分のための言語」になっていくかもしれません。

まとめ:言語は“使うもの”から“育てるもの”へ

今回つくった簡易コンパイラは、とても小さなものです。 けれど、

  • 考えたことを書ける
  • すぐ動かせる
  • 結果を確かめられる

という、言語の核はすでに揃っています。

ここから先は、「完成」を目指す必要はありません。 書いていて不満を感じたときに、少しずつ変えていけばいい。

言語は、与えられるものではなく、育てるもの。 この簡易コンパイラは、そのことを静かに教えてくれました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次