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−−作成したプログラムの読みにくさと複雑さを競う異様なコンテスト−−を誕生させるきっかけになった。

Diary?::2009-07-15

うん、このたとえは極端すぎる。「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的にはこういうのも受け入れられないんだろう。

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