まつもとゆきひろ『まつもとゆきひろ 言語のしくみ』(日経BP社)を読了した。まつもとはコンピュータ言語Rubyの作者として非常に有名である。この本は、新しいコンピュータ言語を実際に設計し、実装していく過程を本にしたものだ。

「プログラミング言語を作る」というテーマの書籍はたくさんあります。私の家の本棚にも何冊も並んでいます。
これらの「プログラミング言語を作る」系書籍のほとんどはプログラミング言語の実装について取り扱っています。例えばyaccやlexというツールをどう使って構文解析器や字句解析機を作るかとか、インタープリタをどのように実装するかというようなことを、サンプルとして比較的単純な言語の実装を通じて解説しています。(3ページ「はじめに」)

ところがこの本は新しい言語をどのように設計していくかに重点が置かれており、非常に珍しい。まつもとはRubyという世界中で広く使われている言語の設計者であり、さらに言語オタクを自認している。このような本を書くにはまさに適任だ。

本によると、彼は1980年代初頭、まだ鳥取県在住の高校生時代にコンピュータに興味を持ったが、当初からプログラミング言語に興味を持っていたという。

まだコンピュータを個人で所有しておらず、ろくに自分でプログラムを書けない頃からなぜだかプログラミング言語の方に関心があったのは不思議なことです。(44ページ)

当初はmrubyという組み込みシステム向けの軽量なRuby言語処理系を改良しようと考えていたそうだが、結局はまったく新たな言語を設計することになった。数値データの種類、文字列の実装法などを、文法のわかりやすさ使いやすさと、処理の高速性やメモリ消費とのバランスを考えながら設計していくので、大変面白かった。言語の設計から考えることで、既存の言語に対する理解も深まった。

作成された言語は「Streem」と名付けられている。ただ、私は手続き型言語に馴染みすぎていて、関数型言語の影響を強く受けているStreemによるプログラミングが理解しにくかった。もっとも、まだ完成していない言語であり、自分で使ってみることもせずに本を読んでいるのだから、イメージが湧きにくいのは当然かもしれない。だが、私は自分の思考過程そのものが、手続き型になっていることを実感したのだ。別の形式の思考過程をなぞることに非常な困難を感じた。自分の思考過程が柔軟でないことを自覚したと言ってもいい。

関数型言語については、LispやPrologはかじったことがあるものの、HaskellやOCalmは名前しか知らない。そのような言語を少しでも使ったことがあれば、もう少し実感を持って読めたのかもしれないし、私の思考過程ももう少し柔軟になっていたかもしれない。