ようやく出版まで漕ぎ着けました。準備を始めたのは昨年の6月です。ちゃんとした原稿になったのが1月半ばでした。
Pythonでインタプリタを作る コンピュータ言語を設計・実装してインタプリタの動作を理解しよう (OnDeck Books(NextPublishing))
- 作者:吉田 節
- 発売日: 2021/02/26
- メディア: オンデマンド (ペーパーバック)
s = 0 for i in range(1, 101): s += i print(s)
電卓みたいに、1+2+……とキーを人間が押して計算するのとはわけが違います。上のようなテキスト、要するに文書をパソコンに渡すだけで合計を計算させなければなりません。初めてだと一体どうやって計算させればいいのか、見当すらつかないはずです。もちろん人間がさせたいことは1から100までの和の計算だけではありません。三角関数の値を求めさせたり、5次方程式の解を(解の公式はありません)数値計算させたりもするのです。そういう言語をどうやってつくるのでしょうか。思いつきでは無理です。必要な勉強をして、ちゃんと設計して、……と時間をかけなければいけません。出版した本では、言語をどうやって作るのか解説しました。
今まで何回かそういう言語を作っています。今回は初めてPythonを使いました(言語自体も何かの言語で書くのです)。「本にするぞ!」と最初から考えていて、言語の作成と並行して原稿を書いていました。企画が採用してもらえる保証などありませんでしたが、「Pythonで自分の言語を作る」という内容の本は見たことがありません。Pythonを使う人たちは今は多いですし、その中には言語をどうやって作るのか知りたい人もそれなりにいるはずで、一定の需要は必ずあるはずだと思いました。
本にしようと思った理由がもうひとつあります。どうやって言語を作ったらよいのか、自分が後で読んですぐ思い出せるようにまとめておきたかったということです。人間、弱いもので、外からの強制力というか、「どうしてもやらなければならない」という状況がないとなかなか大きな仕事はできません。レベルは全然違うのでしょうが、数学者ワイルズの話があります。
ワイルズはフェルマーの最終定理を証明しました。秘密裏に研究を進め、結果が出て「これでよさそうだ」と考えましたが、同じフロアの同僚カッツに証明が正しいか確認してくれるよう頼みます。それについてカッツは「これだけの長い証明だと、きちんとした講義の計画を立てることが必要」というようなことを言っています。大学院の授業としてタイトルも決め、カッツ以外にも学生に受講させました。ワイルズもそういう状況だと自分の頭の中を整理し、他人に分かるように、と考えることになったでしょう。この本にありました。
予想外に大変だったのが校正と、索引作りです。校正は精神的にきつかったです。索引は、ないと読む人が困ります。しかしあっちにもこっちにも出てくる単語だってたくさんあります。例えば「変数」など、全体では何百も使っているでしょうが、全部を索引に載せるわけにはいきません。「ここは載せる」、「載せない」といちいち判断しなければならないわけです。
説明は徹底的に分かりやすくしたつもりです。人によって分からない点は様々ですからどこまでうまくいっているかは分かりませんが、自分が引っかかったところは重点的に解説しました。まあ終わってよかった。ちゃんと本の形に残せたし、読んで自分の言語を作る人もいるでしょう!!
まだいくつか、書きたいテーマはあります。頑張ってみます。