kなんとかの日記 このページをアンテナに追加

2009-07-25

Pythonistaはtypedefすら拒絶する? (Re: Python での組み込み型をより自然な名前にする)

| 10:39 |  Pythonistaはtypedefすら拒絶する? (Re: Python での組み込み型をより自然な名前にする)を含むブックマーク

反論のためにこんな極端な例を出すほうがおかしい。

以下、エキスパート C プログラミングより引用。ちょっと極端過ぎる例だけど、言語独自の慣習・標準などを無視することの一つの到達点がこれだ。

「CはAlgolではない」

1970年台の後半、ベル研UNIX Version 7用のシェルを開発する際に、Steve Bourneはプリプロセッサの機能を使って、CをAlgol-68風に使おうとした。

(中略)

#define STRING char *
#define IF if(
#define THEN ){
#define ELSE }else{
#define FI ;}
#define WHILE while {
#define DO ){
#define OD ;}
#define INT int
#define BEGIN {
#define END }

これらを使うと、プログラムはこんな風に書けるようになる。

INT compare(s1, s2)
    STRING s1;
    STRING s2;
BEGIN
    WHILE *s1++ == *s2
    DO IF *s2++ == 0
        THEN return(0);
       FI
    OD
    return(*--s1 - *s2);
END

(中略)

このAlgol風C言語Bourne方言は、International Obfuscated C Code Competition−−作成したプログラムの読みにくさと複雑さを競う異様なコンテスト−−を誕生させるきっかけになった。

no title

うん、このたとえは極端すぎる。「List = list」としてエイリアスを追加するだけのことを、こんな極端なものと同じように扱われるのはとても心外。「Array = list」としたのであれば、このたとえでもいいと思うけど、たかが「List = list」をこんなのにたとえるのはおかしい。たとえるなら、せいぜい「typedef unsigned int uint;」ぐらいではないか。

そういえば、C言語ではこの手のaliasを定義するのはよくやるよね。

typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef int int32;   /* こんなのもあるよね */

こういう経験があると、たかが「List = list」ごときで何を大げさなと思ってしまうけど、Pythonista的にはこういうのも受け入れられないんだろう。

なんにせよ、反対したいがためにあんな極端なたとえを持ち出すのはやめてほしい。

pashango_ppashango_p 2009/07/28 00:26 ごめんごめん追加ね、kwatchは本当に細かいなぁ^_^

色々思うことがあって、長くなりそうだからトラックバックにしようと思って、読み返してみたら特に内容もなかったらコメント欄に書くね。

kwatchさんは、PGだけで10人以上のプロジェクトは経験ありますか?
予想で申し訳ない、ふと疑問に思ったもんで。
(もし経験があったらゴメンなさい)

あと、Pytonistaは断固反対するって言うけど、君の周りのRubist(っていうのかな?)は、この手法を「ブラボー!!」って言ってるの?
個人的な予想としては、肯定も否定もないような曖昧な反応だと思うんだけど、どうか?


あ、最後に私は目くじらたてないよ:-)
個人の範囲なら自由にしていいと思う、チーム開発だったら反対する(あくまでも個人的な判別基準だけどね)