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 ]