Archive for 3月 2012
〔速攻入門〕 C#プログラミング すぐに現場で使える知識
そろそろ発売っぽいのでこの場でも宣伝を。以下のような本を書きました。
C++ もしくは Java の経験者向けに、そこからの差に焦点を当てた C# 入門本です。
例えば、if とか while とかの説明はいちいちしていません(構文持ってるよという一覧のみの提示)。 if (条件) の条件の部分は bool しか受け付けないとか、そういう差だけを書いています。あと、言語を変えて一番困るのは、文法なんかじゃなく、むしろライブラリの使い方なので、ライブラリの使い方に触れた章も設けています(第3部がまるまるそう)。
一周廻ってそういう本が必要なんだなぁという(C# が出た当初、C# の説明は C++ わかってる人前提のものが多かった)。
4人の共著ですが、最終的に僕が文章の統一を入れているので、共著っぽい読みにくさはないと思います。
一応、↓みたいな記事を書く程度には、C# 以外の言語もきっちり調べてるつもりなので、C++ や Java についても外したことは書いていないはず。
ちなみに、著者献本も4人で分配なので、自分のところには3冊。勉強会等で撒こうかと思います。
Visual Studio 11 beta
シアトルに行ってる間に出ましたね。
VS11β はその場で入れたものの、Win8 CP はいまだインストールできずにいたり。
VS11、まだ年号はつかず、“バージョン11”のまま。
でも、今がβだと、ひょっとすると Windows 8 正式版を待たずして、VS 11 だけ先にリリースかな?
以下、DP 版から β 版での変更点。(ちなみに、DP からの差分と言わず、4.0 と比べての差分はこちら: What’s New in the .NET Framework 4.5 Beta)
C# 5.0
まず、正式に C# 5.0 の β 版としてリリースされました(今までは、Async CTP という形で、非同期メソッドがらみしか提供されていなかった)。
非同期メソッドに関しては、後述する Awaiter パターン実装側の変更のみ。なので、await 演算子の利用側に関していうと変更なし。
これに加えて、Caller Info 属性というのが入りました。情報だけは昨年9月の BUILD の時点で出ていたものの、実際に試せるものが公になったのは今回が初。このページのサンプルにもあるように、ログ用途の他に、INotifyPropertyChanged の実装用に便利そう。
非同期がらみ
以下のような変更があった模様。
- 非同期メソッド中では、lock じゃなくて SemaphoreSlim を使ってとのこと
- こいつなら、Wait するスレッドと Release するスレッドが別でもよいので
- あと、ロック待ちのためにスレッドをブロックするのはいまいちなので、WaitAsync メソッドを追加したそうです
- Awaiter のパターンの変更
- INotifyCompletion もしくは ICriticalNotifyCompletion インターフェイスの実装が必要になったらしい
- 理由は、同期コンテキストのディスパッチ(非同期処理を開始したスレッドに、コールバック処理を戻す)をフレームワーク内でやってもらうか自前でやるかを選べるようにするため
- INotifyCompletion → 自前でやる
- ICriticalNotifyCompletion → フレームワークにやってもらう
- System.Threading.Tasks.Dataflow 改善
- 非同期メソッドの単体テスト可能に
- ただし、テスト フレームワークが同期コンテキスト持ったわけではないので、そこは注意が必要
- Concurrency Visualizer 改善
Metro style アプリ
クラス名やメソッド名のリネームは山ほど。
でも、XAML アプリの開発スタイルに変更はなさそう。
あと、XAML 系 UI はいいとして、XNA 的な(ゲーム ループを持った低層 UI)フレームワークは結局なさそう。ゲームやら 3D やらやりたければ DirectX と C++ で。
というのも、ネイティブ ⇔ .NET 間ではデータのやり取りがネックになったりしそうで、XAML + C# 的な仕組み(WinMD を介して実装はネイティブ、利用側は .NET)は XNA 的なものには不向きっぽく。
おまけ: PowerShell 3.0
WMF 3.0 (PowerShell 含む、管理用フレームワーク)も β 化。DP からの差分はバグフィックスが主っぽい。
相変わらず、日本語 Windows には入らないっぽい。