cal*_*cat 15 theory computer-science programming-languages
我多年来一直担任顾问编程,我喜欢我的工作,涉及大量面向对象的分析和使用托管语言(即软件工程)的软件系统设计.但是我最终想获得一个博士学位,让我感到困扰的是我从未真正"获得"计算机科学理论.在大学里,我在这些课程中只做得很好,因为他们的教学方式并不适合我.我通过观察概念的应用来学习,而不是死记硬背.
我之前已经克服了这样一个障碍的一个例子 - 我有一个可怕的第一年.这位教授(我现在知道他几乎没有资格,也是一位不称职的老师)从C++开始,教我们程序编程.从技术上讲,我已经了解了一个对象是什么,但直到我看到面向对象分析和设计的应用(具有设计模式和其他结构,如链表),我才真正理解它们的用途.
我将如何学习编译器,编程语言理论和算法分析等学科?什么是开始这些的好方法?例如,我想最终编写一个编译器(为了好玩),但我不知道从哪里开始.有没有人遇到过这种情况?有关教程,免费在线讲座视频或参考的建议(像w3schools那样的东西会很棒)?
(我想补充一点,浏览Stackoverflow已经教会了我的负载,但我希望它有点更正式:)
编辑:谢谢大家的建议.我已经标记了一个对我个人有用的答案,但请保持答案:)
我喜欢塞奇威克的"算法"(ISBN 0201066734 1988年604p),因为它会谈在对话形式,通过一个算法,并具有很好的例子.查看亚马逊下的评论.(有许多变体版本,多卷C++ Java等)
(增加了2feb :) Althoough算法是基本和有趣的,它们相当遥远 - 在高原地区徒步旅行,而不是每天的交通堵塞.
Bentley的"编程珍珠"(isbn 0-201-65788-0 2000 239p
珍珠)
"充满了小案例研究,真实例子,以及有关如何编程的有趣练习".
对于大型团队软件项目,布鲁克斯的"神话人月"(isbn 0201835959 2ed 1995 322p
Amazon)是必须的:
"产品的概念完整性至关重要".并引用了Parnas的观点.221:
而不是教人们OO是一种设计,并给出设计原则,人们已经教导OO是使用特定工具.我们可以用任何工具编写好的或坏的程序.除非我们教人们如何设计......
最后,可视化/ GUI/UI通常有很大的改进空间.我不知道这方面的一本好的介绍性书籍,与上述同等; 还有谁 ?
如果您计划获得博士学位。有一天,为什么不现在就回到学校呢?作为博士学位,您需要学习大量课程。候选人,并在更偏向 CSish 的领域(算法等)寻找研究将对你的这项事业有更多帮助。