- - PR -
他言語と比較したC#の特徴について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-04-09 12:40
「XXに重点的に対応する」ことと「XXに特化する」ことは違います。 仮に、Internetには全く関係ないソフトを書く場合でも、C#はいいプロラム言語だし、.NET Frameworkもいい実行環境です。(ついでにJavaもいいプログラム言語ですよ)
多少の遅さはハードの進化でカバーできるので、C#に最速は求めていません。それより、欲しいソフトが短い時間で書けることの方が重要だと思っています。 _________________ | ||||||||||||
|
投稿日時: 2002-04-09 12:55
これは個人的な感想であって証明された話ではないことを最初に断っておきますが。 私がいちばんJavaで書いていたのはサーブレットのようなフレームワークが全く無い時代でした。その時点で、C++よりも素早くソースが書けることに驚かされました。
同意します。 しかし、C++とJavaとVBに限って言えば、問題領域が重なった部分が多いにも関わらず、まったく相互に互換性のない状況で走っていて、無駄が発生したことも事実だと思います。同じような仕事をするプログラムであるにも関わらず、クラサバ時代のソースはVBで、イントラ時代のソースはJavaで、というような状況はあったと思います。その結果、ちょっとソースの一部を借りてくるのも一苦労だったと思います。全部C#になれば、もっと話は簡単になるんだけどなぁ、と思うこともありますが現実的には過去の資産をC#で全部書き換えるなど、無理な話なので、複数言語を1つの実行環境で扱う方が現実的だと思います。 そういう意味で、CLRには大きな意義があると思います。 _________________ | ||||||||||||
|
投稿日時: 2002-04-09 12:59
artonです。
大筋は同意しますが、セキュリティモデルを後からつぎはぎしたものか、根本からデザインに含めたものかの違いが一番、重要だと思います。
CLIは、.NET Frameworkの構成要素のうち、記述言語環境=タイプシステムと呼び出し規約に関する仕様ということでは。たとえばBase Classとかは、.NET Framework内ですが、CLIとは別の箱だったと記憶しています。 | ||||||||||||
|
投稿日時: 2002-04-09 13:35
恐れているかも知れませんが、実際の開発の現場では非プラットフォーム依存の理想を貫き通すことは不可能でしょう。
だから、過度に複雑にしないように、白紙に戻して作り直したのが.NET Frameworkなんだろうと思います。これが過去の資産の延長でやろうとしたActiveXとの違いと言えるでしょうか?
たぶん、鍵じゃないと思います。以前、MSのセミナーのIISのセッションで.NETのことを質問したらきょとんとされました。IISと.NET関係はまったく独立して開発されているようです。要するにASP.NETというのは、IISから見れば、外部の独立したスクリプトエンジンの1つに過ぎない、という位置づけのようです。 そういう意味で、Apacheの下でオープンソースのASP.NET互換スクリプトが動く時代が来る可能性もあり得ると思います。あるいは、CLI上で動くもっと別のWebアプリケーションフレームワークかもしれません。 _________________ | ||||||||||||
|
投稿日時: 2002-04-09 18:14
間違い。
CLSと間違ったこと書いてました。CLIは、ECMA仕様で.NET FrameworkはMSのCLI実装(+アルファ)と考えればよいんじゃないでしょうか。 | ||||||||||||
|
投稿日時: 2002-04-10 13:33
皆さん、たくさんの知識を持っておられますね。
本当に勉強になることばかりです。 僕も日々精進して早く皆さんのような、熟練したプログラマーになれたいいと思ってます。 Microsoftに関しては、世界的に賛否両論が飛び交っていますが、やっぱりすごいチームだと思います。常に前に進もうとする彼らの姿勢、また実際に前に進んでいける技術には感銘を受けます。言い方を変えれば、世界を独占しようとしているとも言えるし、前に進まなければならない状況に置かれてるとも言えるかもしれませんが・・・。 また、あえてMicrosoftに対抗するSunMicrosystemsにも敬意を表します。 彼らがMicrosoftの傘下に入らないことによって、市場が活性化されてる気がします。(そうなのかな・・・?) 2001年度は赤字だったようですが、Microsoftのライバルでいてもらいたいです。 | ||||||||||||
|
投稿日時: 2002-04-10 14:05
引用: -------------------------------------------------------------------------------- すえぞうさんの書き込み (2002-04-07 14:35) より: C#はC++の後継というよりも、Javaの改良版というふうに最近思えてきています。Javaの改良版でありながら、VBなどのプロパティの概念を取り入れたり、C++からは・・・何を取り入れたんだろう・・・とにかく「文法的に各種言語の良い点を整然と取り入れている」なんとも贅沢で、それゆえシンプルに記述できる言語なのだと感じているのです(可変個数の引数とか!)。 -------------------------------------------------------------------------------- C#関係の書籍を読んでても「C#はJavaの改良版」という記述が多いですよね。 でも、私は最初からずっと感じてる事があるんです。 「C#はDelphi Pascal のC系バージョン」であると。 プロパティに関しても、用語としては「VB」が早いのかも知れないけれど、言語として最初に取り入れたのは、Delphi じゃないでしょうか? インデクサもそうですね。 デリゲート、イベントもそれに近いと思います。 それから、アセンブリですけど、私の目には Delphiのコンパイル済みユニットである「dcu」をより完成させたもの として、映ります。 Delphiと同じくC#も「Anders Hejlsberg」が中心になって係わっているそうです。 C# は Javaの影響は受けてると思います。 でも決して Java の改良版ではないと私は思います。 C#を学ぶ上で、Delphiはもっと正当に評価されるべきではないでしょうか。 それから 引用: -------------------------------------------------------------------------------- glassの書き込み (2002/04/08) より: あと、僕が.NETに対して思うのは、.NETはActiveXテクノロジの延長にいる気がするのですが、皆さんはどう思われますか。 -------------------------------------------------------------------------------- に対してですが、Delphi を少し知ってる立場からみると、少し異論があります。 「.NET」が余りに広いので、広い意味では、間違っているとは思いません。 でも、技術的な意味では、ActiveX からの大転換ではないでしょうか? Delphi に詳しい方から、何か補足と頂けると、嬉しいです。 | ||||||||||||
|
投稿日時: 2002-04-10 19:52
ECMAの観点から記述しますと、ECMAではCLIとC#というものが標準化されています。 CLIとは、共通言語インフラという表現で、中には共通タイプシステム、実行エンジン、 JIT、タイプ定義、CIL(MSILのことです)、PEフォーマット等があります。この中に 説明資料としてライブラリがあります。このライブラリが、.NETのBaseクラスに相当 するものになります。 この仕様書を読むと理解できるのですが、C#はその大半の機能がCLIの仕様をそのまま 利用しています。 MSの.NET Frameworkでは、CLI+MS独自拡張(Web.Forms等)がライブラリとして含まれて います。 個人的には、.NETはCOMの発展系だと考えています。ですが、カバーする領域が 広過ぎて単純に発展系だと見えないところが、難しいように感じています。 例えば、interopですが、これもCLIで定義されています。更に、delegateやremoting 等もCLIに含まれています。interopとして利用するCOM+Serviceですが、この機能は System.Enterprise.Servicesに含まれていますし、VS.NETで作成されるAssembly.info 等にはclsidのGUIDもあります。そこかしこに、COMのアーキテクチャが見え隠れして いるように感じているのは、私だけでしょうか? |