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

langsmith:168

From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Sat, 8 Jan 2005 23:20:34 +0900
Subject: [langsmith:168] Re: Alan ver.0.08

まつもと ゆきひろです

In message "Re: [langsmith:167] Alan ver.0.08"
    on Sat, 8 Jan 2005 13:20:22 +0900, Fumisky Wells <ttn3w7u2fs mx6.ttcn.ne.jp> writes:

|まだ問題は山積みですが、もしこの段階でデザインの方向性・実装のやり方・
|公開の仕方など、建設的ご意見をいただければ幸いです。

  * やっぱりセミコロンはないほうが良いなあ

  * 「str s」スタイルの型宣言はユーザ定義の型を導入すると、
    構文解析が難しくなりそうな気がする。最近の言語が

        識別子 : 型

    の文法を採用するのはそういうわけだと思う。

  * 動的言語の代表としてPerlを選ぶのはやめてほしい。たとえば

     > 2. 思考を妨げる型、支援する型
     > C++ と Perl を長年使用してきて思ったことは、 型があっ
     > た方が仕事が捗ったということ。 むしろ、Perl の方が注
     > 意深く「えー、この時に使う演算子は・・・」 といった感
     > じで余分に神経を消費してきた。

   というのはPerl固有の事情(動的にも型がなく演算子で型が決定
   される)によるものだと思う。(リファレンスを除いた)Perlは、
   「型なし」と「静的型」のハイブリッドだと思う。

全体的に、今はいいけど、これからユーザ定義の型やクラス、構造
体などを導入するとどうなるんだろうな、という印象です。

|これだけだと漠然としているかも知れないので、1つ具体的な質問を。
|今、Alan の入力系をどうしようかと考えているところです。
|C では printf()に対して scanf() が、
|C++ では cout に対して cin が、
|Perl は print に対し、<>で読んでパターンマッチで変数に入れるのがよくある方法ですね。
|
|Alan では put(a,b,c) に対して
|
|	a) get(a,b,c) とするか
|	b) (a,b,c) = get とするか
|	c) get(&a, &b, &c) とするか
|	c')get(a&, b&, c&) とするか
|	d) その他?
|
|ぐらいの選択肢を考えていて、c') がいいかな、と。その理由は、
|
|	1) & は明示的な参照渡しを表わす演算子。Cのアドレス渡しや
|	   ADA の out モードと似ています。
|	   変数 a, b, c に値を入れることがわかって意味を読み取りやすい。
|	2) &演算子が後置なのは式を左から右に読みやすくなるから、と
|	   考えたからです(C のポインタがらみがややこしいのは
|	   * や & 演算子が前置なのが1つの原因と考えています)。
|
|まあ、確信があるわけではなく、わざわざ & を打たなくても a) か b) で
|いいではないか、とする案も当然あると思うので、「c), c') は嫌だな」
|というレベルでもかまいませんので、ご意見聞かせていただければ、と思います。

c)やらd)やらを導入するということは、「変数への参照」を導入す
ることになりますよね。ポインタよりはマシとしても言語を複雑化
させそうな気がします。むしろ

  a = get(); b = get(); c = get();

で良さそうな気がしますが、どうしても複数いっぺんに読み込みた
いですか。どうしてもそうしたいなら、b)多重代入をお薦めします
が、それはそれで茨の道のような気も。

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

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

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

       167 2005-01-08 13:20 [ttn3w7u2fs mx6.ttcn.] Alan ver.0.08                           
->     168 2005-01-08 23:20 ┗[matz ruby-lang.org  ]