以前から作りたいと思っていたプログラム(+Web サービス)が意外に簡単にできそうなことが判明したので、トライしてみることにしました。
作りたいプログラムは C# で作られたソフトウェアのプラグインなので、まずは C# のお勉強です。
C# は過去に何回か大きな進化があった、という知識だけはあったので、できるだけ新しい本で勉強したいところ。ちょっと調べてみると、他言語習得済みのプログラマに好評な本がありました。
猫でもわかるC#プログラミング 第3版
粂井 康孝 (著) / SBクリエイティブ
3版 (2016/2/27)
https://www.amazon.co.jp/C-3-ebook/dp/B01C804DL6/
初めてマンガ以外の電子書籍を買いました。しかも Kindle です。タブレットは持っていないので PC で読むわけですが、本当に長文を読めるのか、かなり不安でした。
結果、あっさり読めました。
読むスピードも紙媒体に比べて特に遅いという印象はありませんでした。まぁ、内容が簡単だった、ということもあるかもしれませんが。
以下、感想。
本書は、プログラミング初心者にはちょっと厳しい本かもしれません。オブジェクト指向言語の基本概念やインタフェースの存在意義などの詳しい説明は無く、ほぼ構文のみの説明になっています。 Java か C++ あたりの知識がないとたぶん理解できません。逆に言うと、他言語習得済みのプログラマには便利だと思います。
とりあえず本書で概要を把握して、あとはリファレンス本で詳細を学ぶのが早そう。
C# についての印象:
- オーバーライドの構文が不自然。
new
やoverride
やvirtual
の必要性が不明。 C++ のvirtual
は関数呼び出しオーバヘッドの削減のためと認識していますが、 C# に果たしてそこまでの性能追求が必要なのか疑問。逆にsealed
って書かせたほうが統一感があってよかったのでは? - 複数のインタフェースを継承したとき同じシグネチャのメソッドがあると、それぞれのインタフェースに対して実装を書かないといけないのがよくわからない。あるクラスのあるシグネチャのメソッドは、単一の機能を持つべきではないの?
- switch 文が fall through 禁止なのに break 文が必須なのが意味不明。
- ビット演算子の優先順位が低い。C言語の悪いところをマネしなくていいのに・・・。
checked
/unchecked
機能はちょっとうれしいかも。- ジェネリックの反変性がよく理解できなかった。要調査。
とりあえず C# の概要はわかったので、 Visual Studio 2015 をインストールして遊んでみるつもりです。