++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Archive for 3月 2012

〔速攻入門〕 C#プログラミング すぐに現場で使える知識

with 3 comments

そろそろ発売っぽいのでこの場でも宣伝を。以下のような本を書きました。

C++ もしくは Java の経験者向けに、そこからの差に焦点を当てた C# 入門本です。

例えば、if とか while とかの説明はいちいちしていません(構文持ってるよという一覧のみの提示)。 if (条件) の条件の部分は bool しか受け付けないとか、そういう差だけを書いています。あと、言語を変えて一番困るのは、文法なんかじゃなく、むしろライブラリの使い方なので、ライブラリの使い方に触れた章も設けています(第3部がまるまるそう)。

一周廻ってそういう本が必要なんだなぁという(C# が出た当初、C# の説明は C++ わかってる人前提のものが多かった)。

4人の共著ですが、最終的に僕が文章の統一を入れているので、共著っぽい読みにくさはないと思います。

一応、↓みたいな記事を書く程度には、C# 以外の言語もきっちり調べてるつもりなので、C++ や Java についても外したことは書いていないはず。

ちなみに、著者献本も4人で分配なので、自分のところには3冊。勉強会等で撒こうかと思います。

WP_000136

Written by ufcpp

2012年3月6日 at 05:22

カテゴリー: C#

Visual Studio 11 beta

with one comment

シアトルに行ってる間に出ましたね。

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 には入らないっぽい。

Written by ufcpp

2012年3月6日 at 04:56

カテゴリー: .NET, C#