根据这篇文章,我肯定应该学习编译器。
引用温和而坚定的执行摘要:如果你不知道编译器是如何工作的,那么你就不知道计算机是如何工作的。如果你不确定自己是否100%掌握了编译器的工作方式,那么你就不知道它们的工作方式。
我认为这是一篇非常有趣的文章,应用领域非常实用(请自行阅读),但我也看到过成功的高级软件工程师并不是非常擅长编译器,或者说内部机器结构,但是他们对以下列表中的每个条目都知道一些:
- 一个编程范例(面向对象,函数式等)
- 一个编程语言API(C#,Java..)并且至少熟悉两种不同的语言(Java / Haskell有人这么说!)
- 一个编程框架(Java,.NET)
- 一个IDE使您更加高效(Eclipse,VisualStudio,Emacs等)
- 最佳实践(例如,请参阅fxcop规则)
- 编程原则(DRY,高内聚性,低耦合性等)
- 编程方法论(TDD,MDE)
- 设计模式(结构型,行为型等)
- 架构基础知识(层次结构,过程模型(瀑布,敏捷等)
- 测试工具(单元测试,模型测试等)
- GUI技术(WPF,Swing等)
- 一个文档工具(Javadoc、Sandcastle等)
- 一个建模语言(和工具,例如UML、VisualParadigm、Rational)
- (毫无疑问还有其他非常重要的东西被遗忘在这里)
并不是所有这些工具都是成为一名好程序员所必需的(就像当你不需要GUI时),但其中大部分都是必须的。 编译器是什么?它们真的那么重要吗?因为正如我提到的,许多程序员似乎在没有了解它们的情况下也能很好地完成工作。尤其是成为一名优秀的程序员通常是掌握多个知识领域的成就,所以即使编译器非常重要,难道还不会有更重要的东西吗?
或者我应该今天就订购“无限编译器圣经(24小时内学会……)”?
对于那些已经阅读了本文并想要立即开始学习的人: