Joel Spolsky と Jeff Atwood がポッドキャストで、業界や配信プラットフォームに関係なく、プログラマーが C を学ぶべきかどうかについて意見の相違を始めたとき、開発者コミュニティ内で非常に爆発的な議論が巻き起こりました。私は、多くのプログラマーブロガーから、この問題についての彼らの意見を読んでいます。双方の主張には確かに重みがありますが、私が見つけられなかったのは、.NET Framework のみに焦点を当てた開発者の観点から独自の角度から見た視点です。ほぼ全員が、一般的なプログラマーの観点からコメントしていました。
私は何を手に入れようとしていますか?このような高レベルの開発者が費やす時間のほとんどは、ビジネス/ドメインの学習に費やされ、それらのドメイン要件を達成するためのテクノロジを学習するために必要なすべての時間に費やされるという Jeff Atwood の意見を思い出してください。私の実務経験では、多くの人の仕事生活を非常に正確に説明しています。.NET 開発者が「課外」学習の時間を分岐できると仮定すると、それは Cである必要がありますか?
記録として、私は学校で C を学んでおり、支持者が何を理由にしているのかを完全に理解し、評価することができます。しかし、よく考えてみると、個人的には、.NET 開発者は C に直接飛び込むべきではないと感じています。なぜなら、より多くの開発者に時間をかけて習得してもらいたいのは、MSILとCLRです。
たぶん、私は異常な同僚の集まりに行き詰まっているのかもしれませんが、私にはわかりませんが、多くの人は、JIT が導入されて生のマシンになる前に、C# または VB コードが最初に IL でコンパイルされることを意識していないようです。コード。ほとんどの人は IL を知らず、作成したコードを CLR がどのように正確に処理するかに関心がありません。Jeffrey Richter のCLR を C# 経由で読んだことは、私にとって非常に多くの分野で衝撃的でした。同僚が「レベルが低すぎる」と却下したにもかかわらず、読んでよかったです。私は IL の専門家ではありませんが、基本的な知識があれば、IL のスタック動作にすでに精通していたので、彼のテキストに従うのがより簡単であることに気付きました。特定のコードを記述したときに IL がどのようになるかを確認するために、アセンブリを逆アセンブルしていることに気づきました。
CLR と MSIL を学習するのは、それが自分の直下の層であることを知っているからです。自分の作業のレイヤーを実行できるようにするレイヤー。C、実際にはさらに下にあります。私たちの「現実」に近いのは、CLR と MSIL です。そういうわけで、私は他の人にそれらを試してみることをお勧めします. それとも、あなたのチームはすでに MSIL に精通していますか?