天泣記

2002/08/01

#1

各種コマンドラインオプション解析ライブラリを比較したものがどこかにないだろうか?

#2

#3

ccvssh is an external program called by cvs (via the :ext: method) which connects to remote CVS pservers through SSL tunnels.

#4

lcvs maintains a global log file for a CVS module and does automated tagging on each commit.

2002/08/02

#1

chrpath allows you to modify the dynamic library load path (rpath and runpath) of compiled programs and libraries.

#2

何か通信する必要があって、プロトコルを定義しないといけないとしよう。

何を使うか?

2002/08/04

#1

抽象構文木を parse 可能なプログラムとして出力しなければならないとしよう。

括弧の挿入を最小限にするにはどうしたらいいか?

括弧では解決できない問題があるとしたらどんなものか?

一般にどのような文法なら正しい出力が存在することを保証できるか?

2002/08/05

#1

BNF のリファクタリングについてまとめたものはないだろうか?

右辺の一部を非終端記号にまとめるときに LALR(1) で衝突を増やさないようにするやりかたとか、いくつかある気がする。

2002/08/06

#1

ふと、grep kJIS0213 Unihan.txt|sort +2 してみる。 1,14,23 はどこだ?

2002/08/08

#1

Zsh Wiki

2002/08/09

#1

ひさしぶりに AMarshal に手を入れる。

% ruby -ramarshal-pretty.rb -e 'o = [[0]]; o = [[o,[1],o]]; o << o; AMarshal.dump_pretty([[[o]]],STDOUT)' 
v1 = [[0]]
v2 = Array.allocate()
v2[0] = [v1,[1],v1]
v2[1] = v2
[[[v2]]]

狙いはテンポラリ変数を削減してコンパクトにすることなのだが、 そのためには 2回 traverse しないといけない。 まぁ、本質的に仕方のないことではあるが、ちとナニである。

2002/08/10

#1

それは等しくなく、小さくなく、大きくもない。

答: NaN

#2

valgrind を試してみる。

2002/08/13

#1

迷惑一番を読む。

主人公の出身地が鶴来であることに気がつく。

2002/08/14

#1

traverse 2回っつーのは嘘か。 1回目の情報を全部とっとけばいい。 でもそれはそれでナニ。

#2

正確に表現すれば、出力を始める前に traverse が終わっていなければならない、ということになるか。

2002/08/15

#1

うぅむ。同じ言葉をたくさん繰り返したのはよくなかったな。

#2

メタは上、ベースは下、スーパーはどっち?

C++ のベースクラスは下に描くのだろうか?

2002/08/20

#1

CvsShell is a console-based cvs frontend.

2002/08/21

#1

演算子の順序がぱっと見でわかりにくくなる」のはどのような時か、ということには興味を持っていたりする。

個人的には、 画面(ないし紙面)上のトークン間の空白の長さと、 構文木上のトークン間のパスの長さが マッチしていない時にわかりにくくなるのではないかと推測しているのだが...

merd の Horizontal Layout はその辺りを考慮して構文解析するものだともみなせるし、 そんなに突飛な推測ではないと思う。

#2

本題らしき return についても、結局のところ似た話で、 同じようなものを同じように、違うものを違うように書くのがわかりやすいというのがまずあるのだろう。

で、同じか違うかというのはいろんな尺度があるわけで、 人それぞれに各尺度の重みづけが違う、つまりメンタルモデルが異なるのに、 括弧の有無というたった 2種類で表現しようというのだから 論争になりやすいのは当然というか。

#3

とはいえ、周囲との一貫性を越える重みをもつ尺度はあまりないので、 多くの場合(天下り的に与えられたものであれ、慣習として成立しているものであれ)コーディングルールが最優先になる。 ここまではあまり論争にはならない。

が、あえてその先に踏み込んで述べると、 人間が言語に適応すれば適応するほど メンタルモデルが言語仕様に近くなり、 冗長な記述が減っていく(コードが短くなっていく)傾向にあるのではないかと思う。 そして、十分に適応しても残っている冗長性は、 各人の本質的な(言語とは独立な)こだわりを表現しているのではないだろうか。

#4

たとえば、こだわりの例としては bool 型がある。 C には bool 型はない(というか、なかった)ので、条件式に x != 0 とか x != NULL と書くのと x とだけ書くのに動作の違いはない。

にもかかわらず、!= 0 や != NULL を書きたくなるのは 言語仕様とは独立にメンタルモデルに bool 型が存在し、 あたかも C に bool 型があるかのように書くほうが メンタルモデルとコードのギャップが少なくなって楽だからである。 むろん、メンタルモデルに bool 型がなければこれは冗長で、 メンタルモデルとコードのギャップが大きくなり、 わかりにくいということになるのだろう。

C99 で _Bool 型が入ったのは、 メンタルモデルに bool 型が存在する人が十分に多く、 そのような人がコードで bool 型を表現するための標準的な方法を用意した という意味合いもあるのかも知れない。

2002/08/22

#1

来週は日本科学未来館にお出かけである。

問題は、終わった後、次の次の日にまたいくかどうか。

2002/08/23

#1

悪魔事典

カバーをとる。おや? なぜ同じなのだ?

2002/08/25

#1

バグの鉱脈

2002/08/26

#1

ここ数日、ひさしぶりに fj に記事を書く。

#2

ここしばらくの結果: MixJuice によるデザインパターン改善カタログ (α版)

#3

評判がよろしくないほど話題がでている場所があるとは知らなんだ。

うぅむ。技術的な内容が出てこないことには何とも。

差分プログラミングはほぼ「悪」という方は... たぶん、クラスの継承は subtype のためだけに使えという話だと思うんだけど、 もしそうだとすれば、まぁ、だいたいその通りなんじゃないですかね。 MixJuice もそういう立場で、 継承を使うべきでないにも関わらず使いたくなるケース(の一部)に関して、 別の機構を用意している、ともいえるし。

2002/08/27

#1

シュレイオーとあずまんが大王

#2

KD

RD 系

#3

帰省

2002/08/28

#1

XML Schema の dateTime と RFC3339 は微妙に違うのだな。

#2

日本科学未来館

2002/08/30

#1

make は明示的に与えた依存関係から、ターゲットを生成するのに必要な処理を順に実行していく。

逆に実行するのはどうだろうか。

まず、有無を言わさずターゲットを生成するコマンドを起動する。 ただし、LD_PRELOAD (か ptrace)を使って、open をトラップする。

open がトラップされ、それが読み込みによる open であれば、 open 対象のファイルを生成するコマンドを起動する。 むろん、これも同様に open をトラップする。 コマンドが終了したら、open を続行し、生成されたファイルを open する。

こうすれば、(依存関係に cycle がなければ)処理はいつか終了して ターゲットは最新になると思う。

で、ファイルを生成した時にはその生成したプロセスが open (に挑戦)したファイルを記録しておく。 コマンドを起動する前に記録を調べて、以前の open の対象ファイルの状態が 変化していなければ生成結果を再利用してコマンドは起動しないようにする。 (なお、直接に open したものだけでなく、再帰的に検査する。)

こうすれば、ファイルとそれを生成するコマンドの対の集合だけから make like なことができるのではないか。 つまり、dependency をいっさい記述しなくて良いのではないか。

まぁ、naive にやると parallel build が無理になるが。

#2

呼ばれもしていない飲み会についていく。


[latest]


田中哲