根据这篇http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html 文章,我绝对应该。
引用温和但坚持的执行摘要:如果你不知道编译器是如何工作的,那么你就不知道计算机是如何工作的。如果你不能 100% 确定你是否知道编译器是如何工作的,那么你就不知道它们是如何工作的。
本来觉得是一篇很有意思的文章,应用领域很有用(帮自己一个忙,看一下) 不过话说回来,我见过成功的高级sw工程师,对编译器不是很了解,或者内部机架构,但确实知道以下列表中每个项目的一两件事:
- 编程范式(OO、函数式……)
- 一个编程语言 API(C#、Java ..)和至少 2 个非常不同的人说!(Java/哈斯克尔)
- 一个编程框架(Java、.NET)
- 一个让您更有效率的 IDE(Eclipse、VisualStudio、Emacs ......)
- 编程最佳实践(例如,参见 fxcop 规则)
- 编程原则(DRY、高内聚、低耦合……)
- 编程方法(TDD, MDE)
- 设计模式(结构、行为……)
- 架构基础(层、层、流程模型(瀑布、敏捷……)
- 测试工具(单元测试、模型测试……)
- 一种 GUI 技术(WPF、Swing)
- 文档工具(Javadoc、Sandcastle..)
- 一种建模语言(可能还有工具)(UML、VisualParadigm、Rational)
- (无疑在这里忘记了非常重要的东西)
并非所有这些工具都是成为一名优秀程序员所必需的(就像您不需要它时的 GUI),但大多数都是。编译器从何而来,它们真的那么重要吗,因为,正如我所提到的,许多程序员似乎在不了解它们的情况下做得很好,特别是,成为一名优秀的程序员被视为众多知识领域几乎是一生的成就:- ) ,所以即使编译器非常重要,难道不是总有更重要的东西吗?
或者我今天应该订购'The Unleashed Compilers Unlimited Bible (in 24H..))) 吗?
对于那些已经阅读文章并想立即开始学习的人: