C#に触ってみました 2001.March 1. 概要 シーシャープって何?とか言います?MSがJava対抗用として作った、似て非なる言語の ことです。 クロスプラットフォームだとか次期.NET構想の主役の1人だ。とか言う話もどこかで聞いた ことがある人はあるでしょう。それのことです(説明になってないぞー>わし)。 #製品版では違うかもだが、クロスプラットフォームと言いながらWin95やWin98では  動作しない。ってのでは、最初から破綻しててどーする?とか思う所だけど。まぁ、 Mac OS Xより古い場合、Java2は動きません。とかいう他の例もあるけど。 2. .NET SDK Beta1 (日本語版) MSのサイトからただで落とせる。ただし100MBを凌駕する代物なのでちとアレだが。 こんだけでかくてもコマンドライン・コンパイラしか付属してない。ビジュアルな VS.NET (だっけ?確かこんな名前)の方はMSDNユニバーサルエディションの人でないと 落とせない。というかユニバーサルな人にはもれなくCD-ROMが送られて来るそうだが。  ま、コマンドラインコンパイラ(要はDOS窓で使うもの)に抵抗がない当方としては それでも構わなかったんだが(負け惜しみにしか聞こえないが)。あ。サンプルだの ヘルプだのは一杯付いてます。  しかし「こいつはβだから仕事で使うマシンに入れるな。いつすっ飛んでも構わん ヤツにインストールすべし」とか書いてある。 MSの場合、市販品だってインストール順を間違うとマシンがすっ飛ぶ(起動しなくなる) ことは珍しくない。ましてβだとそれこそ危なすぎるとか言うのは常識。 言われなくてもメインマシンには入れません。というか、WinMeではないので入らないけど。 Win95の「笑ってお仕事」というのは、WordなりExcelなりが突然ハングして 「もう笑うしかない」という状況のことを言う。というしゃれにも何にもならない 事実があったりする訳で……。 さて。実は(この3月までだけど)その、いつ飛んでも痛くないマシンがたまたま手元に あったんですね。それでちょっと触って見た。  また、このSDK、WinMe/NT4/W2Kでしか動作しません。で、私が触れるマシンのうちこの 条件を満たすのが先のマシンただ1台のみ。という現実もあった訳です。 #ちなみにMeでは.Netの全ての機能は使えません  マシンの名はエンデバー。Epson directの800MHzなWinMe desktop。これが10万しないっ  ちゅうから笑っちゃう。HDD 10Gだし(だからこそセットアップ前で100M超な代物を入れる  決心が付いたということもあるが)。 3. マニュアル斜め読み〜 MSの.NET構想がどれだけうまく行くかは神のみぞ知ることだが、さて。.NET対応言語 としてはC#だけでなく、VB(VB Script)、JScript(Java scriptのMS版)、そしてC++。 このうち最後のC++だけが.NETと関係のない*従来アプリ**も*作れるのだそうな。 VBは以前のVisual Basicと大分雰囲気が変わるみたい。アップグレードというより、 名前が同じな別言語。といった所か。だからDelphにしとけと言ったのに>某氏 んで、どの言語もコンパイラであり、.EXEファイルを作れるみたい。確かめた訳では ないが。 このSDKでは一応上の全言語が含まれているみたい。Javaが含まれていないことに注意。 (JavaとJavaScriptは名前が似ているだけの別言語です)  あたしゃC#をちょっとだけ触ってみたかったので、他の言語はとりあえずパス。 4. C#とJava  お約束の「Hello World!」だけど、こんな感じ。 using System; class Hw { public static void Main(atring[] args) { Console.WriteLine("Hello World!"); } } 何かと似てないかい?そうです。思った通りJavaとそっくし。MSに言わせればそれは C#はC++やJavaの*いいとこ取り*だから。ということになるのだが。 class hw { public static void main(String[] args) { System.out.println("Hello World!"); } } 上はJavaのコード。ほとんどまるっきり同じ。「{}」の位置が違うけど、んなもんは どうでも良いことですね。どこで改行するか。という趣味の問題だけですから。 …違うのは関数名だけではないかい? とか思ったのは私だけではないはず。まぁGUIなプログラムとかになれば全然違って くるかも。なのですが。 あと、C#でWindowを作るサンプルとJavaでWindowを作るアプレットのコードもそっくり。 sed辺りで関数名を置換すりゃOKなんでねぇの?とか思ったほど。 5. 終わりに こんだけ似てるんだったら、まだ汎用性のある(というか自宅環境でも動かせる)Javaの 方がましな気がとってもしました。 後、800MHzなマシンでC#なウィンドウを作るごく単純なソース(サンプル丸写ししたんで 著作権上、ここには出せませんが、全部で20行のソース)をコンパイル後、できた.EXEを 起動すると……。 それはそれは待たされます。IE5.xを起動するよりは早い。というか、スプラッシュ画面 (起動前に「私は何とかです」とかいうグラフィックを出すアプリがあるでしょう?あの 画面のことをスプラッシュ画面とか言うのです)が欲しい。とかマジで思った。 #マシンの実装メモリが*たった*の64MBしかなかった。ってのが原因かも 多分、Window 1つ作るにも.NET関係のDLLを背後で山のようにロードしないとだめだ。 ということなのでしょう。 んで、これがWindowsに統合されると、旧バージョンに比べ必要メモリ量2倍!とか言う ことに……?  #まぁJavaも似たようなもんだが  ちなみにコンパイル時に使ったコマンドラインはこんなの。 csc /r:system.dll /r:system.winforms.dll /r:system.drawing.dll /r:microsoft.win32.interop.dll CSWIN.CS 何か思いっ切りWindowsに依存してる感じなのだが……。本当にクロスプラットフォームに なるの? PS. 余り関係ないけど、Kylixのβ版評価に申し込もうとしたら、既に受け付けは終了  してました(;_;)。Borlandが約束している無料版が出るまで待つか…… (EOF)