program

新しいプログラミング言語を覚えるときの壁

構文の文法が違うというのはまあ教科書があるから頑張ればどうにかなるとして、それ以外で難しかったこと。 個人的に思い出せる壁を並べてみます。 関数を(変数に入れて)渡し、それを使うという考えがない クロージャも関数ポインタもコールバックもわかり…

Clojure でテキストファイルを読んでみる。(遅延評価)

遅延評価タイプにしながらも途中で閉じることができるようにすると、こういう感じになるようです。 (use '[clojure.contrib.duck-streams :only (reader)]) (defn file-reader [target] (let [r (reader target)] {:close (fn [] (.close r)) :seq (letfn [(…

Clojure でテキストファイルを読んでみる。

ファイルI/Oが少しなりともわかると応用が効きそうなので試してみました。まずは with-open を使ったものです。 ;-- ファイルを行リストにする (use '[clojure.contrib.duck-streams :only (reader)]) (defn file-to-lines [target] (with-open [r (reader t…

Closureによる部分リスト検索(遅延評価)

前エントリの部分リスト検索ですが、別に :all を使わなくとも遅延評価してしまえばいいやということでやってみたら、こんな感じになりました。 (defn indexof [coll subcoll & from] (let [sub (seq subcoll) length (count sub) head (first from) head (c…

プログラミングClojureを読んでみた。これは良い

JVM上で動く言語にはいろいろと興味があって、覚えたり QuickReflector 上に載せてみたりといろいろやっていたのは過去の話。他のことで忙しくなってしまって熱も冷めてしまったのですが、Clojure は気になっていたので日本語訳が出たと聞き早速購入して読ん…

*PHPとActionScriptにどっぷりな1年でした。

気が回らなくて、こちらいつのまにか1年近く放置していました。仕事で PHP/ActionScript にどっぷり漬かりつつ REST やら OSGi やら 眺めていたら QuickReflector もすっかり忘れている今日この頃。ところで PHP で、以下のようなコードを実行してみます。 …

略語に対する違和感から考えるマネジメント・ハザード

ひとつは「ワイヤー」、そして「ジャバスク」。もうひとつ「マシン」。これらの言葉が(私がかかわった状況で)何を指していたかというと、 ワイヤー=基本設計 ジャバスク=JavaScript マシン=コンピュータのハードウェア ということになるわけですが、い…

入出力とそうでない処理を分ける事について補足

2009-02-20のエントリで書いた入出力とそうでない処理を分ける、ということについてはもう少し補足しておきたいことがあります。まずは、文字コードに集中的に気をつけることができる、ということです。Java や C# における内部の文字コードは Unicode です…

XMLデータはプログラムと思え

XMLデータの扱い(特にJava)についての話題です。パーサとドキュメントノードを読み取る仕組みさえあれば、プログラミング言語やハードウェアの壁を越えてデータをやり取りできるXMLは何かと便利なものです。こういう使われ方は好ましいと思いますし、十分…

プログラムの書き方(入出力処理とそうでない処理を分ける)

コンピュータ・ソフトウェアについてのことですが。何が見やすいか、わかりやすいか、エレガントであるか、全体の把握がしやすいか、といったことについてはあちこちで議論されているからここではとりあえず問題にしません。本題で述べるのは「ある切り口で…