根据这篇http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html 文章,我绝对应该这样做.
引用温和但坚持不懈的执行摘要:如果你不知道编译器是如何工作的,那么你就不知道计算机是如何工作的.如果你不是100%确定你是否知道编译器是如何工作的,那么你就不知道它们是如何工作的.
我认为这是一篇非常有趣的文章,应用领域非常有用(帮自己一个忙,然后阅读它)但是又一次,我看到成功的高级sw工程师不熟悉编译器,或内部机器这个问题的架构,但确实知道以下列表中每个项目的一两件事:
并非所有这些工具都是成为一名优秀程序员所必需的(就像你不需要它时的GUI一样),但大多数都是.编译器在哪里进入,并且它们真的那么重要,因为正如我所提到的,许多程序员似乎在不了解它们的情况下做得很好,特别是,成为一名优秀的程序员可以看到众多知识领域几乎是终身成就: - ),即使编译器非常重要,是不是总有更重要的东西?
或者我今天应该订购'The Unleashed Compilers Unlimited Bible(24H ..)))?
对于那些阅读过该文章并希望立即开始学习的人:
Tom*_*Tom 40
如果你只想成为一个普通的编码器,并写东西......你不需要采用编译器.
如果你想学习计算机科学并欣赏并真正成为一名计算机科学家,你必须采用编译器.
编译器是计算机科学的缩影!它包含了每一个问题,包括(但不限于)AI(贪心算法和启发式搜索),算法理论(形式语言,自动机),系统架构等.
你可以看到许多计算机科学以惊人的方式汇集在一起.您不仅可以更好地理解为什么编程语言以他们的方式工作,而且您将成为更好的理解者.您将学会理解低级别,这有助于高级别.
作为程序员,我们经常喜欢谈论的事情都是一个"黑盒子" ......但事情顺畅了很多,当你了解了什么是在箱子里一点点.即使你没有构建一个完整的编译器,你一定会学到很多东西.您将看到解析背后的形式(并且意识到它不仅仅是一堆特殊情况被黑客攻击),还有一堆NP完全问题.你会明白为什么计算机科学理论对于实际事物的理解是如此重要.(毕竟,编译器非常实用......如果没有形式,我们就没有今天的编译器).
我真的希望你考虑学习它们......这将有助于你作为一名计算机科学家进入一个新的水平:-).
您应该了解编译器,原因很简单,实现编译器会使您成为更好的程序员.编译器肯定会很糟糕,但在此过程中你会学到很多东西.这是改进(或练习)编程技巧的好方法.
要成为一名优秀的程序员,您无需了解编译器,但它会有所帮助。我在了解它们时意识到的一件事是,编译只是一种翻译。
如果您曾经从一种语言翻译成另一种语言,那么您刚刚完成了编译。
那么你应该什么时候学习编译器呢?
当您想要或需要它来解决问题时。
编译器理论很有用,但不是必需的。
尽管有一些技术可以派上用场,例如词法分析和语法分析。
另一种是错误处理。编译器需要很多这样的东西。用户输入可以包含任何内容,甚至是意外的内容。你需要处理所有这些。
如果您打算在足够高的级别上工作,并且担心 UML 和自描述代码,那么您可以轻松地完成您的整个职业生涯,而无需想要或不需要编译器如何工作的详细信息。
但是,如果您是一名一线程序员并且无意管理您的朋友,那么很可能有一天,您会意识到您正在与编译器发动战争。这可能是一个随机出现的错误,也可能是走廊里关于 while-verses-for 循环的对话。你会意识到组装(或IL,可能,在未来几年)就在你所需要的左边一点,另一个宇宙将会展开。
所以,我想我的答案是,现在只需注意编译器,它做了很多事情,但不要太担心。