2007-01-01から1年間の記事一覧

The Visual Display of Quantitative Information

"The Visual Display of Quantitative Information", Edward R. Tufte.「ソフトウェア開発者のための推薦図書」 http://www.aoky.net/articles/jeff_atwood/recommended_reading_for_developers.htm ほか、様々な分野で評価の高い、グラフ、表に関する名著で…

Common Lisp で巨大なテキスト処理

Common Lisp の read-line はばかでかいテキストファイルの処理に向いていない、という話。 http://lispuser.net/memo/lisp/2007-12-14-00-54.html http://www.emmett.ca/~sabetts/slurp.html read-char の繰り返しは論外、read-line でも遅い。小さいバッフ…

彷徨える舌/舞台

小劇団の舞台を観にいった。舞台はどうしようもなく不器用で孤独な、皮肉屋、インテリの主人公(座長)が、男運の悪い冴えないヒロインとすれ違う物語だった。わたしに言わせれば、わたしならもっとうまくあの役を演じる自信がある。まずあのようにシンプルに…

彷徨える舌/鎧

小劇団のクールビューティが言った。「台本があっても結局は人よ。鎧のように身を覆って構えても、本当の良さはそこには無いの」 わたしはそれを取るのに随分かかったわ、という。なるほど。きっとエンジニアも同じだろう。立場が上になって指示されてやるこ…

彷徨える舌/プロローグのような

わたしは日々の仕事に振り回されていた。もっと力があれば、と願いながら、むしろ計画なき忙しさ、かりそめの充実にささやかな満足を感じていた。 日々の仕事は慣性となってわたしを縛る。頂きの上の上を、憧れとともに眺めるだけなのか。ようやく山の高さが…

自然言語処理/講義資料リンク集

言語情報処理ポータル http://nlp.kuee.kyoto-u.ac.jp/NLP_Portal/ 講義資料リンク集 http://nlp.kuee.kyoto-u.ac.jp/NLP_Portal/lecture.html 講義資料のリンク集というのはとても良いと思う。自然言語処理以外にもないだろうか? mini-python 言語処理系演…

コンピューターの勉強

引き続きコンピューターの勉強中。手を動かすと理解した気分になってよろしい。よくよく考えるとはるか昔、学生のころコンピューターの仕組みは勉強したはずだが、 残念ながら勉強としてしかやっていなかったようだ。つまり意義も分からずにやっただけで、何…

国土地理院地図データ

地理情報標準プロファイル(JPGIS)なるものがあり、 http://www1.gsi.go.jp/geowww/globalmap-gsi/download/download.html から入手可能だが、いまどき Windows 対応のビューアーしかない。電子国土で見る「地球地図日本」 http://www1.gsi.go.jp/geowww/gl…

bf compiler/interpreter 改良

vm に対する命令セットを定義して、処理を分けてみた。上記のエレガントな回答に比べ、命令セットが多くて格好悪いが実力の差なのでとりあえず気にしないことにする。 incp, decp, incc, decc, putc 処理をしたあとプログラムカウンタを1増やす jmp 指定さ…

Brainf*ck(bf) Compiler

bf コンパイラーで、どう書くorg に Haskell のエレガントな回答があった。http://ja.doukaku.org/comment/3986/Haskell は入門書買ったきりでプログラムを読めないけど、それでもさすがと思わせる美しい構成。 このレベルになんとか近づきたい。上記の Comm…

Brainf*ck(bf) Interpreter

追記;以下のインタプリターはあまりに素朴すぎることに気づいた。静的に決まる情報をぜんぜん利用できていないのだ。 さらに悪いことに、インタプリターがすべき仕事とそれ以外ですべき仕事が明確に分かれていない。 いろいろな人のコードを見たつもりだっ…

局所的関係と再帰

「プログラミング言語 Lisp - 入門からマルチメディアまで」に、再帰についてとても良い表現があった。例はフィボナッチ数列。フィボナッチ数列の一般項、 (「数学ガール」でいうところの、「閉じた式」)には、フィボナッチ数列のすべての情報が含まれている…

レンタルサーバー(Sakura Internet)で WiLiKi を動かす(再び)

忙しくて放置してあったら、 WiLiKi が Sakura Internet のサーバーで動作しなくなっていた。 wiliki.cgi を直接実行すると、以下のエラーが生じた。 *** ERROR: Compile Error: Compile Error: failed to link "libcharconv" dynamically: /usr/local/lib/l…

レンタルサーバー(Sakura Internet)で Common Lisp を動かす

SBCL であれば、 http://www.sbcl.org/ より FreeBSD 用バイナリを入手する。

彷徨える舌/結婚に関する事実

結婚して分かった事実の一つだが、 クールで美しい嫁と言えども、すべての問題を解決してくれるわけではない。届いていないが知ってしまった世界との差を嘆くとき、 これから自分が進むべき道を考えるとき、 そのようなわたし個人の問題は、クールで美しい嫁…

SICP(1)

計算科学を勉強するにあたり、何度も挫折してきた SICP(計算機プログラムの構造と解釈)は避けては通れない。 いろいろなひとのSICPを読んだ記録を読んでいるうちに、だいぶ眺めることができるようになってきた。SICPは、ああ、全然まだ基本なのだ、という実…

自らの働く場は自分で決める、その思いからとある分野を選択した。 いろいろなことがあった。 せいいっぱい背伸びをして、あたらしいものに挑んだ。 眠っていたわたしには、目標をもって挑むことは楽しいことだった。 仲間と呼べる人間ができた。尊敬すべき…

調査中:ffi で C のライブラリを呼び出す

いまさらだが、ろくに C/C++ でコーディングしたことがないので、ステップバイステップでいく。 いつも参考にさせていただいている、 http://lispuser.net/memo/lisp/2007-08-08-23-53.html や、 id:rubikitch ははるかに遠い。C++ のライブラリを呼び出すの…

OpenBabel : C++ライブラリ+SWIG

化合物ファイル用の便利なコンバーター。 のみならず、C++ ライブラリとして perl や python から使用できる。http://openbabel.sourceforge.net/api/2.1.0/start.shtmlSWIG ってこうやって(速い言語でライブラリを作り、スクリプト言語がラッパーとして利用…

loop の使い方についての短いまとめ。

詳細は素晴らしくまとまっている http://smpl.seesaa.net/article/29800843.html loop マクロ用法抄を参照のこと。 C; for int i=0;i (loop for i from 0 to n ...) Perl; foreach my $x (@lst) { ... } 型 ;; "コレクション内繰り返し" (loop for x in lst …

Common Lisp マクロを書くときにおろそかにしてはいけないこと

他にも沢山ありそうですが、最初の方にひっかかったことを列挙。 シンボルが何なのか。変数名みたいなものと曖昧に思っているとつまづく。パッケージと関連していることを意識すること。 keyword がなぜ便利か、理解する。マクロを書いたパッケージと違うパ…

Common Lisp Loop マクロはミニ言語

loop マクロは、知れば知るほど繰り返し処理のためのミニ言語だということが分かってくる。最近覚えたのは、ループ内のローカル変数の使い方。 var x from n to m と書けば数列を生成するが、 to 以降は省略可能。ファイルを行単位で読みながら、行数を数え…

Practical Common Lisp: Parsing Binary Files(2)

この章をちゃんと読むと、プログラムの書き方の勉強になる。つまり、特定の問題を解くためにプログラムをだらだら書くのではなく、 汎用的なツールを作ってその上で具体的な問題を解く。 マクロや CLOS の使い方も重要だが、それは上記の目的のための手段に…

Practical Common Lisp: Parsing Binary Files

Practical Common Lisp の24章以降。 それなりに大きい例だが、とても勉強になる素晴らしい例題。ちゃんと追う。 特殊な問題よりも一般的な問題を解く defclass に展開されるマクロによるクラス定義 defmethod eql specifier による、型と関係の無いディスパ…

Common Lisp の情報源

自分用のメモだが何となくまとめてみた。Google で検索するとすぐ出てくるが一応。 Common Lisp の情報源(書籍) Practical Common Lisp, Apress.com (apress.com から PDF 版を入手可能。購入済みだが分厚く重たいので。) ANSI Common Lisp 日本語版 (同じく…

プロファイリング、最適化

最適化の楽しみについて。使いやすいプロファイルを取るツールがあって、時間に余裕があるとき、最適化というのは実に楽しい。これは Common Lisp を使うようになるまで分からなかった感覚だ。最適化しているときには(普通)仕様はかわらないので、純粋に技…

Allegro Composer

どうやら自分はオブジェクト指向システムとしての Common Lisp をちゃんと分かっていない、ということが分かった。Allegro Composer(http://www.franz.com/support/documentation/8.0/doc/composer.htm , 無償版では使用できず)では 動いているシステムでの …

おっさんとしての感想

まず最初に、あのような場をゼロから作り上げた関係者の皆さんに敬意を。gauche の何が羨ましいかといえばまだ何もないところに作っていけるところだと思う。コミュニティもまた若く、熱を持っている。いつか、あのような集まりが活発に何度も行われるように…

配列アラインメントのためのダイナミックプログラミング

配列アラインメントのためのダイナミックプログラミングでは、配列の文字へのアクセスが大量に発生する。Common Lisp には汎用的な関数と特定用途専用の替わりに高速な関数が用意されている。Common Lisp の string クラスに対して文字列専用関数(schar, cha…

C++ STL VECTOR

あまりに素人で恥ずかしいが、 C++ の基礎をおろそかにしていたので引っ掛かった。 C++ の vector のメソッド push_back は、要素を複製して、末尾に追加する。 C++ の vector に push_back できる要素は、copy コンストラクタを持っている必要がある。複製…