.NET开发人员真的应该花时间学习C来进行低级暴露吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

当Joel Spolsky和Jeff Atwood在其播客中就程序员是否应该学习C而开始意见分歧时,无论他们的行业和交付平台如何,它在开发者社区内引发了一场激烈的争论,可能在今天的某些团体中仍然猖獗。我一直在阅读一些程序员博客写了很多关于此事的文章。来自双方的观点肯定会带来重要的影响,但是我从没有发现的观点来看,只从侧重于.NET框架开发人员角度来看,这种看法是独一无二的。实际上,他们都是从一般程序员的角度进行评论。

我想知道什么?回想一下Jeff Atwood的观点,大多数时候,如此高水平的开发人员将花费在学习业务/领域上,除了学习技术以实现这些领域需求所需的任何东西。在我的工作经验中,这是对许多工作生活的非常准确的描述。现在假设.NET开发人员可以派生的“课外”学习的时候,应该为C?

为了记录,我自己已经在学校学过C了,我完全理解并赞赏支持者推理的内容。但是,当我思考问题时,我个人认为.NET开发人员不应该直接进入C语言。因为,我希望更多的开发人员需要一些时间来学习的事情是 - MSILCLR

也许我被一群不同寻常的同事困住了,我不知道,但是在我看来,很多人并没有意识到他们的C#或VB代码在JIT进入之前首先在IL中编译,并使其成为原始机器码。大多数人不知道的IL,并且在如何不感兴趣准确的CLR处理他们编写的代码。通过C#阅读Jeffrey Richter的CLR对于我来说在如此多的领域中是相当震撼的。很高兴我读到它,尽管同事们把它解读为“太低级”。我不是IL的专家,但是有了基础知识,我发现自己跟随他的文本更容易,因为我已经熟悉IL的堆栈行为。我发现自己拆解程序集来看看IL编写某些代码时的结果。

我学习CLR和MSIL是因为我知道这是我下面的直接层。这层让我可以开展自己的工作。C,实际上是进一步下降。更接近我们的“现实”是CLR和MSIL。这就是为什么我会建议其他人去参加这些活动,因为我没有看到足够的人在这一层面上钻研。或者,团队是否已经熟悉MSIL?

提问于
用户回答回答于

我已经知道了C,并且在1.1天内帮助我了很多尚未在.NET基础库中的东西,并且我必须从Platform SDK中P / Invoke。

我的意思是,我们应该总是分配一些时间来学习一些我们还不知道的东西。要回答你的问题,我认为你学习C不是必不可少的,但如果你有时间留出空间,C是一门很好的学习语言,并且和其他任何语言一样有效。

用户回答回答于

当然你应该。成为过于专业化和一心一意(并且相应地具有有限的可销售技能)的最大方法是仅使用单一类型的语言并且避开所有其他语言“与您当前的任务无关”。

每个程序员都应该具有现代JIT'O OO语言(C#/ Java),较低级别的简单语言(C,FORTRAN等),极高级别的解释语言(Python,Ruby等)以及函数式语言(Scheme,Lisp,Haskell等)。即使你没有在日常的基础上使用它们,扩大你的思维过程也是非常有用的。

扫码关注云+社区