当 Joel Spolsky 和 Jeff Atwood 在他们的播客中开始就程序员是否应该学习 C 产生分歧时,无论他们的行业和交付平台如何,它在开发人员社区内引发了一场相当爆炸性的辩论,今天可能仍在某些群体中肆虐。我一直在阅读一些程序员博主的文章,他们对此事的看法。双方的论点当然很重要,但我没有发现从只专注于 .NET Framework的开发人员的角度来看,这是一个独特的视角。几乎所有人都在评论一般程序员的观点。
我想达到什么目的?回想一下 Jeff Atwood 的观点,即处于如此高水平的开发人员将花费的大部分时间都花在学习业务/领域上,而不是学习满足这些领域需求的技术所需的一切。以我的工作经验,这是对许多工作生活的非常准确的描述。现在假设 .NET 开发人员可以花时间进行“课外”学习,那应该是 C 吗?
作为记录,我自己在学校就学过 C,我完全可以理解和欣赏支持者的推理。但是,仔细考虑之后,我个人认为 .NET 开发人员不应该直接研究 C。因为,我希望更多的开发人员花一些时间来学习 - MSIL和CLR。
也许我被一群不寻常的同事困住了,我不知道,但在我看来,很多人并没有意识到他们的 C# 或 VB 代码在 JIT 进入并使其成为原始机器之前首先在 IL 中编译代码。大多数人不了解 IL,并且对 CLR 如何准确处理他们编写的代码不感兴趣。通过 C#阅读 Jeffrey Richter 的CLR在很多方面都让我感到震惊。很高兴我读了它,尽管同事们认为它“水平太低”。我不是 IL 专家,但有了基础知识,我发现自己更容易理解他的文字,因为我已经熟悉了 IL 的堆栈行为。我发现自己在反汇编程序集,以查看当我编写某些代码时 IL 的结果。
我学习 CLR 和 MSIL 因为我知道那是我下面的直接层。允许我执行自己的工作的层。C,实际上是进一步下降。更接近我们“现实”的是CLR和MSIL。这就是为什么我会建议其他人尝试这些,因为我没有看到足够多的人深入研究这一层。或者,您的团队是否已经全部熟悉 MSIL?