- - PR -
型の矛盾
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-07 23:24
識者じゃありませんが、
.NETのクラスライブラリを使って.NETのランタイム上で正しく動けば、 どんな言語仕様であれ.NETとしては問題ないわけですよね。 プログラミング言語は大抵一定のニーズがあって、 そのドメインに特化されて設計されているわけです。 だから独自のランタイム上でも.NET上でも、 常に論理的に正しく厳密である必要なんてないのです。 言語設計者がどういう思想で設計したかが、その言語の特徴でもあるわけです。 理論的な正しさを求めた言語じゃないのに、 理論的におかしいと突っ込みを入れるのはどうかと思います。 | ||||
|
投稿日時: 2007-05-08 02:01
VB.Net は「Option Strict On を激しく推奨」しつつも Option Strict Off をデフォルトにしているあたりにも設計思想があらわれていますね。 VB.Net の Option Strict On での暗黙の型変換は拡大変換のみですし、実用面をよく考えて設計されているとも思います。 C# で単純なキャストで "明示的に" 型変換しても、それがオーバーフローを伴う縮小変換でなおかつエラーにもならないケースでは、型は明確でも値がまるで変わってますのでその方が桁違いに問題かと思います。 | ||||
|
投稿日時: 2007-05-08 10:56
それが幻想です。 http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html | ||||
|
投稿日時: 2007-05-08 23:28
某所で「現在の利用者層が当初の販売ターゲットからずれているのだから、仕様を見直さないのを問題と言っても良いのではないか」と、ご意見をいただきました。 この件に付き、私が「問題ではない」と考える理由がここには書かれていませんでしたので、書き添えておきます。 要は、「マイクロソフトは移行について、十分苦心および努力していると思います。」ということです。では、どんな苦心および努力があったのか。 私自身が直接仕様を確認したわけではなく、後から人づてに聞いた話なので恐縮ですが、VB.NET(VB7.0) のβ時点で、配列のカッコは[]、Option Strict のデフォルト(新しいプロジェクトのデフォルト設定)は On にされていたということです。あと、配列の基数が 0 か 1 かでももめたと聞いています。 つまり、マイクロソフトは VB7.0 を開発者よりの言語としようとしたところ、ユーザの反対が多かった。そのため、VB6.0 の仕様に近い仕様になった。 こういう経緯だと理解していますので、問題はマイクロソフトよりもユーザにあると考えます。My クラスや規定のインスタンスを見ても、VB6 へ回帰したいユーザの問題ではないでしょうか。 また、こういう経緯だとすると、VB2005 の次のバージョンで、より開発者向けの言語仕様を実装するためには、VB6.0 への回帰を叫んだユーザ以上に、そうすることの利便性を説かなければなりません。そして、回帰ユーザを納得させられるだけの根拠を示さなければなりません。つまり、単に「他の言語がこうだから」では、VB6.0 ユーザは納得しません。今まで出来ていたことが、出来なくなるのですから。 問題点だけを提起するのではなく、改善策も提示していただけないでしょうか。そうであれば、マイクロソフトへ要望をあげるのも、難しくはありません。 ~~~~~ ご指摘どうもm(__)m [ メッセージ編集済み 編集者: Jitta 編集日時 2007-05-09 21:32 ] | ||||
|
投稿日時: 2007-05-09 09:31
On ですよね。 http://blogs.wankuma.com/mikinyu/archive/2007/05/08/75887.aspx _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-05-09 12:31
objectです。
>シャノンさん >>「.NET」に於ける、言語の「相互運用性」は、 >>「CTSとその一貫性」 >>により支えられています。 >それが幻想です。 >http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html 確かに、私の表現が少し変ですね。 本来は、次の内容を考えている訳です。
#元の表現も修正しておきます。 それから、少し補足しますが、 「クロス言語開発は本当にできるのか?」 http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html は、 「言語の相互運用性を危惧しながら、その元凶を肯定している」 様に私には思えます。 従って、私とはスタンスが明確に異なると思います。 >ALL 私は ・マイクロソフトの努力 ・VBの思いと努力 等は、少なからず理解している心算です。 しかし、結果として、 「最悪の方向に向かわせる事」は、どんなに「大きな努力」以ってしても許される事ではない と、思っています。 #どんなにユーザーの要求があっても、断固として「守るべき重大な事項」はあるのです。 それから、私は、 「何故問題なのか(問題の本質)を指摘している」 心算です。 これは、具体的な対処方法だけを書くより、遥かに適切な対処ではないでしょうか? そして、この事によって、初めて 「最も広い選択肢が可能となる」 と私は思っている訳です。 私も 「ユーザーの認識レベルを改善する事」 は最も重要だと思っています。 しかし、それに対して 「VB」はさらに悪くする要因になっている と思います。 #「矛盾」は、背理法の根拠になっている程、重要な概念です。 #人が「おや?」と思うのは、「矛盾感覚」が支えていると私は思っています。 #つまり、人は生来的に、背理を感じる能力がある? #でもVBは、その大切な感覚を麻痺させてしまうと私は思っています。 そういう意味で、 「(簡単に書くと)正しいか、そうでないか」 を判断する為の基本的なスキルが得られる 「記号論理学(少なくとも、命題論理・述語論理)」 をユーザーに勧めている訳です。 今回のスレは、こちらの方が「そもそもの切っ掛け」です。 | ||||
|
投稿日時: 2007-05-09 18:37
そもそもVBはString型とChar型の違いが判らない「認識レベル」でも使える言語、を目指しているのでは? # 小学生向けの参考書には円周率は3.14(あるいは3か、最近は)と書いてあります。 # 言うまでもなくこの表記は数学的には間違っていますが、では「小学生の認識レベルを改善する」ために、このような参考書は廃されるべきだと思いますか? | ||||
|
投稿日時: 2007-05-09 21:26
意味不明。
元々、「言語によって、String EQUAL Char と、 String NOT EQUAL Char が、同じ共通型システム上に混在している」というのが、発端ですよね?しかし、「String EQUAL Char である」とおっしゃる VB7.0 以降においても「そうではない」と示されているわけです。 さらに、元々の「落とし穴」は、デフォルト プロパティと、関数のカッコが省略できること、配列のカッコと関数のカッコが同じ記号であることです。それを誤って解釈されていると指摘されているのに、そこへの反論なしに自説の展開をされ続けるのは、なぜでしょう? または、
この、変更された表現であっても、C# と VB7 で型の扱いは同じで・・・。 「クロス言語開発は本当にできるのか?」によると、著者の吉松さんは「CTSによって、プログラミング言語に固有のものだった型システムを、プログラミング言語から奪い取った。」と表現されています。この表現によると、C# と VB7 では型を扱わないため、両者で型の扱いについて、特に CTS において「一貫性がない」という事態は発生し得ない、という結論にならないでしょうか。 いったい何を問題であると考えていらっしゃるのでしょう? それと、私は吉松さんの主張は、「複数の言語による相互運用が声高に宣伝されているが、それは CTS によってもたらされた副作用に過ぎない。副作用なので、望まない効果も様々にある。セールス トークにのせられず、デメリットをよく考えて選択するべきだ」ということだと思います。 つまり、「言語の相互運用性を危惧しながら、その元凶を肯定している」のではなく、objectさんが「元凶」と表現されたことこそ、.NET Framework の本質であるとされていると思います。 ところで、ここで「元凶」という言葉を使われたのは、どういう意図でしょう?また、「その元凶」の「その」は、何を指しているのでしょう? ~~~~~ 話が飛んでいたので、つなぎを入れた [ メッセージ編集済み 編集者: Jitta 編集日時 2007-05-09 22:28 ] |