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

http://ufcpp.net/

Archive for 7月 2013

言語的な新機能なし(C#もVBも、VS 2013で)

leave a comment »

こういうブログが。

今に始まった話でなくて、VS 2013が出た直後から(あるいは、ベータ版から追っている人にとってはもっと前から)いわれていることですが、VS 2013 では、C# や VB には変更が一切ありません。で、「あれ、もう C# は進化しないの?」とか言いだす人があまりにも多く、ついにたまりかねて状況説明のブログが出たという感じ。

新機能がない理由

ブログに書いてあることはおおむね以下のような感じ:

  • (ツールのアップデート間隔を短くしても)言語のアップデートは今まで通り(2~3年間隔)のペースがいいと思っている
    • C# 5.0 で async/await という非常にインパクトのある機能を足したところで、まだ皆それを学んでいる真っ最中
    • 安定性と新機能のバランスを考えると今までのペースがいい
  • Roslyn プロジェクトが進行中で、C#、VB のコンパイラーを再実装中
    • (今は、再実装もほぼ完成しているものの)再実装に労力を割いていた
    • これは未来への投資であって、ここ数年動きが鈍って見えるのも仕方がない
  • 言語的な新機能は確かにないけども、VS 2013 では async のデバッグ機能が拡充した

ということで、C#、VB チームは今なお、Anders Hejlsberg に率いられて活発に活動中で、新しい言語機能もいろいろ考慮中。

.NET、C#/VB、VS の状況

ちょっと補足。

これは、「C# が更新されない」という見方をするべきじゃなくて、ほんとは以下のような部分に注目すべきじゃないかなぁと:

  • MS 全体として、製品のリリース サイクルを縮めてる
  • ランタイム、ライブラリ、言語、ツールを、それぞれのタイミングでリリースしていく

要するに、「大企業は足が遅い」問題に対する最大限の努力。

2~3年のメジャー リリースなんて待ってられないわけですよ、もう。今までのマイクロソフトと比べたら「未完成品なんじゃないか」というような段階でも、まず市場に出してみて様子を見て、継続的に改善していかなきゃいけない状況。なので、リリース サイクルを縮めるという舵きり自体は数年前から徐々にやってきたことだし、それがついに1年間隔のメジャー バージョンアップできるまでになったということ。

その一方で、上記ブログに書いてある通り、何でもかんでもこのサイクルで回す必要はないわけです。.NET は、大まかに言うと(build で使われていたイラストですが)以下のような構成になっています。

image

これが、それぞれ別々のリリース スケジュールで動いて、それぞれの都合に合わせた最速タイミングで使える方向になろうとしています。

特に顕著なのはライブラリで、これまでだったらランタイムのメジャー リリースを待つしかなかったような新機能が、今は NuGet 経由で提供されるようになっています(ものによってはオープンソースで開発されていて、自己責任でよければかなり早い段階から利用可能)。NuGet を使って、必要なライブラリを必要なだけ、簡単に利用できるようになっています。実際、build で公開された情報のうち、ライブラリに関するアップデートは多くのもの(MEF、TPL Dataflow、ASP.NET MVC 関連など)が NuGet 経由で入手可能です。

要は

まあ、世情に合わせた合理的な変化が起きているだけなんですが(それも、まだまだ不十分なくらいなので、まだまだこの方向への舵きり続くはず)。

減点方式で見てしまうと、「未成熟なものがリリースされてる」とか「C# の新機能がない」ってなるんですよねぇ。実際は、スピード感のアップと、そのためのリリース サイクルの独立化。

Written by ufcpp

2013年7月18日 at 21:02

カテゴリー: .NET, C#