[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:79

From: (Yukihiro Matsumoto) <matz ruby-lang.org>
Date: Tue, 13 Jul 2004 14:43:14 +0900
Subject: [langsmith:79] Re: 変更可能なclosure変数、対、static変数

まつもと ゆきひろです

In message "[langsmith:76] 変更可能なclosure変数、対、static変数"
    on 04/07/13, Tsuguo MOGAMI <mogami brain.riken.go.jp> writes:

|それはclosureでcloseした変数を
|変更可能にするか、変更不能にするかです。

短い答え:

その言語が副作用を許す言語であれば、closeした変数も変更可能
にした方が良いと思います。

長い答え:

まず、

|私としては現実世界とのアナロジーで説明できないモデルは出来るだけ
|排除したいと考えています。

というポリシーには賛成しかねます。プログラミング言語はプログ
ラミングのバーチャルな世界を扱うものであり、それが必ずしもい
つもリアルな世界に適切なアナロジーを持つとは限りません。です
から、このようなポリシーは言語の可能性を制約する方向にしか働
かないと思います。

リアルな世界へのアナロジーは理解を疎外することさえあります。
オブジェクト指向プログラミングの解説で、継承がアナロジー(犬
は哺乳類、とか)によって教えられたために、プログラミングテク
ニックとしてどのように利用したらよいのか分からなくなった「被
害者」はたくさんいると思います。

もうひとつ、

|変更可能なclosureは初心者に分かりにくいのでは?

言語を設計する時に初心者を意識し過ぎることにも賛成できません。
もちろん、「子供向け言語」、「教育用言語」などという明確な目
標がある場合には別ですが、初心者はいつまでも初心者ではないの
で、言語設計上の決定は基本的に「初心者に理解しやすいか」とい
う基準で行われるべきではないと思います。

むしろ有用なのは「初心者の邪魔にならないか」でしょう。つまり、
初心者に理解しにくい機能であっても、初心者は使う必要がなけれ
ば躊躇する必要はないわけです。しかし、言語の本質的部分で初心
者も無視することができない機能は初心者の邪魔にならない程度に
理解しやすい方が、一般ウケする言語を作ることができます。一般
ウケした方が良いかは言語によりますが。

私の個人的考えですが、プログラミング言語である機能を排除する
かどうか決定するポリシーは、

  * 有益か、そうでないか

    その機能を使うことにより、プログラムが楽になる局面がある
    か、ないか。

  * 混乱を招くか、そうでないか

    その機能を理解しない人は使わなくてすむか。

    熟練者でもその機能を使いこなせないほど複雑でないか。

  * 自然か、そうでないか

    不自然で制約の多い機能は学習しにくい。

    言語のほかの部分と違和感はないか。

    その機能の解説が「〜の場合は〜できるが、〜の場合はそうで
    はない」というようなものにならないか。

というのが良いのではないかと考えています。

設計中の言語のほかの部分が分からないので、安易に断言はしませ
んが、話を聞く限り、禁止する理由はないように思います。

# やっとlangsmithらしい話になった。

                                まつもと ゆきひろ /:|)

--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

        76 2004-07-13 12:42 [mogami brain.riken.g] 変更可能なclosure変数、対、static変数   
        77 2004-07-13 13:42 ┣[nobsun sampou.org   ]                                       
        78 2004-07-13 15:07 ┣[maeda-langsmith atus]                                       
        80 2004-07-13 19:58 ┃┣[mogami brain.riken.g] Re: 変更可能なclosure変数、対、sta  
        81 2004-07-14 01:52 ┃┗[shugo ruby-lang.org ] 強い型の言語とクロージャ            
        84 2004-07-14 15:02 ┃ ┣[takuo aya.or.jp     ]                                   
        86 2004-07-14 23:32 ┃ ┃┗[shugo ruby-lang.org ]                                 
        85 2004-07-14 20:52 ┃ ┗[randy mvd.biglobe.ne]                                   
        87 2004-07-14 23:59 ┃  ┗[shugo ruby-lang.org ]                                 
        88 2004-07-15 00:04 ┃   ┣[shugo ruby-lang.org ]                               
        89 2004-07-15 01:50 ┃   ┗[nobsun sampou.org   ]                               
        90 2004-07-15 11:04 ┃    ┗[shugo ruby-lang.org ]                             
->      79 2004-07-13 14:43 ┗[matz ruby-lang.org  ]