僕の自己紹介のところを見てもらえれば分かると思いますが、 僕は趣味でプログラミングをしてるだけで、 C# は研究とは一切関係なかったりします。
初めて C# について調べてみたとき(ちょうど Java に物足りなさを感じ、SUNの方針に憤りを感じていたころです)、 C# が普及してくれればプログラミングにかかる手間は大幅に削減されると感じるました。 しかし、Microsoft は順調に行かなさそうなものはばっさりと切り捨てることで有名な企業ですし、 世間の C# への関心が低ければ、C# は普及することなく消え去ってしまうでしょう。 そこで、少しでも早く C# が普及するようにとの願いを込めて当コンテンツを作成することにしました。
ただ、研究や授業の合間に暇を見て作成しているため、 更新は1・2週間に1回程度と非常にのんびりしたものになっています。 (作成し始めた当初、.NET Framework 正式版のリリースまでに完成させるという目標でやっていましたが、 この目標は全然達成できませんでした。) また、構成なども頻繁に変更される可能性があります。
.NET Framework Technical Preview 版配布開始から約2年、 2001年末にようやく .NET Framework 正式版が発表されました。 また、2002年2月には日本語版も配布開始され、同4月には Visual C# .NET 日本語版も発売されました。 ここに来てようやく日本でも C# や .NET が話題になり始め、雑誌やウェブ上の掲示板などでの話題も盛り上がってきました。 そして、 C# は「C++ の柔軟性と Visual Basic(VB) の生産性を併せ持つ言語」として開発されていることもあり、 今まで VB を用いてプログラム開発を行っていた人や、 新規にプログラミングを始めようという人が C# の勉強をはじめようとしています。
Microsoft の提供する C# のドキュメントでは、 C# では「なにができるか」「どうすればできるか」という部分については詳細まで書かれていて非常に分かりやすいのですが、 「なぜこういった機能が必要なのか」という部分までは書かれていません。 そのため、C++ や Java などについての知識が十分にあれば、 Microsoft の提供するドキュメントだけでも容易に C# について理解することができます。 しかし、プログラミングの初心者やこれからプログラミングを始めようという人にとっては、 このドキュメントだけではプログラミングの勉強をするには不十分です。
また、C# に関する解説書籍、ウェブサイトでも、 C 言語や Java などの知識を有することを前提とし、 1から C# を学ぶにはハードルの高いものが多いです。
そこで当サイトでは、これからプログラミングを始めようという人が C# の勉強をできるように、 C# で「何ができるか」「どうすればできるか」そして「なぜそのような機能が必要なのか」という部分まで説明していこうと思っています。
あるいは、プログラミング初心者の方でなくても、 C++ や Java と比べて追加された機能や、逆に削除された機能に関して、 「なぜ追加・削除されたのか」が分かってもらえるような説明を心がけるつもりです。
よく訊かれる質問、 特に、主として C 言語を利用しているプログラマの方からの質問なのですが、 「C# は初入門の言語として適切か」と言うものを受けることがあります。
多いのは、 「C 言語 → C++ というように段階を経て学んでいくべきなのではないか」という意見です。 「Java や C# だと、class や static など、最初に説明しないといけない“おまじない”が多いし・・・」とか、 「Java や C# などのオブジェクト指向言語を学ぶにしても、 その基本は構造化プログラミング言語だし」というのが、これらの意見の理由です。
この質問に対する(僕個人の私的な)答えですが、 結論から言うと、初めから C# を学ぶ方がいいと思います。
例えば、C 言語なら最初から理解するのが難しい“おまじない”の部分がないかと言うとそんなはずもなく、 #include などはやはり“おまじない”ですし、 Java や C# などの新参の言語は、構造化プログラミング言語としても見た場合でもかなり優秀な言語です。
むしろ、C 言語など、長い歴史を持つ言語は、 昔からの悪習を引きずっていて、 下手に学ぶと悪い癖が付いたまま抜けなくなる危険性の方が高いです。
習得難易度の低さの面からも、 悪習を身に着けないためという意味でも、 最初に C#、そして、必要に応じて C 言語などの抽象度の低い言語を学ぶ方がいいと思います。
当コンテンツは、 「C#の概要」、 「C#で始めるプログラミング」、 「C#で学ぶオブジェクト指向」、 「C#の特徴的な機能」、 「付録」 から構成されています。
「C# の概要」では、 C# というものがどういったものかを説明しています。 また、C++ や Java の経験者向けに C# の特徴的な機能を簡単にまとめています。 「C# で始めるプログラミング」では、 初めてプログラミングを勉強する人向けに、 C# を用いたプログラミングの基礎を説明しています。 「C#で学ぶオブジェクト指向」では、 近年、プログラミング作法の主流として定着しているオブジェクト指向というものについて説明し、 C# を用いてオブジェクト指向を実現するための方法について説明しています。 「C#の特徴的な機能」では、 プログラミングの基礎やオブジェクト指向以外の C# の特徴的な機能について説明しています。
また、当コンテンツ中でサンプルコードは以下のようなスタイルで書いています。
// サンプルコード if(条件文) { int n = 0; string s = "sample"; }
C# のキーワードや、コメント、文字列は色付けして強調表示してあります。 また、条件文などその時々に応じて適当に書き換える必要のある部分は斜体で強調表示してあります。
また、ユーザーからの入力や、サンプルコードの出力は以下のようなスタイルで書いています。
sample input/output ← この行に対するコメント ユーザーからの入力
サンプルコードとは異なる背景色で囲み、ユーザーからの入力は斜体で強調表示してあります。
さらに、本文中、サンプルコード中を問わず、重要な部分は背景色を色付けし強調表示してあります。
当コンテンツの内容は個人的・教育的目的での複製・利用はご自由にして頂いて構いません。 利用に際して、誤字等を見つけた場合や、ご意見・ご要望・ご不満等がございましたら、 その内容を教えていただければこちらとしても助かりますので、 そうして頂きますようにお願い致します。