2008-12-17

昼からRuby

昼からRuby*1. 素材は,アセンブラ*2. 実験で使うのだ. こういう場面で,Geek*3魂が燃えるぜ(笑)

torachiさんは,Perlで書いたらしいが, ここは勉強も兼ねて私はRubyで. Rubyは,前々からやってみたいな〜と思っていたので,ちょうどよいきっかけになった.

最初は,勝手が良く分からないので,Perlですればよかったかなと思ったけど, ググりながら,すると慣れてくる. 久しぶりにブロック囲みに{}を使わない言語*4だ. Basicもこのタイプなので,なんだかな〜と思っていたが, いざ,やってみると,インデントをしっかりすれば,意外と問題は無い. そう考えると,Pythonの考え方もいいかもね,と思った.

感想としては,まぁまぁ便利. 慣れれば更に便利になると思う. オブジェクト指向のスクリプト言語ということで, 例えば,10進整数から16進数文字列の変換は

12.to_s(16)

と書き,最初は戸惑うけど,慣れると結構使いやすい.

i++

みたいにインクリメント演算子が(あえて?)ないのは不便だが.

ファイル出力は

out = File.open(ARGV[1],'w')
out.write sprintf("hoge %d" , i)
out.close

みたいに行う. ここはPerlより優れていると思う. メソッドで書くので,Perlのファイルハンドラでするより見やすい. オブジェクト指向のいいところだね.

これから,Rubyで開発していってもいいかな〜と思った.

*1 プログラミング言語の一つ.ここ数年で(私が)よく耳にするようになってきた

*2 アセンブリ言語を機械語に変換するもの.コンパイラに比べて,作るのには然程苦労しない.

*3 コンピュータ関係のことには(時には無駄なほど)異様に頑張る人

*4 ごく一時期授業で触ったMLを除く.関数型言語は好きになれない……

アセンブラ

実験で,みんな使いたいだろうと思うので, asm2bin.rbを公開します. 入力サンプル出力サンプル. PuTTYで演習室の適当なマシンにログインして,

ruby ./asm2bin.rb in.asm out.bin

とすれば,使えます*1

ライセンスは,2009/3/31まで*2は著作権法の例外を除き,使用のみ許可します. 以降はSOL(Shirayu Original License)またはGPLv3とします.

なお,バグが潜んでる可能性があるので注意して,最新版を使ってください. 指摘は歓迎します.

*1 まだ使ってないけど(^_^;)

*2 6セメが終わるまでってことね