連載

C#入門

第1回 はじめて触れるC#

(株)ピーデー
川俣 晶
2001/02/27


C#とは何か?

 C#は、マイクロソフトが開発したプログラム言語である。マイクロソフトが提唱する.NET構想の中核となるプログラム言語ということで注目を浴びている。技術的な面から見ると、C++の一種の進化形であると同時に、Javaの影響を大きく受けている言語と言える。

 ここで重要なのは、「なぜC#か?」ということだ。なぜなら、プログラム言語として、既にCやC++、Java、Visual Basicなどが存在するからだ。これだけプログラム言語があって、どうして、それに新しい言語を付け加える必要があるのだろうか?

 その答えは簡単だ。既存の言語がいくら多くても、すべてに関して満足のいく言語というものは、1つもないという大きな問題があるからだ。Cは既に時代遅れであり、C++という後継言語が使用されている。C++は高機能で何でも記述できる自由度があるが、メモリの管理が自動化されていないため、ちょっと間違うだけでメモリを使い尽くすプログラムができてしまう。Javaはメモリの管理が自動化されているので、そのような危険はないのだが、どんな環境でも実行できるという理想ゆえに、どうしても機能が最大公約数的になり、思いどおりの機能を実現するには不向きだ。Visual Basicは基本的にデータ型が自動変換される言語であり、これがプログラムの見通しを悪くし、バグの温床になるという構造的な問題を有している。データ型を厳密に適用する言語ならコンパイル時に発見されるバグが、見過ごされてしまう危険がある。

 このように、どの言語も、現在のニーズにジャスト・フィットするプログラム言語とは言えない。これに対するマイクロソフトの結論がC#である。C#は他のプログラム言語と比較したときに、以下のような位置づけになる。

  • C++から見たとき→メモリ管理の自動化によりコーディングが手軽に
  • Javaから見たとき→より現実的でどんな処理も容易に書ける
  • Visual Basicから見たとき→データ型が厳密に扱われ、コンパイラがバグを見つけやすい

 もちろん、これらは、ごく大ざっぱな要約にすぎない。言語の相違を論じればそれだけで1冊の本になってしまうので、ここでは深くは触れない。ともかく、C#が生まれるにあたっては、機能的な必然性が背景にあったという一例として読んでいただきたい。

.NET Framework

 C#について語る場合は、それと同時に、.NET Frameworkについても語らねばならない。.NET Frameworkとは、一種の実行環境であり、クラス・ライブラリを持つ。C#でプログラムを作成すると言うことは、.NET Frameworkで実行するプログラムを作成するということとイコールである。厳密な意味で言えば、.NET FrameworkはWindowsとイコールではない。.NET Frameworkが実装されている環境であれば、Windows以外のOSの上でも、プログラムを実行できる可能性がある。

 実際にプログラミングする場合には、.NET Frameworkのクラス・ライブラリを活用しながらソースコードを記述することになる。そのため、C#という言語について知るのと同じぐらい、クラス・ライブラリを知ることは重要である。

 とはいえ、C#は.NET Frameworkの枠組みの外側に直接アクセスするコードを記述することもできる。例えば、Win32 APIに直接アクセスすることもできる。だが、これは最後の手段として温存しておくべきものであり、最初からこれを当てにすべきではない。永遠にWin32 APIが生き残る保証は何もないためだ。

Visual Studio.NETについて

 Visual Studio.NET(以下VS.NETと略)は、マイクロソフトによる.NET構想の開発ツールとして位置づけられるものである。基本的には、マイクロソフトの人気開発ソフトでありVisual Studioの最新バージョンといえ、2001年末のリリースが予定されている。しかし、製品の発売に先行してこれを試すことができるベータ1が一般に入手可能となっている。入手するための情報はマイクロソフトのサイトに公開されている(マイクロソフトのVS.NETのページ。VS.NETベータ1の入手法の詳細については、別稿の「Insider's Eye:Visual Studio.NETベータ1日本語版の入手法を総括する」を参照のこと)。

 現在のVisual Studioは、Visual C++、Visual Basic、Visual J++を組み合わせた商品と言える。Visual Studio.NETでは、Visual J++が抜け落ち、その代わりにC#のサポートが追加される。つまり、VS.NETになったからといって、従来型の言語の開発(J++を除く)が不可能になるわけではない。しかし、従来は特定の1言語が主役ということではなかったが、Visual Studio.NETではC#が主役であり、他の言語は互換のために存在する一種の脇役という位置づけに変化する。例えば、従来、Visual C++でVisual Basicのニーズをカバーできず、両者が並び立つ形であったが、C#はVisual Basicのニーズをすべてカバーするだけの間口の広さを持っているのである。

 この連載では、VS.NET ベータ1が利用可能であることを前提に説明を進める。連載中に、新しい版が出れば、随時、それに入れ替えて進めていきたい。

関連記事(Insider.NET内)
Visual Studio.NETベータ1日本語版の入手法を総括する
 
関連リンク
マイクロソフトのVS.NETのページ
 

 INDEX
  C#入門 第1回 初めて触れるC#
    1.この連載で目指すこと
  2.C#とは何か?
    3. C#でHello World!
    4. もう1つのHello World!
 
「C#入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間