インターネットはスクリプト言語なしには動かない
Webのオンラインショップで、マウスポインタが何気なく商品写真に触れると、その商品の説明がマンガの吹き出しのように表示されることがありませんか。多くの場合、そういう表示は、JavaScriptというスクリプト言語で作られています。ほかにはPHPもありますね。CPUやネットワークが貧弱だった時代は、複雑な動きをするWebは作れませんでしたが、今は処理能力の高いCPUと廉価なメモリ、そして高速回線が当たり前になってきたので、オンラインショップも凝った作りこみをして、顧客を誘います。人間にとって使いやすいWebを作るには、スクリプト言語が必要で、多くのWeb開発者にとって身近で当たり前のものになっています。
スクリプト言語の作り方を学ぶには
そんなスクリプト言語ですが、自分で作ることができます。誰か頭のいい人が作ってくれた……というわけではありません。Java VM(仮想マシン)上で動くgroovyというスクリプト言語がありますが、本書ではJava VM上で動くスクリプト言語「Stone」を作ります(まつもとゆきひろさんのスクリプト言語「Ruby」にインスパイアされたネーミングです)。大学の情報処理学科などでは、授業で教えてくれるところさえあります。スクリプト言語を作るということは、その言語が動く処理系を作るということです。処理系とは、つまりインタプリタやコンパイラです。c言語ならばコードを書いて、コンパイラで実行形式のプログラムを作りますが、まさにその処理の過程こそが本書で解説しているテーマです。
言語を作りでホンモノの基礎を学ぶ
言語処理系を作るのは、かなり高度に見えますが、本書では2週間と5日間で達成します(もともと企画の目的が大学の半期授業で終了する設定なので……)。それだけ定番的な科目といえます。しかし、インタプリタを作るには、調べなければならないことが、少し考えただけでもたくさん挙げられると思います。たとえばトークンを分析し、構文を解析し、関数を使えるようにしたり、オブジェクト指向に対応させたり……。つまり総合的にコンピュータを学習することが必要なのです。その代わりに学習し終えたら、プログラミング言語が必要とする要素が隅々までわかるようになります。まさに根底からコンピュータを理解する体験ができるのです。言語を使うだけのプログラマから、作り出せるプログラマになりませんか!