大切な事は全て.NETから学んだ
下記の文章、「こういうテーマでufcpp.net内のC#ページを更新(今の【雑記】的にやるか、新しいフォルダー掘るかして)したい」というもの。
いつ手を付けるかは未定。実際のところしばらく無理。
表題、誇張ではなく、割と真実。
ソフトウェアに求められる品質水準は非常に高くなっていて、開発者に求められる知識は年々増えています。
単純にプログラミング言語の基礎を覚えるというだけではまるっきり不足で、そこから様々なパターンを覚えて初めて実用化に足る最低水準になります。
パターン。
- こういう場面ではこう書くと解かりやすい
- こう書かないとこんな問題が
- 計算速度優先ならこう、省メモリならこう
等々、いわゆる先人の知恵。
歴史を積み重ね、普通に1からたどるにはあまりにも遠い道のりに至りました。
先人と同じ手順を経ていては、追いつくことで精一杯。その先の新しい世界を目指すことも叶いません。
楽をするひつよがあります。苦労するなら新しい世界に差し掛かってから。
楽。
- 先人は、パターンを教科書的に整理してくれています。
- C♯なんかでは、多くのパターンが言語構文に組み込まれています。
- 解説も豊富です。
整理済みのもの、構文化されたもの、分かりやすい解説のあるものから学びます。
だから、C♯から、.NETから学びます。学びました。これからもまだまだ学べます。
高度さの割に整理されたきれいな言語・フレームワーク。膨大で詳細な解説の数々。
C♯は機能が多くて難しいとも言われます。しかし、それは本当に必要なもので、他の言語であれば、同様の事を実現するためのパターンを覚えて、毎回同様のコードを自分で書かなければならないことです。
書かなければならない。さもなくば
- 時には性能を犠牲にします
- 時には危険を生みます
- 時には後々の運用や修正のコストを増やします
この文章は、そんなC♯や.NETに詰まっている先人の知恵を追うものです。
- 先人に楽して追いつくために
- その先の新しい世界で苦労するために
C♯に頼るというより、C♯から学ぶ。
学んだことは活かされます。不幸にも最新のC♯、あるいは、同様の機能を持った言語を使えない状況でも、C♯から学んだ知識で乗り越えられることは多々あります。
そういう、先人の知恵、楽する手段、学びの糧としてのC♯。
他の言語だと、言語仕様を一通り覚えた後に追加で「パターン本」みたいなものを読んで、覚えて、自由に書けなきゃいけない部分。C#だと、普通にMSDN内で見かける説明文。
以下、なんかこんなの書くかもという自分メモ。
- イベント、オブザーバーパターン、add/remove自作、スレッド安全な作り
- イテレーター
- LINQ
- dynamic、コールサイト、メソッドキャッシ
- 非同期呼び出し
- インターロック同期
- スレッドプール、同期コンテキスト、IO完了ポート
- 仮想テーブル、型のレイアウト情報、ボクシング
- ガベコレ、参照カウント、オブジェクトプール、値型とジェネリック
- unmanaged型(ポインター化可能な型)、参照のピン止め、厳密な型を持った言語のガベコレ/型に緩い言語のガベコレ
- IL、oopなアセンブリ言語、スタック型仮想マシン、共通型システム
- AppDomain、分離、マーシャリング
参考に、C♯ 1.0での実装や、C++とかJavaでの実装とかやってみるかな(大変すぎるのは除いて)。C89でのOOP(というか仮想関数テーブル実装)の話とかも書いたことあるし、そういうの。
ぶっちゃけ、締切なく、小出しで書けて、後から修正効く前提のクオリティで文章書きたくてしょうがない。
[…] それでもページ数が432ページもあったりしますが… ちなみに、紙面の都合で Web 公開にした章が2つほどあります。2章削って432ページです。まあでも、いつも言ってる「C#から学ぶ、.NETから学ぶ」と考えて、「プログラミング関連の知識はゼロ」という状態からいろいろ学ぶにはちょうどよいのではないかと思います。 […]
スラスラわかるC# | ++C++; // 未確認飛行 C ブログ
2013年3月1日 at 00:14