何か昨日はえらいこと眠かったんで 21:30 には寝付いてしまっていた。おかげでこんな時間に目が覚めてしまった。
というわけでちょこちょことコードを書きつつ Python の標準ライブラリの difflib なんぞを読んでいるのだけど、これ明らかに diff コマンドと出力が違うよな (使われてるアルゴリズムが全然違う)。俺は今自前の diff を書いてるんだけど、その理由がそこにある。 Python の difflib が UNIX コマンドの奴と同一アルゴリズムで LCS の関数がありゃ問題ないんだけど、そうじゃないからな。
LCS のアルゴリズムは前に書いた奴があるからいいけど、 diff は最初っから書き直しなのが少し面倒だ。やっぱきちんとバックアップは取っておくべきだった。まあ、前に書いたときよりは効率的でコンパクトなものが書けそうではあるけど。
テキストエディタのマクロ・プラグイン言語について。俺は前から書いてる通り Scribes を最近ではメインに使っているんだけど、これはプラグイン言語として Python を使っている。というか、 Scribes 自体がプラグインの集合になっていて、そして Scribes は Python で書かれているというのが正解か。つまり、作りそれ自体は elisp と Emacs の関係に近い。
これは Python プログラマの俺には極めて都合がよいのだけど、じゃあ他の言語のプログラマにはどうだろう。恐らくだけど、俺が書いたような言語毎のプラグインを書こうという人はあまり出てこないんじゃないか。というのも、自分の母国語でプラグインが書けず、そしてホスト言語がプラグイン言語ではなく汎用言語だから (これは同様に汎用言語をプラグインに使っているアプリケーションにも当てはまる)。
elisp にしろ vim スクリプトにしろ、それが汎用言語ではない (elip はかなり怪しいけど) という理由である意味全てのプログラマに平等だ。恐らくどの言語のプログラマも、プラグインを書くために必要なコストは汎用言語で書く場合に比べると大きくは違わない (プラグイン言語の文法に馴染めるかどうか程度の差はあるだろうけど)。
そう考えると、 Scribes はある意味で損な選択をしてるかもしれない。もしもプラグイン言語が汎用言語か否かがプラグイン開発者の絶対数に影響を及ぼすのならばだけど。
何か自分で書いててよくわかんなくなってきた。またいつか書く。多分。
ふとした気の迷いで Fluxbox のコードとか FLTK のコードをほんの少し読んだんだけど、流石に C++ で書かれているだけあって読むのが大変。やっぱ二度と C++ は使いたくないなあ。だからといって C で何か書きたいかというと……。
そして "Fast Light" と名乗る FLTK であれなら、 GTK とか Qt ってどうなってるんだろうな。 wxWindow は考えたくもない。
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。