Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

C# MVP に聞くC#アレコレ! 小島の分

3,695 views

Published on

Community Open Day 2013 北陸会場
(2013-05-11)
「C# MVP に聞くC#アレコレ!」セッションでの小島の「C#の好きなところ」プレゼンの資料
http://cod.ms/Pages/place_hokuriku.aspx
http://atnd.org/events/37799

Published in: Technology
  • Be the first to comment

C# MVP に聞くC#アレコレ! 小島の分

  1. 1. C# MVP に聞くC#アレコレ!小島 富治雄Community Open Day 2013 北陸会場2013-05-110
  2. 2. • 小島 富治雄• @Fujiwo• 福井コンピュータアーキテクト株式会社• Microsoft MVP C# (2005-2013)1自己紹介
  3. 3. • 今日誕生日です。• 7才の娘が「パパの誕生日にはカレーを作ってあげるね」と言ってました。• ところで、私の手荷物にはまだ若干の余裕があります。2大切なことから
  4. 4. 「Windows8[業務アプリ]開発読本」3大切なことからC# で「Windowsストア業務アプリ開発入門」
  5. 5. 4私と C# の出会い
  6. 6. • Anders Hejlsberg– 1983年 Turbo Pascal– (1995年 Delphi)– 2000年 C#5C# との出会い
  7. 7. 2000年に C#/.NET サイトを準備6
  8. 8. • Anders Hejlsberg– 1983年 Turbo Pascal– (1995年 Delphi)– 2000年 C#• 2006年2月2日 横浜7Anders Hejlsberg との出会い
  9. 9. 8C# の良いところ
  10. 10. • C# というのはよく分からないので、ネットで調べてみた。9C# の良いところ
  11. 11. 10C# についての噂遠隔操作ウイルスを作成したソフト「Visual Studio 2010」で使用される「C#」というプログラム言語は比較的新しく、年齢層としては20代前後が推測されるシマンテック浜田譲治主任研究員汎用性の高い『C言語』と比べると、ごく簡単な言語。長年、プログラミングをしている人はあまり使わないはずだ
  12. 12. 11Twitter で訊いてみた
  13. 13. 12Twitter で訊いてみた
  14. 14. • マルチ パラダイム言語– 様々なパラダイムを徐々に学べる13C# の好きなところdelegateC# 1.X C# 2.0 C# 3.0 C# 4.0 C# 5.0class手続き型 関数型ラムダ式LINQ型推論ジェネリック拡張メソッド動的型付けdynamic非同期async/awaitオブジェクト指向Parallel
  15. 15. • 意図していないループや条件分岐なんて書きたくないよね– 例. 「10 以下の自然数の偶数をそれぞれ表示する」14C# の好きなところfor (int number = 0; number <= 10; number++) {if (IsEven(number))Console.WriteLine(number);}NaturalNumbers(max:10).Where(IsEven).ForEach(Console.WriteLine);ノイズ(= 意図と関係のないもの)だらけ
  16. 16. • C# 1.X の仕様を引きずっている– IEnumerable と IEnumerable<T> など15C# の好きでないところclass Foo : IEnumerable<int>{public IEnumerator<int> GetEnumerator(){ … }IEnumerator IEnumerable.GetEnumerator(){ … }}
  17. 17. • var square = a => a * a;× 型が判らない• var square = (int n) => n * n;× delegate か Expression か判らない• staticT Square<T>(T n) { return n * n; }× 型Tについて二項演算子 * に関する制約が付けられない• Func<dynamic, dynamic> square = n => n * n;○ でも「コレジャナイ」感が16C# の好きでないところこう書きたい
  18. 18. • Tupple– 例えば、17C# の好きでないところstatic void Swap<T>(refT lhs, refT rhs){T temp;temp = lhs;lhs = rhs;rhs = temp;}しょうがないけど嫌Swap の本質じゃないコードは書きたくない
  19. 19. 18C# の好きでないところFunc<Tuple<int, int>,Tuple<int, int>> swap =pair => newTuple<int, int>(pair.Item2, pair.Item1);var result = swap(newTuple<int, int>(1, 2));var a = result.Item1;var b = result.Item2;悪いけど、ちょっと有り得ないvar swap = |x, y| => |y, x|;var |a, b| = swap(|1, 2|); こんな感じで書きたい(我々の Swap の認識はこの位シンプルな筈)
  20. 20. • マルチパラダイム言語–ちょうど良い• シンプルな記述–ちょうど良い• 多用途–各種デバイス、サーバーサイド• ツールのサポート–Visual Studio19結局 C#
  21. 21. 20

×