2017年12月20日
川俣晶の縁側技術関連執筆情報 total 746 count

楽しいC#入門: C#7.2対応版改訂2.04

Written By: 川俣 晶連絡先

「奥付がVersion 2.04なら新版です。タイトルから暫定が取れていることでも確認できると思います」

「どこを改訂したんだい?」

「第33章(C# 7.2の新機能)のサンプルソース及び練習問題のソースコードを全てC# 7.2正規対応のVisual Studio 2017 15.5.2で動作確認した上で文言を多少修正した。一部はソースコードも修正した」

「Span<T>の話は入っているのかい?」

「検討の上、やはり入れなかった。C# 7.2にはSpan<T>を受け入れるための言語機能は備わっているが、Span<T>そのものはまだVisual Studio 2017で提供される標準ライブラリに含まれていないので」

「そういうライブラリの提供が開始されたら?」

「プレリリース版なら対応しないかもしれない。正規版提供なら改訂を考える」

「君としては積極的に扱いたいものかい?」

「そうだな。無駄なメモリ確保は減らしたい。どこにクリティカルなポイントがあり、どこをどう直すと早くなるのかに敏感になる。C#スピード狂時代の幕開けだ」

「でもさ。それってC# 1.X時代もそうだったはずじゃないの?」

「そうだな。当時、動的なメモリ確保を行わない構造体が存在するのが、C#の決定的なJavaに対するメリットだった。現実を無視する頭でっかちの理屈屋としてJava屋の言うことに耳を貸す意味は無かった時代だ」

「なぜ無駄なメモリ確保に対する忌避感が薄らいだのだろう?」

「生産性向上の方にウェイトがあったからだろう」

「なぜ今生産性向上よりもスピードなんだい?」

「ローエンドの低性能マシンでも性能を出したいからさ。鈍速CPUと低容量メモリの低価格中華タブでもそれなりのスピードで走って欲しいじゃないか」

「まさに、C#スピード狂時代の幕開けだね」

「だが、それは【既に速いマシン】にもっとスピードを求める行為ではない。【速度の足りないマシン】でできるだけ快適にプログラムを動かすための方策だ」

「生産性向上もコストダウンなら、より低性能マシンで使えるようにするのもコストダウンだね」

「だが、コストダウンということを考えると最大のガンは互換性の壁なので、iOSとかAndroidみたいな専用OSは速く駆逐されて欲しいところだ」