Christian Wimmerさんの"Linear Scan Register Allocation for the Java HotSpot™ Client Compiler"、約110ページを読み終えました。
http://www.christianwimmer.at/Publications/Wimmer04a/Wimmer04a.pdf
オーストリアのヨハネス・ケプラー大学での修士論文のようです。
なぜ読んだのか
Javaの新しいJITコンパイラであるGraalを理解を深めています。しかし、その過程でそもそもJITコンパイラ、翻ってコンパイラ自身のことをわかっていないとこれ以上進めないとわかりました。
かといって、コンパイラの教科書のようなものから読み始める(ボトムアップ)より、JavaのJITコンパイラに特化したものが読みたいと考えました。こういった書籍も日本語ではありますが、検索してみると上記の論文が出てきて、少し読んでみるとわかりやすかったので最後まで読むことにしました。内容の理解もさることながら、専門的な英語論文を読めるのかどうか、自分を試したかったというのもあります。
私は文学部哲学科哲学専攻ですので、コンピュータ科学系の論文を読んだことは日本語でもありませんでした。
どう読んだのか
読みながら辞書を使うことは1度もありませんでした。知らない単語も出てきますが、大意は取れるのでその単語に対してイメージだけして読み進めます。何度も出てきた知らない単語は覚えておいて、適当なタイミングで調べました。
少なくとも今回の論文に関しては、難解な文章ではなく、通常の技術文書を読んでいるときと変わらなかったです。
読んでどうだったのか
非常によかったです!今後も論文を読みたいと思うほどでした。この論文は公開されていて無料で読めましたが、すべての論文がそうではないようです。いくつか読みたい論文を検索しましたが、たいていACM Digital Libraryにあり、料金を支払って読むもののようです。
"Trace-based Register Allocation in a JIT Compiler"という論文が読みたいのですが、ACMのメンバーでない場合1論文で$15(1800円)。安くはないですね…
論文を読むなんて自分にはできないこと、大学や大学院でコンピュータ科学をしっかりやった人が読めるものという劣等感バリバリのイメージでした。僕にも普通に読めて、1つ殻を破った感じです。何よりこんなに読んで楽しいものと気づけたことは、今後のエンジニア人生にいい影響を及ぼせそうで、それが何よりうれしいです。
探すと無料で読めるものも出てきたので、書籍と交互にでも論文を読みます!