pythonでヒュッケル法

化学系だったら一度はコードを書いたことのあるヒュッケル法による軌道エネルギー計算はPython/Numpy/Pybelを使うと200行ぐらいで書けるヨというエントリをみつけた。

FORTRANだとこんな感じ。

SICP 4章斜め読んだ

遅延評価とか継続とかambとか。

ちょっとついてけなくて、問題も解かずにとりあえずざっと読んだ感じ。一度立ち止まって色々調べてもう一度戻ってくる。あと、知ってる言語での実装も追いかけながらきちんと理解する。

あと5章の意義がいまいちわからん。レジスタ計算機を実装するとどういいんだろう?そこまでわかってないと継続とかきちんと理解できなさそうだっていうのはなんとなく感じるんだけど。

(4章とかを)わかっているから、5章を読むことでさらに理解が深まるという章なのではなかろうかと。

かぶれ気味かなと思いつつも、指が勝手にOn Lispを注文した。

ProductName On Lisp―Advanced Techniques for Common Lisp
Paul Graham
オーム社 / ¥ 3,990 (2007-03)
通常24時間以内に発送

検索力のこと

僕はスキルアップに重要なのは結局のところ、

  • 何がわからないのかをわかる能力
  • 検索力(知りたいことを知る術)

に尽きるんではなかろうかと思ってイル。

検索力を広義に解釈すれば、知りたいことを知ってるヒトに教えてもらうという能力もリッパな検索力だろうなぁと思うような事があったので、そのとき考えたことをメモっておく。

教わるという行為は結局のところ、教える側に委ねられてるわけで、ヒトの知識とかノウハウをたいしたコストなしにもらうわけだから謙虚さが必要だ。だから、ヒトに教えを受けている最中なのに、ちょっとかじったぐらいの知識で「それは知ってる。むしろ僕の知りたいことは云々」とかいって話の腰を折ることを繰り返したりすれば、教えるほうも嫌になるだろうし、「ググれば君ならわかるから大丈夫!」なんて切り替えされるようになったらスキルアップの機会的に大きな損失だ。

「それは知ってる。むしろ僕の知りたいことは云々」と言いたくなる、つまり自分の期待している答えが返ってこない事自体、本人の問い合わせ能力の低さを露呈しているだけか、そもそも問い合わせるべき人間を間違えている(検索先を選ぶ能力が低い)のではなかろうか?と自問自答してみる必要があるだろう。

「ちゃんと教えてくれたら3分で済んだのに、ググって調べなきゃいけなかったので調べものに3時間かかった」は、 「検索能力が低いので3分で済むはずの仕事に3時間費やした」 と言い換えてもいいだろうし、「教わればわかる」というのは裏返せば「教わらなければわからない」だ。

そういう論理でいけば、教える側に

教えなきゃわからんやつは教えてもわからん

なんてのは十分アリかなとか思った。

キーボードの-が遠すぎ

マイナスたたくとき右手の小指を少し伸ばすので打ちまくると指がつりそうになることがあるんだけど、単にストロークポジションが悪いだけなのか?なんか指が寝気味なだけの気もするが、、、

Text::CSV::Simpleでピボット

単純なピボットがしたかった。

use Text::CSV::Simple;
my $file = shift;

my $parser = Text::CSV::Simple->new;
my @list = qw/cl1 cl2 cl3 cl4 cl5/;
$parser->field_map(@list);
my @data = $parser->read_file($file);

my $pivdata = {};

for my $d (@data){
 for my $label (@list){
   push @{$pivdata->{$label}},$d->{$label};
 }
}

for my $label (@list){
 print join ",", @{$pivdata->{$label}};
 print "\n";
}

google videoのgvp形式のダウンロードがない?

SICPの4章とか読み始めたらDSLが気になってきてJesse Vincent - Abusing Domain Specific Languages for Fun and Profitをちゃんと見ようと。

で、気付いたんだがgoogle video playerってどうなっちゃったんだろうか?

まぁいいかってことで、mp4で落とそうとすんだけどなぜか10Mぐらいでこけてしまう。

Meadowの設定リロード

WEB+DB PRESS Vol.40を読んでいたら、長年の疑問が解決した。

ProductName WEB+DB PRESS Vol.40

技術評論社 / ¥ 1,554 (2007-08-24)
通常24時間以内に発送

M-x eval-buffer

で.emacsのリロードができる。 いままでやり方がわからなかったので不本意ながら再起動してたという、、、

メタモはlisp

ちょうどSICP3章読み終えたところで、これからメタモだ。すぐそこなので夕方出て行って朝帰りするわけだが。

タイムテーブルをストリームと捉えつつ、solar,lunar,planetのストリームを混ぜ合わせることで、新たな僕の狂喜乱舞なストリームが構成されるわけですな(無限ストリームだと嬉しい)。

というわけで、メタモはlisp、僕のSICPの3章と4章の間にはメタモルフォーゼの章がある。

SICP 3章終了

サケダメ宣言が出されたので、夜な夜なお茶を飲みながらSICP。あと、最近また電車通勤しているので毎朝SICP。

そんなわけで、3章も順調に消化。というか最後のほうはわかんない問題が多くて端折ったけど(3.60くらいから華麗にスルーした)。

特に無限ストリームと遅延評価のところを読み終えてクロージャってものに対する認識がちょっと変わったかも。

いままでは、オブジェクトは関数を保持したデータ、クロージャはデータを保持した関数なんて理解してたんだけど、今はクロージャは環境を隔離して時を止めたものみたいな感覚で接している。

そんな今ではλ萌え - たらいを後回しが面白く読めた。

無限ストリーム

yesコマンドみたいにひたすらyが出力される無限ストリーム

(define yes (cons-stream 'y yes))

SICPの3.5面白いけど、本の写経だとcons-streamが実装できないので手を動かす時に魅力が半減するよな。というか、ここまでくるとどうしても動かしてみたいでしょう。

ググって、真の写経(マクロ分からんが)、実行してみる。

gosh> (define yes (cons-stream 'y yes))
yes
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y