* まもなく移轉
當サイトはまもなく移轉します。
* みっくみく事件の決着
驚いた。ドワンゴが殆ど完全に折れる形で、しかもこんなに早く決着が付くとは思はなかった。こんな結末になるとは夢にも思はなかった。
* Quốc ngữ と日本語
ベトナム語は六つの聲調を持つ言語であるが、現在それを表記する爲に用ゐられてゐる Quốc ngữ ではその六声調を書き分ける事が出來るらしい。
* 自然物と信仰/生體機械としての人間/初音ミク/オープンソース戰爭
みっくみくが JASRAC された件には非常にもやもやとさせられる。だから出來るだけ消化しようと試みた。Every man thinketh his burden is the heaviest.
* HsHyperEstraier 0.1
HyperEstraier の Haskell 用バインディングである HsHyperEstraier を公開した。
_
lunes, 7 julio 2003
綺麗に書けないperl遣ひ
Cuenta Larga = 12.19.10.7.5; tzolkin = 7 Chicchan; haab = 13 Tzec
[Trackback Ping]
|_`) そのオライリーの本は大變良い本です。おすすめです。>さいたん
それからこれ。↓
Effective Perl
_
被害報告の相次ぐバニラコークを飮んでみました。
一口飮んでみて、言はれる程には惡くないぢやん、と思つてゐたら……
全部飮んだら氣分が惡くなりました。しかも原材料を見たら「バニラ」とは何處にも書いてないし…。
=□○_ あのバニラつぽい味は香料のやうです。500ml罐しか無いのも騙されたやうな…。
_
これから書く事は、さいたんへのレスではありませんが、思ひ付いた事なので書いておきます。
綺麗に書けないperl遣ひ
大抵のperl使ひは綺麗なperlのコードを書けません。
私が思ふ事は、殆どのperl使ひが酷く汚いコードを書いてしまふ理由は、perlと云ふ言語自體の難しさにあるのではないか、と云ふ事です。
ハッカー向け言語
lispは、見掛け上出來る事と、深い知識を得た上で出來る事とのギャップが非常に大きい事から、屡々「ハッカー向けの言語」と呼ばれる事があります。單にlispを使ふだけなら關數の呼出し方、(defun)による關數定義、lambda關數、carやcdrについて知つてゐるだけでも何とかなりますが、きちんと使ひ熟す爲にはマクロ、末尾再歸、繼續等、少々複雜な概念について理解してゐる必要があり、また關數自體を自分自身で生成する事についても理解してゐる必要があります。(私はlispには詳しくないので、これ以上の言及は避けます。)
これと同じやうに、perlを多少使ふだけならsubによる關數定義、正規表現、變數や配列の使ひ方、openやprint等と云つた定義濟み關數の使ひ方を覺えてゐるだけでも充分かも知れません。しかし、perlを使ひ熟す爲にはmap、grep等の配列への操作構文、keysやvalues等のハッシュへの操作構文、配列やハッシュのスライス、スカラーコンテクストと配列コンテクストの違ひ、evalとdie、オブジェクト指向のサポート、無名關數や無名配列、無名ハッシュ等々、覺えるべき事が大變多く、これらの知識を持たずにperlのコードを書くと、大抵の場合は汚いコードになります。
大体にして通常の言語では配列を扱ふ事が出來ますが、配列の各々の要素について値を代入したり取出したりする事が出來るばかりで、perlのやうに配列そのものについての操作が文法的に用意されてゐる事は、滅多にありません。ましてハッシュが言語上でサポートされてゐる場合など、perlやlispの他には殆ど無いのではないかと思ひます。STLのmapもJavaのMapも扱ふ爲のクラスライブラリが用意されてゐるだけであり、言語仕樣上で定義されてゐるわけでは無く、言語仕樣と融合してゐるわけではありません。
perlは見掛けよりも大幅に難しい言語だと思ひます。
mapの例
例へばCで20個の數値を持つ配列の全ての値に10を足す場合を考へてみませう。Cで書くなら次のやうになります。
int foo[20];
int i;
...
for (i = 0; i < 20; i++) {
foo[i] += 10;
}
my @foo;
...
for (my $i = 0; $i < 20; $i++) {
$foo[$i] += 10;
}
my @foo;
...
@foo = map { $_ + 10; } @foo;
@foo = map {
$_ + 10;
} @foo;
int foo[20];
int i;
for (i = 0; i < 20; i++) {
foo[i] = 5;
}
2002
10
11
12
2003
1
2
3
4
5
6
7
8
9
10
11
12
2004
1
2
3
4
5
6
7
8
9
10
11
12
2005
1
2
3
4
5
6
7
8
9
10
11
12
2006
1
2
3
4
6
7
8
9
10
11
12
2007
1
2
3
4
5
6
7
8
9
10
12
2008
1
4