- PR -

型の矛盾

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-05-07 23:24
識者じゃありませんが、

.NETのクラスライブラリを使って.NETのランタイム上で正しく動けば、
どんな言語仕様であれ.NETとしては問題ないわけですよね。

プログラミング言語は大抵一定のニーズがあって、
そのドメインに特化されて設計されているわけです。

だから独自のランタイム上でも.NET上でも、
常に論理的に正しく厳密である必要なんてないのです。
言語設計者がどういう思想で設計したかが、その言語の特徴でもあるわけです。

理論的な正しさを求めた言語じゃないのに、
理論的におかしいと突っ込みを入れるのはどうかと思います。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-05-08 02:01
引用:

Jittaさんの書き込み (2007-05-07 22:07) より:

 もちろん、「暗黙変換できる/できないことが問題だ」と言われるなら、それはひとつの問題でしょう。しかし、そもそも VB は使用者が型を意識しなくていいように設計されているので、言語仕様上の問題ではないと考えます。設計上の問題とすることもできますが、元々開発者をターゲットとした言語ではないので、そのことを理解されているようなのに、設計に問題を感じることこそ、問題かと思います。


 VB.Net は「Option Strict On を激しく推奨」しつつも Option Strict Off をデフォルトにしているあたりにも設計思想があらわれていますね。
 VB.Net の Option Strict On での暗黙の型変換は拡大変換のみですし、実用面をよく考えて設計されているとも思います。

 C# で単純なキャストで "明示的に" 型変換しても、それがオーバーフローを伴う縮小変換でなおかつエラーにもならないケースでは、型は明確でも値がまるで変わってますのでその方が桁違いに問題かと思います。
aetos
会議室デビュー日: 2005/01/27
投稿数: 16
投稿日時: 2007-05-08 10:56
引用:

objectさんの書き込み (2007-05-07 12:33) より:
「.NET」に於ける、言語の「相互運用性」は、
「CTSとその一貫性」
により支えられています。



それが幻想です。
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-05-08 23:28
引用:

Jittaの書き込み (2007-05-07 22:07) より:

 もっとも、「当初の販売ターゲットから、現在の利用者層がずれている」というのはその通りだと思います。しかし、これは利用者側の問題であり、言語設計者、ツール販売者がどうこうする問題ではないと思います。
 言語仕様を現在の利用者層にあわせ、開発者向きにするというのは、ご意見のひとつとしてあり得ると思います。しかし、現在の利用者が開発者だからといって、開発者よりの言語仕様にしてしまうと、元々の販売ターゲットだった「サンデー プログラマ」向けの言語がなくなってしまいます。
 では、開発者が VB.NET の使用をやめる(C# など、他の言語に移行する)ように働きかけるべきだというご意見について。それも、ご意見のひとつとして有りだと思います。しかし、VB を利用している開発者向け、VB と C++ の中間として C# が作成されており(私はそう理解しています)、マイクロソフトは移行について、十分苦心および努力していると思います。その苦心および努力をどう思うか、それは個人個人の感じ方なので、ご自身の意見に周りを誘導するのは、どうかと思います。


 某所で「現在の利用者層が当初の販売ターゲットからずれているのだから、仕様を見直さないのを問題と言っても良いのではないか」と、ご意見をいただきました。
 この件に付き、私が「問題ではない」と考える理由がここには書かれていませんでしたので、書き添えておきます。

 要は、「マイクロソフトは移行について、十分苦心および努力していると思います。」ということです。では、どんな苦心および努力があったのか。
 私自身が直接仕様を確認したわけではなく、後から人づてに聞いた話なので恐縮ですが、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 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-09 09:31
引用:

Jittaさんの書き込み (2007-05-08 23:28) より:

Option Strict のデフォルト(新しいプロジェクトのデフォルト設定)は Off にされていたということです。


On ですよね。
http://blogs.wankuma.com/mikinyu/archive/2007/05/08/75887.aspx

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2007-05-09 12:31
objectです。

>シャノンさん
>>「.NET」に於ける、言語の「相互運用性」は、
>>「CTSとその一貫性」
>>により支えられています。
>それが幻想です。
>http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
確かに、私の表現が少し変ですね。
本来は、次の内容を考えている訳です。
引用:

「.NET」に於ける、言語の「相互運用性」は、
「CTSとその一貫性」
によって初めて支えられる。


#元の表現も修正しておきます。

それから、少し補足しますが、
「クロス言語開発は本当にできるのか?」
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
は、
「言語の相互運用性を危惧しながら、その元凶を肯定している」
様に私には思えます。
従って、私とはスタンスが明確に異なると思います。

>ALL
私は
・マイクロソフトの努力
・VBの思いと努力
等は、少なからず理解している心算です。

しかし、結果として、
「最悪の方向に向かわせる事」は、どんなに「大きな努力」以ってしても許される事ではない
と、思っています。
#どんなにユーザーの要求があっても、断固として「守るべき重大な事項」はあるのです。

それから、私は、
「何故問題なのか(問題の本質)を指摘している」
心算です。

これは、具体的な対処方法だけを書くより、遥かに適切な対処ではないでしょうか?
そして、この事によって、初めて
「最も広い選択肢が可能となる」
と私は思っている訳です。

私も
「ユーザーの認識レベルを改善する事」
は最も重要だと思っています。
しかし、それに対して
「VB」はさらに悪くする要因になっている
と思います。
#「矛盾」は、背理法の根拠になっている程、重要な概念です。
#人が「おや?」と思うのは、「矛盾感覚」が支えていると私は思っています。
#つまり、人は生来的に、背理を感じる能力がある?
#でもVBは、その大切な感覚を麻痺させてしまうと私は思っています。

そういう意味で、
「(簡単に書くと)正しいか、そうでないか」
を判断する為の基本的なスキルが得られる
「記号論理学(少なくとも、命題論理・述語論理)」
をユーザーに勧めている訳です。
今回のスレは、こちらの方が「そもそもの切っ掛け」です。
会議室デビュー日: 2006/06/02
投稿数: 19
お住まい・勤務地: 江戸
投稿日時: 2007-05-09 18:37
引用:

objectさんの書き込み (2007-05-09 12:31) より:
「何故問題なのか(問題の本質)を指摘している」
心算です。

これは、具体的な対処方法だけを書くより、遥かに適切な対処ではないでしょうか?
そして、この事によって、初めて
「最も広い選択肢が可能となる」
と私は思っている訳です。

私も
「ユーザーの認識レベルを改善する事」
は最も重要だと思っています。
しかし、それに対して
「VB」はさらに悪くする要因になっている
と思います。



そもそもVBはString型とChar型の違いが判らない「認識レベル」でも使える言語、を目指しているのでは?

# 小学生向けの参考書には円周率は3.14(あるいは3か、最近は)と書いてあります。
# 言うまでもなくこの表記は数学的には間違っていますが、では「小学生の認識レベルを改善する」ために、このような参考書は廃されるべきだと思いますか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-05-09 21:26
意味不明。

 元々、「言語によって、String EQUAL Char と、 String NOT EQUAL Char が、同じ共通型システム上に混在している」というのが、発端ですよね?しかし、「String EQUAL Char である」とおっしゃる VB7.0 以降においても「そうではない」と示されているわけです。
 さらに、元々の「落とし穴」は、デフォルト プロパティと、関数のカッコが省略できること、配列のカッコと関数のカッコが同じ記号であることです。それを誤って解釈されていると指摘されているのに、そこへの反論なしに自説の展開をされ続けるのは、なぜでしょう?

 または、
引用:

「.NET」に於ける、言語の「相互運用性」は、
「CTSとその一貫性」
によって初めて支えられる。


この、変更された表現であっても、C# と VB7 で型の扱いは同じで・・・。
クロス言語開発は本当にできるのか?」によると、著者の吉松さんは「CTSによって、プログラミング言語に固有のものだった型システムを、プログラミング言語から奪い取った。」と表現されています。この表現によると、C# と VB7 では型を扱わないため、両者で型の扱いについて、特に CTS において「一貫性がない」という事態は発生し得ない、という結論にならないでしょうか。

 いったい何を問題であると考えていらっしゃるのでしょう?

 それと、私は吉松さんの主張は、「複数の言語による相互運用が声高に宣伝されているが、それは CTS によってもたらされた副作用に過ぎない。副作用なので、望まない効果も様々にある。セールス トークにのせられず、デメリットをよく考えて選択するべきだ」ということだと思います。
 つまり、「言語の相互運用性を危惧しながら、その元凶を肯定している」のではなく、objectさんが「元凶」と表現されたことこそ、.NET Framework の本質であるとされていると思います。

 ところで、ここで「元凶」という言葉を使われたのは、どういう意図でしょう?また、「その元凶」の「その」は、何を指しているのでしょう?


~~~~~
話が飛んでいたので、つなぎを入れた

[ メッセージ編集済み 編集者: Jitta 編集日時 2007-05-09 22:28 ]

スキルアップ/キャリアアップ(JOB@IT)