2012年4月30日

コンピュータの構成と設計

通称「パタヘネ」を読んでいます
内容の半分くらいは大学で習ったことで、あとの半分は薄々知ってはいたけど本当はどうなっているか想像でしか知らなかったことですね
内容は低レベルな話でプログラム格納方式のコンピュータがどうやって計算を行っているかの話
MIPSの命令セットを例としてC言語のプログラムがどうやってマシン語になるかとか、コンパイルする際の最適化についても記述されています
今の時代(2012年)はもうこんな最適化はやらないけど知識として知っているといいプログラムが書けるようになると思います
スタックの説明、リンカの説明がもう少し詳しくてもいいかなと思いました

まあそれにしてもこの本に載っているようなことを誰かが考えてくれたおかげでコンピュータが簡単に利用できるようになってるってことに感謝ですよね

2012年4月26日

驚きの連続

驚きと言うかここまでくると逆に呆れてしまうほどにマクロはスゴイ
すがすがしいですね
なんか手品でも見ているよう
コードの魔術師って感じですね
やってることって全然簡単というか初歩も初歩関数呼び出すだけだったり制御構造の条件分岐だったりするだけなのにこの力の差を見せつけられた感じはなんなんだろうか
プログラミング言語は最初にCommon Lisp習うのがいいんじゃないのかな?
C言語習うより身になるんじゃないのかなと思う
Common Lisp習いたかったよ
FortranやBasicなんかやってる場合じゃないよね

2012年4月25日

マクロは

On Lispを読んでいるんですけど、この本に載っているマクロはどれも短いものばかりで単純なプログラムとしてみるだけだとなんてことないような気がするのだけどやっぱり難しい。
コンパイル時に置き換えられた後の形を思い浮かべてさらに実行時にどうやって実行されるか考えないといけないので負担が多すぎる。
慣れてくると、一歩すすむと、このコンパイル時と実行時の挙動の理解があっさりできるようになるのだろうか?
ポールグレハム級になってくるとマクロも空気のような存在になっているのか不思議でしょうがない。
でも普通の人、プログラムとか全然やったこと無い人にとっては普通のプログラムでも理解するのが難儀なので俺もそのうちマクロが難なく理解できるようになる日がやってくるのだろうか。
マクロをいちいち理解しようとすると全然読み進まないです。
On Lispに載っている例はマクロじゃなければ、全てのプログラムはすごく簡単なものばかりなのだけどマクロになると途端に抽象度が上がって難易度がグンと跳ね上がるな。

「マクロを定義するマクロ」なんて正直、もうついていけないのだけど。
落ち着いて一つ一つ分解していけばなんとかなるけどメチャクチャ時間がかかるのだよね。
難しい。