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

インテル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 

ふむふむ。

SICP5章 schemeでレジスタ計算機を模倣する

ずっと5章に興味が持てなくてほったらかしにしていたのだけど、読み始めた。5章は毛色が違うように感じてたのと、単に関数型言語が知りたいだけだったら3章までで満足できて、計算機の話って何が面白いんだろうか?なんて思ってたのだけど、(僕の場合)以下のような道のりを経て5章にたどり着いた。

EsoteicでVMとかエミュレータみたいなもんに興味がわいた。あと中間言語

Bolicとか。そういえばゲノム言語とかつくったみたな。

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()


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

Cのプログラムをアセンブリから眺めてみる。レジスタとかメモリとか意識できるようになった。

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


CPUの創りかた

4bitCPUつくる。半加算器とか全加算器が論理回路でつくれるとかそういう話は楽しい。

ProductName CPUの創りかた
渡波 郁
毎日コミュニケーションズ / ¥ 2,940 ()
在庫あり。

SICP5章

という長い道のりを経て、やっとSICP5章。

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン
ピアソンエデュケーション / ¥ 4,830 ()
在庫あり。

数日かけてバグとって、実際にGCDマシンが動いた時にはかなり感動。

gosh> (set-register-contents! gcd-machine 'a 206)
done
gosh> (set-register-contents! gcd-machine 'b 40)
done
gosh> (start gcd-machine)
done
gosh> (get-register-contents gcd-machine 'a)
2

デバッグしながら中身の動きが理解できた。

立体ピクロス

欲しいんだけど、買ってもどうせやらないんだろうな。

ProductName 立体ピクロス

任天堂 / ¥ 3,800 (2009-03-12)
在庫あり。

最近ゲームから遠ざかっているので、子供がやりそうとかそういうおまけネタがないと買わないんだよなぁ。3歳児には立体ピクロスは難しすぎるかなぁ。

2x2のルービックキューブも買ったものの、遊ばれるようになるのを待っている状態。

ProductName ルービックの2×2 キューブ(CUBE)

メガハウス / ¥ 1,260 (2002-03-20)
通常5~6日以内に発送

まぁ2x2は自分でやって面白いからいいんだけど。

Natural Language Processing With Python

気になる

ProductName Natural Language Processing with Python
Steven Bird
Oreilly & Associates Inc / 4502円 ( 2009-06-30 )


Arduino届いた

まだいじってないけど。

1238498486 1238498493

基盤の背面に描かれたイタリーがイカす。あと、思ってたより小さかった。

ProductName Arduino Duemilanove 328

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


コンパイラの理論と実現

安く感じたので買ってしまった。

送料込みで1K円

open accessやばい

製薬会社だと、会社に縛られる要因ってのは

  • 会社にいないと実験できない(設備の関係)
  • 会社でないとディスカスできない事柄(社内的なノウハウ)
  • 論文の量(知識の吸収)

最初の設備に関してはコンピューター系にとってはもう関係ない。むしろ自宅のマシンで小さいサンプルのコードを動かして、会社のクラスタではrunするだけみたいな。職場というのは、スケールとデータの違いのみ。

二番目も、ディスカスなんて週一でいいし、社内でするより社外でのつながりを重視したほうが得るものが多い。社外で得た情報やアイデアの中から会社にとって良さげなものを選別してコミットしとけば良いような。結局、会社は共有レポジトリみたいなもんで、pushとpullしに出かけていくところ。そしてpullの頻度が出社の頻度なのが理想。得るものがなければpushだけして帰ればいいんじゃないの?それが裁量労働+成果主義のあるべき姿だと思うけど。

(研究者として)会社に縛られる最大の要因が、論文アクセスだ。他人の知識を書物として吸収できるのは重要だが、会社の資産故に外部との議論に使えない。しかし、オープンアクセスになったら気兼ねなく意見をブログに載せられるし、横のつながりも増えるだろう。現実に、open accessの論文をもとにディスカッションするのが一番盛り上がるし。

とか考えると、会社のこじんまりとしたキャリアパスとかアレだよね。SOHOとかベスト