2018年08月12日

Go言語で作るインタプリタの献本をいただきました

オライリー・ジャパンの最新のGo本のGo言語で作るインタプリタの献本をいただきました。ありがとうございます。

本書は海外では出版社を通して出版されていないWriting An Interpreter In Goの日本語版です。誤解している人がかなり多いので捕捉しておくと、オライリー・ジャパンの本の多くは、USオライリーの本ですが、たまに別の出版社の本の翻訳があったり、描き下ろしもあります。別の出版社だと有名なのは退屈なことはPythonにやらせようで、描き下ろしだとゼロから作るDeep Learningや、僕の書いたReal World HTTPとかがあります。

本書の翻訳はとても読みやすく、どんどん読み進めることができました。翻訳の設楽さん、お疲れ様でした。

言語を作りたい人、かつて作ろうとした人も

原著は「短いページ数で実用的な言語を実装する」というのを目標に書かれています。本書のサンプルのmonkeyはどこかで見たような要素が満載の、RubyのようなJavaScriptのような言語で、前置演算子や優先順位にきちんと対応した数式、変数、if文、関数、return文を持った言語です。型も、整数、bool、nullに対応しており、4章の拡張では組み込み関数、文字列型、配列、ハッシュも実装します。お気に入りの言語風の文法を実装したい!と思っても(例えばループとか)、十分に基礎が解説されているため、応用をするのはやりやすいと思います。

プログラミング言語の要素というのは単純な単方向グラフにならず、要素が巡回するので、いくらテスト駆動開発の達人だろうが、スモールステップで開発するのが難しいジャンルのアプリケーションです。この本は動くものをどんどんスモールステップで作っていくので、非常にストレスが少なく楽しく作れます。この本はテストコードを書き、インタプリタのコードを書くというのを交互に行っていきます。

僕も、かつてFlex/Bison本を読んで、実際に趣味でインタプリタを作ってみたり(Ruby on Pythonとか)、数式パーサ(Excelのセルの数式の)を作ったりしたことがありますが、途中でずっとテストがグリーンにならない期間をずっと過ごしたり、なかなか動かなくてヤキモキして、苦しみを乗り越えてようやく動く、みたいな感じでした。本書ではうまい具合に「ここはTODOを書いて雑な実装でまずはパスして、あとで戻ってきて修正しましょう」ということが書かれています。こういう設計の分解方法はボトムアップじゃなかなか到達できなくて、熟練の業なんだろうなって思います。かつてコンパイラやインタプリタの本を読んだことがある人にも、目からウロコだと思います。僕はウロコがいっぱい落ちました。

言語を作りたい以外の人にもおすすめ

続きを読む
posted by @shibukawa at 18:29 | TrackBack(0) | 日記 はてなブックマーク - Go言語で作るインタプリタの献本をいただきました
検索ボックス

Twitter

www.flickr.com
This is a Flickr badge showing public photos and videos from shibukawa.yoshiki. Make your own badge here.
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
最近の記事
カテゴリ
過去ログ
Powered by さくらのブログ