Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

全演算子をJIT化

タイトル通り全演算子JIT化できました。

ちょっとテストが足りていないので、バグがあるかもしれませんが、多分、大丈夫だと思います。

あとは山ほどあるキャストをJIT化していきます。

見るだけでゲンナリするほど量がありますが、少しずつ進めたいと思います。

 

あとはVIRTUAL_METHOD_CALLやDYNAMIC_METHOD_CALL辺りが山場かなと思います。まあ、単にCの関数を呼び出すだけになりますが。

 

とりあえずは、今日も晩酌して、全演算子JIT出来たことにほっとしてます。

 

LLVMについてですが、学ぶにはやっぱり検索エンジンが頼りになります。特にStack Over Flowで引っかかるページにはお世話になってます。書籍についてはですが、狐さんは買ったのですが、バージョンの違いもあり、読んでません。結局バージョンアップの速度が早すぎて書籍は陳腐化するのがLinux界隈やプログラミング界隈だと思います。書籍で学ぶには新刊を買ってからすぐ読むしか無いですね。そうしないと、すぐにバージョンが変わってしまい、内容が古くなってしまいます。結局のところコーディングするのに一番大事なのは英語力だというのが僕の持論です。何かフレームワークや言語を学ぶためには本家のマニュアルやチュートリアルを英語で読むのが一番確実だと思います。LLVMではKaleidoscopeというLLVMチュートリアルで説明されている実装が最初の取っ掛かりとしては良いんじゃないでしょうか。後は検索しながら書いているうちにここまで来ました。

 

LLVMについては英語だと書籍が一杯あるでしょうし、やっぱりプログラミングするためには英語が読めることが大事じゃないでしょうか。書籍や文章が日本語化された頃にはバージョンが変わっていて困ることになると思います。

 

でも、僕自身英語が得意かといわれれば、全然そうじゃなくて、ほんと困ってます。ソフトウェアは生き物なので、仕様がどんどん変わっていくものなので、今度始まるコーディングの義務教育化でも、先生方は困ると思います。取っ掛かりは教えることが出来ても、結局英語のマニュアルを自力で読んで自身で学んでいくしかないんじゃないでしょうか。

 

僕も英語がもっとできたらなといつも思っています。皆さんもそうじゃないではないですか?