c# mvp に聞くc#アレコレ! 小島の分

21
C# MVP ににに C# にににに ! にに ににに Community Open Day 2013 にに にに 2013-05-11 1

Upload: fujio-kojima

Post on 12-Nov-2014

2.412 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

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

C# MVP  に聞く C# アレコレ !

小島 富治雄

Community Open Day 2013 北陸会場2013-05-11

1

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

• 小島 富治雄• @Fujiwo• 福井コンピュータアーキテクト株式会社• Microsoft MVP C# (2005-2013)

2

自己紹介

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

• 今日誕生日です。• 7 才の娘が「パパの誕生日にはカレーを

作ってあげるね」と言ってました。• ところで、私の手荷物にはまだ若干の余

裕があります。

3

大切なことから

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

「 Windows8[ 業務アプリ ] 開発読本」

4

大切なことから

C# で「 Windows ストア業務アプリ開発入門」

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

5

私と C# の出会い

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

• Anders Hejlsberg– 1983 年 Turbo Pascal– (1995 年 Delphi)– 2000 年 C#

6

C# との出会い

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

2000 年に C#/.NET サイトを準備

7

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

• Anders Hejlsberg– 1983 年 Turbo Pascal– (1995 年 Delphi)– 2000 年 C#

• 2006 年 2 月 2 日 横浜

8

Anders Hejlsberg との出会い

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

9

C# の良いところ

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

• C# というのはよく分からないので、ネットで調べてみた。

10

C# の良いところ

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

11

C# についての噂

遠隔操作ウイルスを作成したソフト「 Visual Studio 2010 」で使用される

「 C# 」というプログラム言語は比較的新しく、年齢層としては 20 代前後が推測される

シマンテック浜田譲治主任研究員

汎用性の高い『C言語』と比べると、ごく簡単な言語。長年、プログラミングをしている人は

あまり使わないはずだ

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

12

Twitter で訊いてみた

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

13

Twitter で訊いてみた

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

• マルチ パラダイム言語–様々なパラダイムを徐々に学べる

14

C# の好きなところ

delegate

C# 1.X C# 2.0 C# 3.0 C# 4.0 C# 5.0

class

手続き型 関数型

ラムダ式

LINQ

型推論

ジェネリック

拡張メソッド

動的型付け

dynamic

非同期

async/await

オブジェクト指向

Parallel

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

• 意図していないループや条件分岐なんて書きたくないよね– 例 . 「 10 以下の自然数の偶数をそれぞれ表示する」

15

C# の好きなところ

for (int number = 0; number <= 10; number++) { if (IsEven(number)) Console.WriteLine(number); }NaturalNumbers(max:10)

.Where(IsEven)

.ForEach(Console.WriteLine);

ノイズ(= 意図と関係のないも

の )

だらけ

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

• C# 1.X の仕様を引きずっている– IEnumerable と IEnumerable<T> など

16

C# の好きでないところ

class Foo : IEnumerable<int> { public IEnumerator<int> GetEnumerator() { … }

IEnumerator IEnumerable.GetEnumerator() { … } }

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

• var square = a => a * a;× 型が判らない

• var square = (int n) => n * n;× delegate か Expression か判らない

• static T Square<T>(T n) { return n * n; }× 型 T について二項演算子 * に関する制約が付けられない

• Func<dynamic, dynamic> square = n => n * n;○ でも「コレジャナイ」感が

17

C# の好きでないところ

こう書きたい

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

• Tupple–例えば、

18

C# の好きでないところ

static void Swap<T>(ref T lhs, ref T rhs) {

T temp; temp = lhs; lhs = rhs; rhs = temp;

}

しょうがないけど嫌

Swap の本質じゃないコードは書きたくない

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

19

C# の好きでないところ

Func<Tuple<int, int>, Tuple<int, int>> swap = pair => new Tuple<int, int>(pair.Item2, pair.Item1); var result = swap(new Tuple<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 の認識はこの位シンプルな筈 )

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

• マルチパラダイム言語–ちょうど良い

• シンプルな記述–ちょうど良い

• 多用途–各種デバイス、サーバーサイド

• ツールのサポート–Visual Studio

20

結局 C#

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

21