- PR -

インスタンスに対する変数型は、本当に、一意に決まるのか?

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-01-15 07:08
引用:

じゃんぬねっとさんの書き込み (2006-01-15 01:58) より:
やっぱり var で回答が来ちゃったか...
using だけ横長 || 改行を防ぐことができれば満足なので、まあいいかな。
ちなみに、私はタイプ数なんてものは気にしていません。


「んなこたぁ、知ってる」と、コメントしておきました。
MVP 属性がまだついていないので。。。(年末に申請したんだけどなぁ?)
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2006-01-15 12:58
objectです。
============================================================
>yaさん
>いえ、そんな抽象的な話でなく文字通り変数のスコープです。
>つまり上記の指摘の答えは危険性が問題とするレベルにないという話です。
>これは「C#は長いメソッドがかけてしまう。これは問題だ」
>というレベルの危険性と大して違わないと私は判断します。
そうであるなら、
もう一度繰り返します。
少なくとも、「危険性のレベルがどうか」は本質が明確になった後で無いと分かりません。
また、「C#メソッドの長短」は問題の本質とは無関係だと思います。
#これは、メソッドの長短なんかとは無関係な事を問題にしているという意味でもあります。

>ジェネリクスが導入されたことによってアルゴリズムは「実装するもの」ではなく「適用するもの」に近づく
「ジェネリクス」によって、適用範囲が確かに広くはなりますが、「アルゴリズムの本質」が変化した訳では無いと思います。
作成する必要がある所では、作成しないと適用は出来ません。「適用性」の拡大が「存在性」を保証する訳ではないと思います。
どんなに「近づいても」問題の本質自体は変わりません。
#それに、実際的な意味を無意味にしていく考え方は、余り良い結果にはならないと思います。

>では、チップスとして「必要なとき以外使うな」で済ませればいいような気がしますが…強制しないことによって
>発生する危険性は説明したとおりですし。
私のレスを慎重にお読みになれば理解出来ると思います。
私は、状況としての、タイプ無き変数「var(変数)」の必要性は、理解している積りです。
しかし、無制限に使用されるべきものでは無い、つまり、
「必要なとき」を本質的に明確にする必要があると言っている訳です。

>違います(いや、もちろんのこと実用性も重要な判断要素です)。オブジェクト指向本来の考え方からいえば多重継承は
>‥‥‥‥‥‥
>単一継承言語への解決策です(例えばC++に対してはmix-inはあまり必要ない)。
私は、もっと広く、狭義のオブジェクト指向を明確にすべきだと言っている訳です。

>すいません。これが理解できません。varは原始的な(あえてそれ以上しない?)型推論以上のものではない
>しベースは関数型言語(「オブジェクトの」型について厳密)だと思うのですが、Relationalと何か関係があ
>るのでしょうか?
「var」が、「型推論を実行する契機になっている」という意味ではその通りです。
しかし、
型推論が必要になった「オブジェクト指向環境とそれ以外の相互運用」という意味では、
「O/R」と「R/O」という方向(結局は観点も)が異なるというだけの違い
だと言っている訳です。
また、
私は「言わば」と書いている筈です。
それは、「R/O」は「O/R」を例にした関係で、「R」としているという意味でもあります。
「var」の場合「R」が「クエリ」としてより一般的になっているだけではないでしょうか?
#私が言いたい本質は全く変わりません。全てを言葉にしないと分からないでしょうか?

>varなんて宣言のシンタックスレベルの話で構造にまで及ぶようなものでもないと思うんですけど、何か間違ってますかね?
>‥‥‥‥‥‥
>型を指定しないわけではなくて右に指定する(指定したものを使う)だけなのですから。
私は
「var」が必要になった
構造的背景を問題にしている訳です。
============================================================
>渋木宏明(ひどり)さん
>いえ、単に「入力する文字数が少ない方が好み」という意味でした (^^;
># begin ~ end より { ~ } がスキ。
了解しました。
私も、何十年にも亘る数学教育で身近な「ブロック記号」が受け入れ易いですね。
わざわざ、別の表記を使用して、エントロピーを上げる必要もないと思いますね。
============================================================
>ALL
ここで、今迄の問題に対する私の考え少し要約します。
1)取り敢えず、「var」は、導入する契機となった、「クエリ式」等必要最小限の部分でのみ使用する。
2)「var」の契機とは全く別の問題である「インスタンスとその変数に対するタイプ(型)」の表記をよりシンプルにするのであれば、
StringBuilder s = new ();
#「new」の後にスペース一個
の方が良いのではないでしょうか?
でも、これは
・new の後の「名無しコンストラクタ」は、変数タイプの該当コンストラクタを表す
という意味での「省略表記」許容です。
3)今後「var」とは異なる「同様の状況」が生じる可能性がある(寧ろ、その様な状況こそが、ソフトの有効性を高める)が、その状況を予見する事は出来ないので、「狭義のオブジェクト指向」を確立する事でそれに対処すべきである。

また、「プロパティ」の意味も明確になっておらず、それ以外の部分でも
「今の曖昧なオブジェクト指向」=「広義のオブジェクト指向」
には、問題が多すぎる。
#と言うか、ハッキリ言って、「百害あって一利なし」だと思います。

それから、LINQとVB、C#のスタンスが違うというのも、私は問題がある気がします。
VBとC#で違う表記を採用するのであれば、
「それら双方をVB、C#のどちらでも使用可能」
という環境(状況)は作れないのでしょうか?
これは、本来
「言語個々の問題では無い」
筈です。

[ メッセージ編集済み 編集者: object 編集日時 2006-01-15 14:30 ]

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