クリプキクローネ日記帳

ある種の音楽と数学とランニングはミニマルなところが似ていると思う。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

パーフェクトC# 改訂3版 [斎藤友雄, 醍醐竜一(著)] (技術評論社)

C#は知っていて損はないはずなので途中まで読みました。
11章「言語仕様」までは楽しく読みましたが、12章以降は
「実際何か作るときでいいかな」という気持ちになってしまい大幅にスルー。
それじゃあ結局何も作れないと言われるとそのとおりですが。
というわけで600ページ中200ページくらいしか読んでいないので
ここでいかにも「全部読んだ」風に感想を書くのも気が引けるわけですが、
言語仕様まででもやっぱりおもしろいので書くわけです。



まず、longは64bitですとかcharは16bitですとか、
超基本的なことであっても普段Cとか使ってると危ない。
あと配列はArrayの派生クラスなんていうのも全然知らなかった。
多次元配列には矩形配列の他に要素数バラバラのジャグ配列がある。これは便利。
あとC#にgoto文があるというのが衝撃。
ほとんど説明がないんだけど、なんであるんだろう?

論理の「且つ」は&&だと思ってたけど&でもOKな模様。
&&と&の違いはショートサーキット評価をするかどうか。
しない方がいい場合ってどういう場合だろう?副作用があるときとか?
文字コードUTF-8は可変長だということを今さら知る。だからよくでてくるのか。

今回一番びっくりしたのは、構造体にメソッドを追加できるということ。
C++の感覚で構造体とクラスの違いを捉えていると痛い目に合いそう。
(※C++でも構造体に関数を書けることを今日知りました。(2017/2/18))

newやexternをクラスのメンバの宣言のところに書けるというのも全然知らず。
C/C++のnewやexternとは全然意味が違うので気をつけよう。
あと、ビットシフトみたいなC的な命令もC#でも使える。
イテレータを yield return で書くと簡単にイテレータを作れる。
実際にはこういうことよりも12章以降を読んでアプリケーションの全体構造を理解するべきではある。

ジェネリックのout修飾子、in修飾子には
裏に共変性、反変性という概念があって、
基本ジェネリックで操作可、派生ジェネリックで操作可が決まる。
共変性、反変性は圏論から来ているらしい。
圏論は前にちょっとだけ本読んだけどイメージをちゃんと掴めていないのでまた勉強したい。
ラムダ式のベースにもなっているらしいし、
構造が抽象化された数学はおもしろいはずなのでもう少しイメージを掴みたい。

LINQはデータベースから通常のコレクション、XMLまで同じインターフェースで操作しようという
素晴らしい試みだけど、それぞれ実体が全然違うので実際の使い勝手はどうなのだろうか。
並列化したPLINQはコア数がどんどん増えるこれからは大事そうですね。

ダックタイピングは名前がおもしろい。

12章以降もざっと見てみたけど、
WebフォームやWindowsフォームは手っ取り早くていいなと思ってしまう。
MVCだとかWPFだとかは最初のハードルが高いなー。
もし頑張って習得してもWindowsストアアプリみたいにまた新しいのが出てくるからなぁ。
そういう意味で低レベルなところ読んでいる方がおもしろい。
  1. 2017/01/16(月) 00:40:22|
  2. | トラックバック:0
  3. | コメント:0
<<SPINモデル検査入門 [Mordechai Ben-Ari(著), 中島震(監訳), 谷津弘一, 野中哲, 足立太郎(共訳)] (オーム社) | ホーム | 満たされぬ道 [ベン・オクリ(著), 金原瑞人(訳)] (平凡社)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/345-dbdbea9d
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。