@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

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

投稿者投稿内容
Muse
常連さん
会議室デビュー日: 2002/03/08
投稿数: 34
投稿日時: 2002-04-07 14:35
こんにちは。すえぞうと申します。
はじめて書き込みますが、よろしくお願いいたします。
私はC#という言語について非常に興味があります。只今、勉強中です。

いきなりで非常に恐縮ですが、川俣さんにリクエストしたい記事があるのです。
それは件名にもあります通り「他言語と比較したC#の特徴について」です。
一介の読者がリクエストなんかしていいのかという恐れはありますが、いても立ってもいられない理由があるのです。まず、この@ITというサイトを最近まで知らなくて、このサイトを見つけた時、「これだ!」と思いました。技術者として読みたい記事がこんなに充実しているサイトがあるとは思いませんでした。

もう一つの理由として、C#があります。
今までいろいろな言語が発明されてきました。私は今まではMicrosoft Visual C++(以下、VC)が最高のものであり、これ以上の言語はないのではないかと思っていました。少なくともシステムプログラミングに関して言えば。しかし、私がMFCを勉強しつつ、横で同僚がVBを使って軽々と「ビジュアル」なアプリを作っていたりすると、「なんなんだ、この状況は?@@」と疑問を感じざるおえません。VCは確かにすばらしい言語ですが、はっきり言って「難解」すぎます。

C++の文法自体には、文句はありません。実際には、Windowsというプラットフォーム上で開発する際、MFCの使い方をマスターする必要があります。これもよしとしましょう。しかし、実際にはMFCを使ってC++でソースコードを書く際、「コメントなんだけど、MFCに何らかの指示を出すコメント」なるものに遭遇しました。これはC++という言語に対する限界を表しているものだと感じたのです。
また、「ビジュアル」ということに関しても、「一体、どれくらいビジュアルなんだ?」という疑問です。VBだとフォームをまず作って、そのフォーム上に配置したコントロールに対してイベントを作っていきます。確かに、VCでも作成したリソースに対して、それをコントロールするクラスを作ってイベントを処理して・・・などを行えばできますが、VBに比べて煩雑すぎます。

では、VBならどうか?
VBなら、確かに「ビジュアル」だと思います。しかし、VBはそれ以前にBASICなので、仕事で使うにはあんまり好きではありません。不可解な文法(私はこれを「言語的なゆがみ」と呼んでいます)であるという理由からです。昔の8Bitパソコンの時代では、BASICは趣味で楽しくやるものでした。私自身もN60BASICで相当遊んでました。Cコンパイラなどない時代でしたから。でも、業務用アプリやら何やらを仕事で使うのに、なんでBASICなんだろうと思ったわけです。VB自体はBASICというよりも、言語自体がかなり拡張されているのですが、それでも昔のBASICの文法を「伝統的」に守っているフシが多々あります。「なんでこんな古くさい書き方をするんだ?ま、BASICだからいっか」と無理やり自分を納得させている方もいらっしゃると思います。

では、Javaは?
Javaも興味深い言語です。私自身は白状しますと、まだJavaに関しては初心者です。CやC++を何年もやっていたものですから、そんなに抵抗はありません(Javaのクラスライブラリを学習するのは苦労してますが)。でも、はっきり言ってしまうと、Javaにも不満があります。最初は「なんてすばらしい言語なんだろ」と思ってました。しかし、いろいろ知っていくと、「う〜む」と疑問を感じてしまう点がでてきました。
一つはパフォーマンスに関してです。これは、この記事の趣旨とは違うのであんまり詳しくは書きませんが、要するに「体感できるほどパフォーマンスが悪い」という点です。これは実装の問題なので、ここでは突っ込みません。
もう一つは、文法的な面です。こっちのほうが私にとっては、重要です。
例えば、Javaにはunsignedの整数を扱う型がありません。ある業務アプリを作る際、バイト配列を扱う必要に迫られました。この一つの配列要素には、0〜255の値を格納したかったのです。しかし、Javaはunsignedの整数型がないので、大変困りました。といいますか、その時は大変ショックでした。「えーと・・・この場合はbyteじゃなくintの配列で格納しなければならない? それはメモリ容量という面からいうと非効率的すぎる・・・単純に必要サイズの2倍になるのだから」。ここではどう対処したかは書きませんが、この件にはまったく驚かされました。あと、C++でいうところのoperator(演算子のオーバーロード)です。Javaに関してまったく知らなかった頃、C++で使っていたoperatorがJavaでもあるだろうと漠然と(勝手に)思っていたのですが、存在しないことが分かったのです。これにも私には驚きでした。

C#はC++の後継というよりも、Javaの改良版というふうに最近思えてきています。Javaの改良版でありながら、VBなどのプロパティの概念を取り入れたり、C++からは・・・何を取り入れたんだろう・・・とにかく「文法的に各種言語の良い点を整然と取り入れている」なんとも贅沢で、それゆえシンプルに記述できる言語なのだと感じているのです(可変個数の引数とか!)。

川俣さんのC#の記事には、初めにちらっとC#とC++/VB/Javaとの違いについて触れられていたと思いますが、もっと突っ込んだ記事が読みたいなと思い、このような記事を投稿しました。

#言語の文法の違いだけじゃなく、開発環境(コンポーネントプログラミングなど)も考慮にいれた方がいいのかもしれません。例えばプロパティの概念などは、コンポーネントプログラミングの象徴的な現れだと思っています。

それでは失礼いたします。


[ メッセージ編集済み 編集者: すえぞう 編集日時 2002-04-07 23:45 ]
glass
常連さん
会議室デビュー日: 2002/04/08
投稿数: 23
投稿日時: 2002-04-08 07:21
初めまして。glassと申します。
僕は現在大学の3年で、皆さんに比べればまだまだ未熟者ですが、皆さんと同じく"C#"というプログラミング言語に色々な意味で興味を持っている1人です。
MFCとATLを愛用しています。
さて、この度はすえぞうさんの記事を見まして、驚くほど同じ考えの人がいるんだなと思い、というよりもやはり皆さんもそう思ってるのかなと思い、メッセージを投稿させていただきました。
C#とC++/Java/VBの違いについては僕も非常に皆さんの意見を聞きたいです。
僕がC++・MFC・ATLを好んでいるというのもありますが、特にC#とC++についてどう思っているのかが一番気になるところです。
というのはC#は果たしてC++と同じ土俵に位置されるのでしょうか?
以前によくC++ vs Javaという言葉を目にしましたが、僕はC++とJavaは土俵が違うと思っています。C++はMFCやATLといった巨大かつ強力なライブラリを持ったパワーのある言語です。ただ、C言語の構造化プログラミングも許されているため、自由度と高速性を持っていますが、実に難解な言語です。
それに比べてJavaは(C#もですが)実にスマートな言語で、洗礼されたオブジェクト指向言語です。
さらにC++はWindowsアプリケーションやCOMコンポーネントでは巨大な力を発揮しますが、Webアプリケーションとなると簡単なDHTMLを作成するのにも一苦労です。
逆にJavaは動作速度が遅いのと、WindowsAPIを叩けない(叩けるようになってしまいましたが)ためWindows上ではあまりパフォーマンスがよくありませんが、Web上となると、アプレットやJSP・サーブレットのように高性能な機能を持っています。
JavaScriptという名前のスクリプト言語まで登場してますし。
このように僕個人ではC++とJavaは目的によって使い分けるべきだと思います。
VBは内部を相当隠蔽してるので、これはこれであまり比較できないと思います。
ASPの構築にも使われますが、どちらかというと使いやすさを追求した言語ですよね。

ではC#はどのような位置づけになるのでしょうか?
XML WebServiceをはじめとする.NETテクノロジの中心となる言語と称されているからには、Javaとは比較できると思いますが、C++とは比較できるのでしょうか?
C++&MFCに匹敵するWindowsアプリケーションは構築できるのでしょうか?
さらに以下のような疑問も浮かんでおります。
ASP.NETはVB.NETで構築するよりC#で構築した方が良いのでしょうか?
(それ以前にIISは世間に普及されるのでしょうか?)
後発であるためC#がJavaよりも高性能であることは間違いないと思いますが、実際にJavaで開発するよりも高性能なアプリケーションは作れるのでしょうか?

僕個人としては、C#の能力は非常に高いと思っているのですが、実用性となるとやや中途半端な気がするのですが、皆さんはどう思われているのでしょうか?
もちろん単に良い悪いといえる問題ではないと思いますが、この際とことん議論していただけると光栄です。
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2002-04-08 12:25
引用:

すえぞうさんの書き込み (2002-04-07 14:35) より:
こんにちは。すえぞうと申します。
はじめて書き込みますが、よろしくお願いいたします。


 はじめまして。
 プログラム言語の比較ということですが、これは非常に難しい話です。
 単純にXX機能の有無について、個々のプログラム言語間で○×表を作るだけなら難しい話ではありません。
 しかし、機能が少ない言語が劣っているかというと、必ずしもそうとは言えません。機能が少なくても、組み合わせによって表現力を高められる言語もあります。また、機能が多すぎると非常に分かりにくくなる危険があります。
 たとえば、C++では演算子の動作を自分で記述できますが、Javaはできません。だから、Javaは不完全かというと、そういうわけでもありません。実際に、他人の書いたソースを読むときに、"+"が足し算と違う機能を与えられていたりすると、ソースの意味を把握するのが困難になります。ソースをシンプルで分かりやすくするには、危険な機能は減らすに限るというのも1つの見識です。それと同時に、複素数や座標クラスを作るときに、"+"で加算を表現できないのも分かりにくくなる要因だというのも1つの見識です。
 そういう意味で、私はこの機能があることが正しいのか、無いことが正しいのか、判断が付きかねます。
 C#にあるインデクサやプロパティも同じことで、誤用すればとんでもなく分かりにくいソースを記述でき、危険であるとも言えます。しかし、ソースをすっきり記述するには合った方が良いとも言えます。
 ですので、安易にXX言語はXX言語より優れるとか、XX言語はXX分野向きということを主張することは難しいと思います。おそらく、プログラム言語の優秀性は、実績を通してのみ評価できることだろうと思います。
 実績を通してみれば、おそらく、JavaはC++よりも生産性が圧倒的に高い言語であったと言えると思います。C++の多くの機能が存在しないにも関わらず、Javaの方がより短い時間でプログラムを完成させられた事例が多いように思います。
 C#に関しては、この種の実績を積み重ねている途中で、まだ評価を下すには早いと思います。

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

ではC#はどのような位置づけになるのでしょうか?


 Microsoftの構想としてはC++とJavaとVBを置き換える言語でしょう。
 そもそも、複数のプログラム言語を用途によって取り替えながら使わねばならないことが、一種の異常な状態であって、C#は本来あるべき状態に戻すための存在だと思います。
 とはいえ、実際にはVBに慣れたプログラマなどが、C#に移りたくないと思っている事例も多いので、全てC#に置き換わる訳ではないと思いますが。

引用:

XML WebServiceをはじめとする.NETテクノロジの中心となる言語と称されているからには、Javaとは比較できると思いますが、C++とは比較できるのでしょうか?


 比較できます。なぜならC#は、ただの普通のプログラム言語であって、C#でWebサービスを記述できるというのは、C++でCGIが記述できると言うのと同じような意味しかないからです。C#言語仕様には、何一つ、Webサービス専用の機能は含まれていません。
 この件は相当混乱が見られるようですが、.NET FrameworkはWin32環境の後継となるものと思った方が分かりやすいと思います。けしてネットワークサービス用に特化された特殊な環境ではないと言うことです。(Javaだって、本来は汎用のプログラム言語であって、ネットワークサービス用の特殊な言語ではありません)

引用:

C++&MFCに匹敵するWindowsアプリケーションは構築できるのでしょうか?


 できるでしょう。何かの制約があれば、直接API呼べば良いだけのことです。(MFCでも同じことでしょうが)

引用:

ASP.NETはVB.NETで構築するよりC#で構築した方が良いのでしょうか?


 どちらで書いても実行環境は同じなので、どちらでも良いと思います。
 VB.NETで書いたコードをC#から呼んだり逆もできるので、途中で変更しても面倒は少ないと思います。

引用:

後発であるためC#がJavaよりも高性能であることは間違いないと思いますが、実際にJavaで開発するよりも高性能なアプリケーションは作れるのでしょうか?


 これは、実行環境の問題であって、言語の違いとは違うような気がします。まあ、言語仕様にパフォーマンスに関係する要素が含まれることは事実で、C#の方がやや性能が出やすいと思いますが。(構造体があるとか、メソッドがデフォルトでnon virtualであるとか)

引用:

僕個人としては、C#の能力は非常に高いと思っているのですが、実用性となるとやや中途半端な気がするのですが、皆さんはどう思われているのでしょうか?


 C#は極めて実用的な言語だと思います。
 C#でも低レベルの処理、OS依存の処理をガンガン書けるので、通常のアプリケーションソフトのレベルなら、C++の置き換えとしても、十分に通用するでしょう。
 ただ、危ない機能は使えないようにロックされているので、ポインター型の利用などは自分で制限を解除しながら扱う必要がありますが。
_________________
glass
常連さん
会議室デビュー日: 2002/04/08
投稿数: 23
投稿日時: 2002-04-08 20:21
引用:

そもそも、複数のプログラム言語を用途によって取り替えながら使わねばならないことが、一種の異常な状態であって、C#は本来あるべき状態に戻すための存在だと思います。


確かにそうですね。でも、全ての分野を網羅するのは難しいように思えます。
そう考えればC#は確かにすばらしい言語だと思います。

引用:

C#言語仕様には、何一つ、Webサービス専用の機能は含まれていません。
この件は相当混乱が見られるようですが、.NET FrameworkはWin32環境の後継となるものと思った方が分かりやすいと思います。けしてネットワークサービス用に特化された特殊な環境ではないと言うことです。


Web Formsなどはどう位置づけられているのでしょう?
あれはXMLファイルを生成するものですよね?(実際VS.NETを持っていないので詳しくはわからないのですが)
さらに、CLRは「HailStorm」や「.NET Passport」といった、マイクロソフトの提供するサービスにアクセスするようにも実装されてると思うのですが、このようなことを考えると、どうしても.NET Frameworkがインターネットに比重を置いてるように見えてしょうがないのです。
でも、確かに視野を広くして客観的に見れば.NET Frameworkはインターネットに特化したわけではないかもしれません。
これは、個人的にはうれしい(?)発見です。

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

C#を批判するような言葉を並べていますが、C#に好奇心があるゆえのことです。
色々と知りたいと思っています。
NothingBut.NETFX
大ベテラン
会議室デビュー日: 2001/09/13
投稿数: 102
投稿日時: 2002-04-08 21:35
引用:

autumnさんの書き込み (2002-04-08 12:25) より:
 実績を通してみれば、おそらく、JavaはC++よりも生産性が圧倒的に高い言語であったと言えると思います。C++の多くの機能が存在しないにも関わらず、Javaの方がより短い時間でプログラムを完成させられた事例が多いように思います。



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

引用:

autumnさんの書き込み (2002-04-08 12:49) より:
 Microsoftの構想としてはC++とJavaとVBを置き換える言語でしょう。
 そもそも、複数のプログラム言語を用途によって取り替えながら使わねばならないことが、一種の異常な状態であって、C#は本来あるべき状態に戻すための存在だと思います。



反対します。単一のプログラム言語ですべての問題領域に立ち向かおうとする試みは、PL/Iですでに破綻したと思います(いや、そう教わりました、私は)。そのような言語を作るのは不可能であるだけでなく無意味です。さまざまな得意技を持つ言語がそれぞれにコラボレートすることができる環境こそが、Microsoftが目指しているものだと思います。C#ですべてを置き換えるつもりなら、どうしてC#にはCLRのすべての機能が含まれていないのかが説明できません。

今日(4/8)に公開されたASP.NETの記事の中にも、「.NETの世界では、もはや用途に応じた言語の使い分けは必要ないのである。」って書いてありますが、私はそうは思いません。

引用:

glassさんの書き込み (2002-04-08 20:21) より:
Web Formsなどはどう位置づけられているのでしょう?
あれはXMLファイルを生成するものですよね?



いえ、違います。というかXMLも出力できますし、その気になればHTTPのContent-Typeに書くことができるどんなデータでも出力できますが、主目的はHTMLの出力です。いわゆる「Webアプリケーション」の開発環境です。glassさんがおっしゃっているものは、おそらくASP.NETのもう1つの柱であるXML Web サービスのことだと思います。

引用:

さらに、CLRは「HailStorm」や「.NET Passport」といった、マイクロソフトの提供するサービスにアクセスするようにも実装されてると思うのですが、



これはまだだと思います。そのうちそうなるでしょうが。

引用:

このようなことを考えると、どうしても.NET Frameworkがインターネットに比重を置いてるように見えてしょうがないのです。
でも、確かに視野を広くして客観的に見れば.NET Frameworkはインターネットに特化したわけではないかもしれません。
これは、個人的にはうれしい(?)発見です。



.NET Frameworkは、(最近のMicrosoftの技術の例に漏れず)インターネットとデスクトップの垣根を取り払おうとしています。その意味では、インターネットに比重を置いているともいえますし、インターネットに特化していないともいえます。Microsoftはデスクトップ企業 ですから、そこからインターネットの世界に進出した以上は、そちらに比重を置いているように見えるのは仕方ないと思います。ですが、.NET Frameworkの目標は、打倒Javaなんていうちっぽけなものではなく、デスクトップをいわゆるインターネットの世界に直結しようとすることだと思います(っていうか信じています)。Information At Your Fingertipsってやつですね(古すぎて誰も知らないか?)

引用:

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



Microsoftの方が、かつて講演でVC++とC#のJIT後の逆アセンブラを比較して、「同じでしょ!」っていっていたのを見た記憶があります。

いろんなコミュニティでパフォーマンス測定が花盛りになっていますが、ループをまわすのはどっちが速いとか、画面の描画はどうすると速いとかいう細かいことって、.NET Frameworkの世界では大して意味を持ちません。まして、これらのパフォーマンス測定はほとんどデバッグモードで行われていて、CLRのJITコンパイラの威力をほとんど無効化しています。JITコンパイラ環境で本当のパフォーマンスを測定するのは、素人(もちろん私も含む)には至難の業でしょう。

パフォーマンスに関する私の見解を言わせていただくなら、まず第一に、ぎりぎりのスピードを求めるのならプラットフォームのネイティブコード(つまりx86アセンブラ)で書く以外に選択肢はありません。第二に、スピードの問題はほとんどの場合ハードウェアで解決できます。第三に、私たち(少なくとも私程度の人間)が思いつく大抵の最適化アイデアは、Microsoftのエンジニアでも思いつきます。そして、それは将来のCLRに含まれるようになります。そうなると、私が小手先で行った最適化は最悪化になってしまう結果を招きかねません。第四に、お金になるコードのほとんどは何らかのI/Oがボトルネックになるので、コードの最適化は大してお金になりません。

[ メッセージ編集済み 編集者: NothingBut.NETFX 編集日時 2002-04-08 21:45 ]
glass
常連さん
会議室デビュー日: 2002/04/08
投稿数: 23
投稿日時: 2002-04-09 02:26
他の掲示板でこのような題(「C#をどう思うか」とか「C#とJavaはどっちが上なのか」などという題)を投稿すると、「もうその手のやつはいいだろう。どの言語がいいとかはないんだよ。」といった感じで一蹴されますが、こうして皆さんの意見を聞くとやはりものすごく勉強になります。

引用:

さまざまな得意技を持つ言語がそれぞれにコラボレートすることができる環境こそが、Microsoftが目指しているものだと思います。C#ですべてを置き換えるつもりなら、どうしてC#にはCLRのすべての機能が含まれていないのかが説明できません。


C#の位置づけに関しては多種多様な意見があるようですね。
僕のようなあまり知識のないものから見ると、やはりJavaに取って代わる言語としてMicrosoftが生み出したように思えてしまいます。
非プラットフォーム依存を唱えるJavaをMicrosoftが恐れたようにすら見受けられます。

引用:

.NET Frameworkは、(最近のMicrosoftの技術の例に漏れず)インターネットとデスクトップの垣根を取り払おうとしています。その意味では、インターネットに比重を置いているともいえますし、インターネットに特化していないともいえます。Microsoftはデスクトップ企業 ですから、そこからインターネットの世界に進出した以上は、そちらに比重を置いているように見えるのは仕方ないと思います。ですが、.NET Frameworkの目標は、打倒Javaなんていうちっぽけなものではなく、デスクトップをいわゆるインターネットの世界に直結しようとすることだと思います。


あと、僕が.NETに対して思うのは、.NETはActiveXテクノロジの延長にいる気がするのですが、皆さんはどう思われますか。
「デスクトップをいわゆるインターネットの世界に直結しようとしている」というのはActiveXが試みたことではないでしょうか?
しかし、ActiveXやOLEを筆頭とするCOMテクノロジが、その複雑さゆえユーザーに対してMicrosoftが描いたようには受け入れてもらえなかったのでは!?
これは、ATLの発表にも見られる事態だと考えられます。
それを.NETテクノロジと新たに題して、もう一度ユーザーの心を捉えようとしているとは考えられないでしょうか?
もちろんそれ以上の恩恵も受けることはあると思いますが。

それともう1つ、皆さんにお聞きしたいことがあります。
.NETの鍵の1つでもあるIISについてなのですが、今後今以上のシェアを拡大できるのでしょうか?
現在ではFreeBSDにCLIが組み込まれているようですが、さらにミゲル・デ・イカーサ率いるジミアンもLinuxに対して「Mono」とよばれる.NET Frameworkをオープンソースにしたようなツール(プロジェクト)を開発しているようですが、やはりIISのシェアが広まらない限り.NETの成功もないような気がするのですが、そんなことはありませんか?
.NET Frameworkが組み込まれてる環境ならばASP.NETなどの技術は使用することができるのでしょうか?

余談:
CLIと.NET Frameworkの意味の違いは何でしょう?
uda
会議室デビュー日: 2001/12/28
投稿数: 13
投稿日時: 2002-04-09 10:09
引用:

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



一意見ですが。
これは、VC++でCOMがネイティブサポート(VC5か6かだったと思う)されたときに似たような想定に思えます。VBで扱うことが簡単であったCOMがVCでも劇的に簡単になりましたが、やはりVCよりVBのほうが楽であって生産性が高いと感じてしまいました。

引用:

単一のプログラム言語ですべての問題領域に立ち向かおうとする試みは、PL/Iですでに破綻したと思います(いや、そう教わりました、私は)。



同感です。
そもそもMSは、COMで複数言語のコラボによる開発を提案していたのだと理解しています。そう考えると、.NETのAssemblyは、純粋のCOMが進化したものだと考えれるのです。
COMよりもっとスマートに複数言語間でコラボできます。

ということで
引用:

僕が.NETに対して思うのは、.NETはActiveXテクノロジの延長にいる気がするのですが、皆さんはどう思われますか。


同感いたします。
というか、.NETFrameworkを勉強していると、ありとあらゆるMSの過去の技術の結集に感じ取れます。(MS自身そういってますし)

引用:

パフォーマンスに関する私の見解を言わせていただくなら、まず第一に、ぎりぎりのスピードを求めるのならプラットフォームのネイティブコード(つまりx86アセンブラ)で書く以外に選択肢はありません。第二に、スピードの問題はほとんどの場合ハードウェアで解決できます。第三に、私たち(少なくとも私程度の人間)が思いつく大抵の最適化アイデアは、Microsoftのエンジニアでも思いつきます。そして、それは将来のCLRに含まれるようになります。そうなると、私が小手先で行った最適化は最悪化になってしまう結果を招きかねません。第四に、お金になるコードのほとんどは何らかのI/Oがボトルネックになるので、コードの最適化は大してお金になりません。



コンパイラの技術はかなり成熟しています。MSのカンファレンスでも言っていましたが「素直にコードを記述」すれば、コンパイラが最適化しやすいのです。そうすれば、自然と実行速度が速くなります。
わたしの意見としては、プログラムの実行速度の問題は、以前よりさらに上流工程で解決する問題になったのかなと。
(ASP.NETでページ遷移をどうするとか、そっちのほうが重要!?)


[ メッセージ編集済み 編集者: uda 編集日時 2002-04-09 12:37 ]

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