C#は.NETにおける位置づけがポイントとなること,言語の特徴があまりにもシステムプログラムに近くてわかりにくいという理由から,C#の背景を先に解説しました.
C#は単に言語仕様の拡張というだけに留まらず,.NETを具体化する開発作業の主要な言語として,C++言語仕様および過去のソフトウェア資産をCOM+,ATL+,XMLなどと統合し,データベースからインターネットまで統括して開発するための中心になります.
C言語が高級アセンブラと呼ばれたように,またUNIXを記述するのに使われてきたように,アセンブリ言語に変わってCがシステムプログラムを記述するために使われてきました.アセンブラの需要がまったくなくなったわけではないものの,C言語,そして現在ではC++言語によって記述される例が多くなっています.
C/C++言語の特徴は,やはり実行プログラムのコンパクトさと実行速度,ROM化システムからネットワークまで幅広くシステムプログラムの部分が記述できるという記述性の高さ,そしてANSIなどで標準が定められているためソースレベルでの再利用がしやすいという点にあります.
C#は,C/C++言語以上に抽象化を進め,よりシステムに依存しにくくし,移植性を高めています.また,ソースレベルの移植性だけでなく,異なるプラットホーム上で実行オブジェクトを動作させることを前提にした設計がなされています.
● Visual StudioにおけるC#
Visual Studio 7.0の詳細はまだ発表されていませんが,一端は公開され始めています.それがVisual
FoxProの統合であり,C#の採用です.これらのことは,今後のマイクロソフトをはじめとした開発言語ベンダの対応,そして多くのアプリケーションメーカーに大きな影響を与えるでしょう.
前述したように,Visual Studio 7.0で搭載されるのはC#だけではありません.ASP+,Visual Basic with ATL+などはまだ詳細が発表されていませんが,ドキュメントを読むと,現在のn層クライアント/サーバの構築に見られる各層の言語非統一性注2 を解消するための第一歩といえるのではないかと思います.
言語を統一するといっても,C++でDHTMLのような処理を行うということではありません.HTMLやDHTMLのバックグラウンドで動作させるサーバサイドスクリプトやサーバサイドコンポーネントの記述を,層ごとにそれぞれ違う言語で書くのではなく,すべての層のオブジェクトをC#でプログラムし,広い範囲にわたって再利用が可能な記述を効率よく行おうということです.
実際,現在のC#言語仕様書にみられるサンプルの記述は,C言語に慣れ親しんだユーザーにとってはJavaにしか見えない(Java自身がC++と同じような表記なのでしかたのないことだが)でしょうし,C++が発表された初期の頃にOOPを学んだ人にとっては,C#がC++そのものに見えることでしょう.それほど両者は近い存在です.
▲ C#とXML
XMLは,Visual Studio 6.0ではVisual InterDev 6.0を使用し,スクリプトとしてASPコードなどで利用します.デバッグはしやすいのですが,COM/COM+オブジェクトと比べるとサーバの負荷が大きく,ネイティブなコードに比べて速度などでは一歩譲ってしまうことになります.また,スクリプト型のXMLでは,ソースそのものの配布ということになるのでセキュリティ問題や著作権問題などが起こります.COM+など認証システムを有しているオブジェクトに対しても安全性の保証がなくなる可能性があります.
C#は,従来のプログラミングを継承し,XMLの統合などによってオブジェクトの再利用やライブラリ化,コードのセキュリティの向上に役立つようです.
プロローグ 次のVisual Studio .NETの実行モデル .NET IL(Intermeditate Language) C#について C#の概要 |
Copyright 2000 広畑 由紀夫