module-starterで新しいモジュールを追加できるようにする

この週末から、Mooseでlispを実装してみるということをはじめた。もともとやさしい Lisp の作り方 by Java and by C#を見ながらeclipseでいじってたんだけど、コードが省略されてたり、ライブラリのコードがなかったりしたので、それだったら元のページを参考にしながらMooseで書いてみようかなと(ユニットテストとかもperlのほうが慣れてるし)。

module-starterはそのままではモジュールの追加ができなくて、どんどん新しいモジュールを足していく場合には不便なのでModule-Starterのカスタマイズを参考にモジュールの追加が出来るようにした。快適になった。

ProductName モダンPerl入門 (CodeZine BOOKS)
牧 大輔
翔泳社 / ¥ 2,940 ()
在庫あり。

MooseというのはMOPの上に乗っかっているのでLispの方向に向かっているのかなぁと思っていたのだけど、実際に書いてみると型の制約とかRoleとかはJavaっぽいなぁとも思った。

CLOSもガリガリ書いてみないとダメだなぁ。

からまんぼう

大山のからまんぼうというラーメンが気になるので食べにいってきた。

1238921359

麻婆豆腐がのったラーメンで、麺はワシャワシャで新トンコツと一緒かな。麻婆豆腐は山椒とかの香辛料が中華っぽくてモヤシと絡めると美味しいが、ジャンクフード度はかなり高め。

スープの底に溜まった香辛料が旨かった。

紀土(KID) 純米

酒のいわせで。

さっぱりとした口当たりで、すいすいいけてしまう。これが純米酒で1.9Kとはコストパフォーマンスが高い。気がついたら週末でほとんど飲んでしまった。平日は禁酒でもしようか。

1238836962

ただ、純米の割にはどっしり感がないというか。香り少なめな感じ

他にも久礼という銘柄が入ったようで、こっちも気になるところ。

シュウォッチ

次に1000円ぐらいの書籍を買う時には、シュウォッチで1500円超えを狙う。

ただいま650円くらい。

「さくら」と「はな」

ぶらぶらと花見を兼ねて散歩

1238836954

そういえば、犬の写真を撮ってないなぁと、帰ってきてからシャッター押した。

1238836958

ArduinoでLED点灯

とりあえずLEDを点灯させるサンプルを。

1238836947

arduinoは差すとこのカッチリ感がないので、接続されてるのかちょっと不安になる。

ProductName Arduino Duemilanove 328

スイッチサイエンス / ¥ 2,835 ()


ProductName Arduinoをはじめよう
Massimo Banzi
オライリージャパン / ¥ 2,100 ()
通常2~5週間以内に発送

プログラミングの力を生み出す本

インテルCPUのGNUユーザへ

ProductName プログラミングの力を生み出す本―インテルCPUのGNUユーザへ
橋本 洋志,松永 俊雄,冨永 和人,石井 千春
オーム社 / ¥ 2,625 ()


  • フラグの種類と役割
    • 符号付き制すのフラグ
  • array(%edi)はアドレス値$arrayに%ediを加算したアドレス値の内容にアクセス
  • retはcall分の次の命令にリターン
  • 引数の渡し方
    • レジスタ渡し
    • メモリ渡し
    • スタック渡し
  • 変数宣言
    • メモリ領域の確保
    • データに適した命令生成
  • メモリ内の構造体
  • 関数呼び出し
    • 引数をスタックにプッシュ
    • call命令を実行
    • 呼び出された関数はスタックの中を見ることで引数を使う

実用SSHを買った

分厚い

ProductName 実用SSH 第2版―セキュアシェル徹底活用ガイド
Daniel J. Barrett,Richard E. Silverman,Robert G. Byrnes
オライリー・ジャパン / ¥ 5,040 ()
在庫あり。

Poken パンダ

明日到着予定。

でも、まわりに持っている人がいなさそうなのが残念なところ。Fuji Poken Nightとかはないもんか、、、、

安西先生、ハイタッチがしたいです。みたいな。

このままでは、U隊長に一個贈って、家の中で名刺交換することになりそう。

parrotでGCD

schemeでレジスタ計算機を書いたら、次はparrotというレジスタ仮想機械、(そしてPerl6へみたいな。)

さて、ダウンロードしてきたソースコードについてたexamples/pir/euclid.pirというのがユークリッドの互除法のサンプルなのでこれを使う。

pirというのはParrot Assembly Language(pasm)よりも抽象度の高い言語らしい。

.sub 'example' :main
        $I1 = 96
        $I2 = 64
        print  "Algorithm E (Euclid's algorithm)\n"
e1:     $I4 = mod $I1, $I2
e2:     unless $I4 goto done
e3:     $I1 = $I2
        $I2 = $I4
        branch e1
done:   print "The greatest common denominator of 96 and 64 is "
        print  $I2
        print  ".\n"
.end

pasmに変換

parrot --output=euclid.pasm euclid.pir 

これで、アセンブリコードが吐き出されたので見てみる。

example:
    set I0, 96
    set I1, 64
    print "Algorithm E (Euclid's algorithm)\n"
e1:
    mod I2, I0, I1
e2:
    unless I2, done
e3:
    set I0, I1
    set I1, I2
    branch e1
done:
    print "The greatest common denominator of 96 and 64 is "
    print I1
    print ".\n"
    end 

ふむふむ。