LLVMによるプログラミング言語の実装チュートリアル日本語訳
第1章 万華鏡: まえがきと字句解析器
第1節 まえがき
“LLVMによるプログラミング言語の実装”のチュートリアルへようこそ。
このチュートリアルでは、”どのくらい楽しく、どのくらい簡単に出来るかを示すための”簡単なプログラミング言語の実装についてざっと説明する。
このチュートリアルは、他の言語を拡張出来るようフレームワークを構築したい方に対してもよい手助けとなるだろう。
このチュートリアルで出てくるコードは、他のLLVM特有の何かをハックするための遊び場としても使うことが出来る。
このチュートリアルのゴールは、我々の言語(言語を段階的に創り上げていく方法を説明するための言語)について少しずつ説明していく事である。
これによって、極めて幅広い言語デザインそしてLLVM特有の使い方について(大量の細かい情報であなたを圧倒する事なく、道筋に沿って)我々が説明する事を可能にする。
このチュートリアルは、現代的かつまともなソフトウェアエンジニアリング原則について教える事ではなく、コンパイラテクニックそして特にLLVMについて手っ取り早く知るのに有用である。
これは、演習では多くの手抜きを経て説明を単純化するであろう事を意味する。
例えば、コードはメモリリークを起こしたり、いろんな場所でグローバル変数を使ってたり、Visitorsパターン等のような良いデザインパターンを使ってなかったりするかもしれないが、しかしそのおかげでコードはかなり単純になる。
もしコードを深く研究したり、将来のプロジェクトの土台として使う場合、上記のような足りない部分を修正するのは難しくはないだろう。
すでに知ってたり興味がない部分を飛ばせるよう各章の簡単な説明をここに記してみる。
このチュートリアルの構造は以下のとおり。
チュートリアルを通して、700行弱のコード(空行やコメントを含めない)を書くことになるだろう。
この小さいコードによって、それなりに使える言語のための、とても合理的なコンパイラー(JITコンパイラによるコード生成をサポートし、お手製の字句解析器や構文解析器やASTを含む)を創り上げる事になる。
他のシステムでは面白い”hello world”チュートリアルがあったりする中、私が思うに、このチュートリアルの大きさは、LLVMの力を引き出すための、そして言語やコンパイラ設計に興味があるあなたがなぜ熟考しなければならないのかについての、やたら長い契約書のようである。
( While other systems may have interesting “hello world” tutorials, I think the breadth of this tutorial is a great testament to the strengths of LLVM and why you should consider it if you’re interested in language or compiler design.)
Hello World”くらいのチュートリアルしか持たないシステムもある中、このチュートリアルの幅広さは、LLVMの強みや、プログラミング言語やコンパイラ設計に興味を持つ人がLLVMを検討すべき理由を、よく示していると思う。
このチュートリアルの注意点:
我々は、あなたが言語を拡張し、自分自身で色々改造して遊ぶ事を期待している。
コードを受け取り好きなようにめちゃくちゃにしよう。
コンパイラは物凄いモンスターである必要はない。
言語で楽しく遊べるようにするためのものである。
ありがとうございます。大変参考にさせて頂いています。
下記の訳ですが、多少意訳入ってますが、こんな感じではどうでしょうか?
“While other systems may have interesting “hello world” tutorials, I think the breadth of this tutorial is a great testament to the strengths of LLVM and why you should consider it if you’re interested in language or compiler design.”
vvvvv
“”Hello World”くらいのチュートリアルしか持たないシステムもある中、このチュートリアルの幅広さは、LLVMの強みや、プログラミング言語やコンパイラ設計に興味を持つ人がLLVMを検討すべき理由を、よく示していると思う。”
ありがとうございます!
意味が通っててとても分かりやすい訳だと思います。
本文に追記しました。