CLR/H in Tokyo 第3回 #clrhtky3

2014/06/28 に行われたCLR/H in Tokyo 第3回 #clrhtky3 のツイートまとめです。
1
前へ 1 ・・ 5 6 次へ
丸太/Takayuki MARUYAMA @maruTA_bis5

.NET Native: 事前ネイティブ化 実際はストアサーバ上でネイティブ化。JIT以上に最適化出来る。シリアライズコードの事前展開など。 #clrhtky3

2014-06-28 17:05:43
丸太/Takayuki MARUYAMA @maruTA_bis5

.NET Nativeでもリフレクションは使える。推論が効く部分は自動判定できる。それ以外はリフレクションで使っている情報を書いておく。 #clrhtky3

2014-06-28 17:06:51
丸太/Takayuki MARUYAMA @maruTA_bis5

ASP.NET vNext Cloud Mode: ソースコード配置、自動パッケージ管理 #clrhtky3

2014-06-28 17:09:11
丸太/Takayuki MARUYAMA @maruTA_bis5

ソースコード配置: Roslynを利用して、メモリ上で全部コンパイル side-by-sideインストール: アプリ毎に.NETのバージョンを変えられる #clrhtky3

2014-06-28 17:10:01
丸太/Takayuki MARUYAMA @maruTA_bis5

パッケージ管理: .NET自体もパッケージとして管理できるので、アプリが使いたい.NETのバージョンを変えることが出来るようになる。 #clrhtky3

2014-06-28 17:11:22
丸太/Takayuki MARUYAMA @maruTA_bis5

.NET FrameworkとMonoの実行環境は互換性が高い。コンパイラがはき出すILも互換性がある。 それぞれが使えるライブラリは別物。 #clrhtky3

2014-06-28 17:16:25
丸太/Takayuki MARUYAMA @maruTA_bis5

Portable Class Library: 実行環境のフレームワークから共通部分だけをとる仕組み。すでに提供されている機能 #clrhtky3

2014-06-28 17:18:11
丸太/Takayuki MARUYAMA @maruTA_bis5

.NET vNextでは3系統別実装。JIT, .NET Native, Cloud Mode。 1つの"標準"ライブラリで保守するのは難しい・・・ #clrhtky3

2014-06-28 17:20:13
Tadahiro Ishisaka🖖 @ishisaka

vNextは本当に世界観が変わる気がしているので、一人一人どう向き合うか考える必要があると思う。 #clrhtky3

2014-06-28 17:29:07
丸太/Takayuki MARUYAMA @maruTA_bis5

3時間目: C# 言語機能 async/await出た以降、C# 使ってないから気になるところ #clrhtky3

2014-06-28 17:29:16
丸太/Takayuki MARUYAMA @maruTA_bis5

ジェネリック C# 2.0~ 型だけ違う処理をコピペではなく、型をパラメータとした同じコードで書けるように #clrhtky3

2014-06-28 17:32:59
丸太/Takayuki MARUYAMA @maruTA_bis5

ジェネリックのポイント: 型の直行化 処理・要素管理が型に依存しない。全部分けないで作ると組み合わせの爆発が起こる #clrhtky3

2014-06-28 17:34:04
emomon @emomon8

Genericsが日本語で「ジェネリック」となっていてsがないのは、複数形が疑われるsは訳出しないというMicrosoftのルールのためらしいが、意味的は必要ではないか。 #clrhtky3

2014-06-28 17:35:36
丸太/Takayuki MARUYAMA @maruTA_bis5

.NETではメタデータが残る。ジェネリクス用の命令があるので、非常にパフォーマンスが良い。 C++のtemplateも似たような物だが、実行ファイルが肥大化しがち。Javaではコンパイル時には全部Object扱いのうえキャストとかリフレクションとか悲惨 #clrhtky3

2014-06-28 17:37:41
のはこさん @m0n0_san

. NETのジェネリックでは、インターフェイス制約をかけないと、メソッドすら呼べない。特に困るのが演算子が書けない。 #clrhtky3

2014-06-28 17:39:15
丸太/Takayuki MARUYAMA @maruTA_bis5

型パラメータの制約はインターフェース制約。演算子はインターフェースに書けないので、どうしても+=を使いたいときはdynamicを使う(パフォーマンスに影響有り) #clrhtky3

2014-06-28 17:39:51
丸太/Takayuki MARUYAMA @maruTA_bis5

イテレーター C# 2.0~ データ列を生成するクラスをイテレーター(iterator)、列挙子(enumerator)という。 #clrhtky3

2014-06-28 17:42:50
丸太/Takayuki MARUYAMA @maruTA_bis5

C# でイテレーターを簡単に書くなら、yield returnを使う。使う側はforeachで回せばよい。 yield returnを持つ関数ブロックをイテレーターブロックといい、イテレータークラスを自動生成する。 いろんなところに使える。 #clrhtky3

2014-06-28 17:44:11
丸太/Takayuki MARUYAMA @maruTA_bis5

yield returnは中断と再開、復帰の実装になる。 yield: 道を譲る => 作る側から使う側にCPUを譲るイメージ 他の言語ではジェネレーター(Generator)と呼ばれる形で機能がある(実装は別物)。割と機械的なのでC++ではマクロでも書ける #clrhtky3

2014-06-28 17:48:41
丸太/Takayuki MARUYAMA @maruTA_bis5

ちなみに: C++ 1yに向けてジェネレーター実装の提案をMSが出したそうな。 「アルゴリズムの問題はかなりの割合でイテレーターを使うと簡単に解ける」by 某コーディング面接社員 だそうな。 #clrhtky3

2014-06-28 17:50:48
丸太/Takayuki MARUYAMA @maruTA_bis5

LINQ(Language Integrated Query) C# 3.0~ データ処理を言語統合 e.g. 配列から条件を満たす要素だけを残し、要素毎に処理をする ・・・Java 8のStream APIで似たコードを見た気がする #clrhtky3

2014-06-28 17:52:52
丸太/Takayuki MARUYAMA @maruTA_bis5

データの処理(入力、加工、出力)の直交化。ジェネリックと同様に、分けて作れば組み合わせが少なくて済む。 LINQの実装はyield returnで出来る。IEnumerableを引数にとってIEnumerableを返す #clrhtky3

2014-06-28 17:55:35
丸太/Takayuki MARUYAMA @maruTA_bis5

ラムダ式 C# 3.0~ 匿名関数を簡単にかける。 =>(goes to) 演算子 左が引数で、右が関数本体。実際は関数を自動生成しているだけ。 #clrhtky3

2014-06-28 17:56:56
丸太/Takayuki MARUYAMA @maruTA_bis5

ラムダ式でローカル変数を使う場合、クラスを生成している。(ローカル変数のキャプチャ) ローカル変数がフィールドに昇格するため、もしかしたらGCに影響が出るかも。 #clrhtky3

2014-06-28 17:58:01
丸太/Takayuki MARUYAMA @maruTA_bis5

匿名型 C# 3.0~ 1カ所でしか使わない型を作らない。 実装としてはimmutableなクラスの自動生成 拡張メソッド C# 3.0~ 静的メソッドを後置き記法で書ける。 2.0以前なら、括弧が遠く、処理順の逆に書く必要があった #clrhtky3

2014-06-28 18:00:11
前へ 1 ・・ 5 6 次へ