連載:C# 2.0入門第1回 総論:C# 2.0らしいプログラミングとは株式会社ピーデー 川俣 晶2007/06/01 |
|
意外性あり? この連載で解説すること
この連載では、C# 2.0をテーマに、C# 1.xより拡張、変更された点について解説を行う。以前、筆者が行ったC# 1.xを解説する「連載:改訂版 C#入門」の続編として位置付けられ、対象読者は、C# 1.xを知っているプログラマーである。
*1 技術評論社より単行本『新プログラミング環境 C#がわかる+使える』としても出版されている。 |
しかし、恐らく多くの読者にとって、予想を大きく裏切る「意外性の大きな」内容を含むことになるだろう。
なぜかといえば、C# 2.0ではC++→Java→C# 1.xといった流れで当たり前のように続いてきたOOP(Object Oriented Programming:オブジェクト指向プログラミング)言語のソース・コードの書き方そのものに変化が起こり得るからである。例えば、if文やswitch文で条件を判断し、for文やwhile文で繰り返しを行う……という常識そのものが変化を迫られるのである*2。
*2 if文が変わる例については、本記事のリスト1とリスト2で紹介している(リスト1にはあったif文がリスト2では消える)。繰り返しの変化はコレクションのForEachメソッドなどに見られる。 |
「まさか、いくらなんでもそこまで変わることはあり得ないだろう……」と思う読者も多いと思うが、その「まさか」が起こっているのである。
念のためにいえば、これは「そのように変えるべきである」という「べき論」ではない。明らかにC# 2.0とは、そのように変化した新しいプログラミングを支援するように設計されていて、すでにそのようなプログラミングを当たり前のように実践しているプログラマーも珍しくはない。
筆者の来歴:C# 1.x→C# 2.0ではない
余談だが、そのような「語り」を行う筆者の立場を書いておこう。
筆者は、C#が誕生したころに即座にC#プログラマーとなり、これをたっぷりと堪能した。しかし、C#の限界も感じるところがあり、よりよいプログラミング言語の候補としてC++/CLIに魅力を感じつつも結局縁がなくそれを使い込む機会はなかった。
その代わりに筆者が使うことになったのは、昔懐かしいC言語と、Webブラウザに標準装備されているJavaScriptであった。某パソコン誌で行っているCに関する連載は毎年テーマを変えつつ、ついに3年目に突入する状況であり、C人気の高さを痛感させられた。読者の手応えというレベルでいえば、まだOOPは常識ではないのである。
一方、Ajaxにかかわることになった筆者は必然的にJavaScriptプログラミングも行うようになった。とはいえ、実は筆者が書いたコードの多くは一般的な意味でのAjaxプログラムではなく、Windows Vistaのサイドバー・ガジェットやWindows Liveガジェットが多い。しかし、JavaScriptプログラミングに浸ったことに間違いはない。
最近筆者が作ったプログラムの多くはイースト株式会社との共同開発の形を取っていて、以下のプレスリリースで見ることができる。
『Vistaだけじゃない、W-ZERO3やMS-IMEをもっと楽しくする
PCホビイストをピーデーとイーストは応援します』
このうち、「ワンべぇWM」はCとC++の混在、「aimemon」はC++だが、実質的にOOPとしての機能は使っておらず、ほとんど生のWin32 APIを直接呼び出すCプログラミングそのものである。そのほかはすべてJavaScriptで書いたコードである。
その結果として、筆者は「クラスのあるプログラミング」から一時的に完全に隔離されたといってよい(これは、後で出てくるクラスが存在しないOOP言語の話題への伏線である。クラスから隔離されたことで、クラスが当たり前だと思う状況から脱却できたわけである)。
さて上記のプレスリリースには書かれていないが、最近まったくの趣味でいわゆる同人ゲームを書き始めた。18歳未満には向かないものであるが、すべてを文字だけで表現するという渋い内容で、絵や音楽はまったく含まれない(そういうものを期待する人が興味を持っても肩すかしになるので、過剰な期待はしないように)。それはさておき、このプログラムは単なる娯楽なので、取りあえず資料を引かなくてもコードをサクサク書ける手慣れたC#で書こうと考えた。そして、C# 2.0を使い始めたわけである。
だが、その結果は自分でも驚くほどであった。
何しろ、匿名関数をバリバリ書いて変数や引数にどんどん渡すというJavaScriptのノリをそのままC# 2.0の世界に持ち込むことができ、しかもよくなじんだのである。これはもう、「持ち込むことができる」どころの話ではない。そういうプログラミングを行うためにC# 2.0と.NET Framework 2.0以降は設計されていると考えるしかない。
つまり、筆者はC# 1.xプログラマーの立場ではなく、CとJavaScriptのプログラマーの立場からC# 2.0を扱っていて、この原稿を書いているわけである。そして、C# 2.0が持つすべての能力を解放するためには、JavaScriptに代表されるようなクラスのない文化から学ぶことが不可欠であると考える。
INDEX | ||
C# 2.0入門 | ||
第1回 総論:C# 2.0らしいプログラミングとは | ||
1.意外性あり? この連載で解説すること | ||
2.C# 2.0らしいソース・コードとは? | ||
3.インターフェイスとの比較 | ||
4.後退するクラスの立場、クラスの持つ問題点 | ||
「C# 2.0入門」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|