- PR -

他言語と比較したC#の特徴について

投稿者投稿内容
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2002-04-09 12:40
引用:

さらに、CLRは「HailStorm」や「.NET Passport」といった、マイクロソフトの提供するサービスにアクセスするようにも実装されてると思うのですが、このようなことを考えると、どうしても.NET Frameworkがインターネットに比重を置いてるように見えてしょうがないのです。


 「XXに重点的に対応する」ことと「XXに特化する」ことは違います。
 仮に、Internetには全く関係ないソフトを書く場合でも、C#はいいプロラム言語だし、.NET Frameworkもいい実行環境です。(ついでにJavaもいいプログラム言語ですよ)

引用:

C++と比較して実行速度面ではどうでしょうか?ガーベジコレクション等によるパフォーマンスの低下は考えられますか?僕の感じたところではプログラムの起動にやや時間がかかるということ意外は特に違和感は感じませんでした。
実際のところはどうなのでしょうか?


 多少の遅さはハードの進化でカバーできるので、C#に最速は求めていません。それより、欲しいソフトが短い時間で書けることの方が重要だと思っています。

_________________
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2002-04-09 12:55
引用:

あえてチャレンジ。これはJava言語がC++言語よりも生産性が高いことを意味するでしょうか?Javaの現在のメインターゲットであるサーバーサイド開発を例に取ると、これは別にJava言語そのものの生産性故の問題ではなく、単にC++には用意されなかったフレームワークがJavaにはあるという違いだけではないでしょうか。もしもC++で記述する前提で作られたServletフレームワークがあったなら(あるのかも?!)生産性は同等なものになったのではないでしょうか。


 これは個人的な感想であって証明された話ではないことを最初に断っておきますが。
 私がいちばんJavaで書いていたのはサーブレットのようなフレームワークが全く無い時代でした。その時点で、C++よりも素早くソースが書けることに驚かされました。

引用:

単一のプログラム言語ですべての問題領域に立ち向かおうとする試みは、PL/Iですでに破綻したと思います(いや、そう教わりました、私は)。そのような言語を作るのは不可能であるだけでなく無意味です。


 同意します。
 しかし、C++とJavaとVBに限って言えば、問題領域が重なった部分が多いにも関わらず、まったく相互に互換性のない状況で走っていて、無駄が発生したことも事実だと思います。同じような仕事をするプログラムであるにも関わらず、クラサバ時代のソースはVBで、イントラ時代のソースはJavaで、というような状況はあったと思います。その結果、ちょっとソースの一部を借りてくるのも一苦労だったと思います。全部C#になれば、もっと話は簡単になるんだけどなぁ、と思うこともありますが現実的には過去の資産をC#で全部書き換えるなど、無理な話なので、複数言語を1つの実行環境で扱う方が現実的だと思います。
 そういう意味で、CLRには大きな意義があると思います。
_________________
arton
会議室デビュー日: 2002/03/22
投稿数: 19
投稿日時: 2002-04-09 12:59
artonです。
引用:

しかし、ActiveXやOLEを筆頭とするCOMテクノロジが、その複雑さゆえユーザーに対してMicrosoftが描いたようには受け入れてもらえなかったのでは!?


大筋は同意しますが、セキュリティモデルを後からつぎはぎしたものか、根本からデザインに含めたものかの違いが一番、重要だと思います。
引用:

CLIと.NET Frameworkの意味の違いは何でしょう?


CLIは、.NET Frameworkの構成要素のうち、記述言語環境=タイプシステムと呼び出し規約に関する仕様ということでは。たとえばBase Classとかは、.NET Framework内ですが、CLIとは別の箱だったと記憶しています。
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2002-04-09 13:35
引用:

非プラットフォーム依存を唱えるJavaをMicrosoftが恐れたようにすら見受けられます。


 恐れているかも知れませんが、実際の開発の現場では非プラットフォーム依存の理想を貫き通すことは不可能でしょう。

引用:

しかし、ActiveXやOLEを筆頭とするCOMテクノロジが、その複雑さゆえユーザーに対してMicrosoftが描いたようには受け入れてもらえなかったのでは!?


 だから、過度に複雑にしないように、白紙に戻して作り直したのが.NET Frameworkなんだろうと思います。これが過去の資産の延長でやろうとしたActiveXとの違いと言えるでしょうか?

引用:

.NETの鍵の1つでもあるIISについてなのですが、今後今以上のシェアを拡大できるのでしょうか?


 たぶん、鍵じゃないと思います。以前、MSのセミナーのIISのセッションで.NETのことを質問したらきょとんとされました。IISと.NET関係はまったく独立して開発されているようです。要するにASP.NETというのは、IISから見れば、外部の独立したスクリプトエンジンの1つに過ぎない、という位置づけのようです。
 そういう意味で、Apacheの下でオープンソースのASP.NET互換スクリプトが動く時代が来る可能性もあり得ると思います。あるいは、CLI上で動くもっと別のWebアプリケーションフレームワークかもしれません。

_________________
arton
会議室デビュー日: 2002/03/22
投稿数: 19
投稿日時: 2002-04-09 18:14
間違い。
引用:

引用:

CLIと.NET Frameworkの意味の違いは何でしょう?


CLIは、.NET Frameworkの構成要素のうち、記述言語環境=タイプシステムと呼び出し規約に関する仕様ということでは。たとえばBase Classとかは、.NET Framework内ですが、CLIとは別の箱だったと記憶しています。


CLSと間違ったこと書いてました。CLIは、ECMA仕様で.NET FrameworkはMSのCLI実装(+アルファ)と考えればよいんじゃないでしょうか。
glass
常連さん
会議室デビュー日: 2002/04/08
投稿数: 23
投稿日時: 2002-04-10 13:33
皆さん、たくさんの知識を持っておられますね。
本当に勉強になることばかりです。
僕も日々精進して早く皆さんのような、熟練したプログラマーになれたいいと思ってます。

Microsoftに関しては、世界的に賛否両論が飛び交っていますが、やっぱりすごいチームだと思います。常に前に進もうとする彼らの姿勢、また実際に前に進んでいける技術には感銘を受けます。言い方を変えれば、世界を独占しようとしているとも言えるし、前に進まなければならない状況に置かれてるとも言えるかもしれませんが・・・。
また、あえてMicrosoftに対抗するSunMicrosystemsにも敬意を表します。
彼らがMicrosoftの傘下に入らないことによって、市場が活性化されてる気がします。(そうなのかな・・・?)
2001年度は赤字だったようですが、Microsoftのライバルでいてもらいたいです。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 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 に詳しい方から、何か補足と頂けると、嬉しいです。
A.K
会議室デビュー日: 2001/08/10
投稿数: 10
投稿日時: 2002-04-10 19:52
引用:

引用
引用:

引用:

CLIと.NET Frameworkの意味の違いは何でしょう?


CLIは、.NET Frameworkの構成要素のうち、記述言語環境=タイプシステムと呼び出し規約に関する仕様ということでは。たとえばBase Classとかは、.NET Framework内ですが、CLIとは別の箱だったと記憶しています。


CLSと間違ったこと書いてました。CLIは、ECMA仕様で.NET FrameworkはMSのCLI実装(+アルファ)と考えればよいんじゃないでしょうか。



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のアーキテクチャが見え隠れして
いるように感じているのは、私だけでしょうか?

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