tamaño de fuente: + - prefijar
RSS 1.0
G a t a  D u r m i e n t e  -  d i a r i o
Volver al índice
Firefox :: Faster Safer Cuter
Say No to corrupt Audio CDs
三次元なんかに興味あるか、ばーか。

Tópicos Recientes

* まもなく移轉
當サイトはまもなく移轉します。

* みっくみく事件の決着
驚いた。ドワンゴが殆ど完全に折れる形で、しかもこんなに早く決着が付くとは思はなかった。こんな結末になるとは夢にも思はなかった。

* Quốc ngữ と日本語
ベトナム語は六つの聲調を持つ言語であるが、現在それを表記する爲に用ゐられてゐる Quốc ngữ ではその六声調を書き分ける事が出來るらしい。

* 自然物と信仰/生體機械としての人間/初音ミク/オープンソース戰爭
みっくみくが JASRAC された件には非常にもやもやとさせられる。だから出來るだけ消化しようと試みた。Every man thinketh his burden is the heaviest.

* HsHyperEstraier 0.1
HyperEstraier の Haskell 用バインディングである HsHyperEstraier を公開した。

Lee más...

_ 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;
}

 これをそのままperlに直譯すれば次のやうになります。
my @foo;
...
for (my $i = 0; $i < 20; $i++) {
$foo[$i] += 10;
}

 ところが、perlで特別な理由も無くこのやうな書き方をしてゐる人間は、perlについての知識が足りないと言へます。次のやうな書き方がperlらしい書き方です。
my @foo;
...
@foo = map { $_ + 10; } @foo;

 一行で書くと解り辛いのであれば、次のやうに書くのが良いでせう。
@foo = map {
$_ + 10;
} @foo;


 別の例として、Cで20個の數値"5"を持つ配列を作る場合を考へてみませう。
int foo[20];
int i;
for (i = 0; i < 20; i++) {
foo[i] = 5;
}

 perlなら次のやうに書けば、たつたの一行になつてしまひます。
my @foo = map { 5; } 1 .. 20;

 perl特有の數々の記法を一々書いてゐたら切りがありませんので例を擧げるのはこれで止めておきますが、このやうに、perlでは複雜な處理を非常に短いコードで書く事が出來る代りに、言語仕樣が複雜になつてゐます。最後の例で使つた「my @foo = map { 5; } 1 .. 20;」には、「配列コンテクスト」「配列を返す關數map」「演算子 .. による配列の連番生成」「目的語の$_による省略」「戻り値の$_による省略」「$_自體の省略」等、perlに特有な記法の數々が含まれてゐます。ここで誤つて「my $foo = map...」と書けば、全く違つた意味になります。勿論、perl特有の記法はこれでも極く一部に過ぎません。これでは直ぐに理解するのは無理と云ふものでせう。

好い加減な知識

 巷に溢れる好い加減な「perl入門」(もつと酷い本では「CGI入門」と稱して好い加減にperlを教へてゐる)、web上に溢れる好い加減な「perl入門」だけを讀んで書いたperlのコードは酷い物になるのが普通です。一體、この人はperlの正式なドキュメントであるperlsyn、perlop、perlre等を一度も讀んだ事が無いんぢやないだらうか、と云ふやうな滅茶苦茶なコードのCGIが、數多く公開されてゐます。勿論、單に使ふだけならコードが綺麗か汚いか等、少しも關係がありません。しかし、このやうなコードがこれからperlを覺えようと云ふ人々の爲の參考になるでせうか。私はさうは思ひません。

 そもそも何故こんなにも出鱈目なperlのコードが溢れる事になつたのかと云へば、CGIを書く爲の言語としてperlがあまりにも廣く普及してゐる爲でせう。万人が手輕に扱ふための言語としては、perlは難し過ぎます。ユーザー人口が多いと云ふ事は決してマイナスではありませんが、好い加減な入門書を讀んだだけでperlの全てが解つたやうな氣で居ると、perlの持つ特長の半分も使つてゐない事になります。私にはそれが、勿體無い事だと思ひます。

 と云ふわけで、これまでに一度もperlの正式なドキュメントを讀んだ事が無かつたperl使ひの方は、今からでも讀みませう。時間の無駄にはならないと思ひますよ。

Perl5 日本語マニュアル

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

login