如果是计算机科班出身的程序员,以下的六门课将是大学四年中会学的最最重要的六门课,可以说这六门课构成整个计算机科学的基础。
为了深刻理解这几门基础,我踩过无数的坑,终于总结出了一篇精选的书单。这么说吧,这篇书单的含金量高到我都想传给我儿子。如果能把以下列出的这几门课对应的这几本教材都读懂、吃透、融会贯通,那么至少,在未来的学习和工作生涯中,你将会感觉幸福的多。
1. 计算机组成原理(Computer Organization Concepts):
《Computer Organization and Design: The Hardware/Software Interface》
《Computer Architecture: A Quantitative Approach》
《Computer Systems: A programmer\'s Perspective》
三本书的难度依次递增,建议从上往下看。这三本啃透,计算机的上上下下里里外外就都门儿清了。
推荐和王爽的《汇编语言》一起看,有奇效。
2. 数据结构与算法(Data Structure and Algorithm):
《Data Structure and Algorithm in C》-- 标签:数据结构,C
《Algorithm》-- 标签:传说中的大红书,java
《Introduction to Algorithms》-- 标签:传说中的算法导论
推荐阅读顺序,从上往下,《Data Structure and Algorithm in C》和《Computer Organization and Design: The Hardware/Software Interface》一起看能事半功倍。
3. 操作系统(Operation System):
《Modern Operating System》-- 标签:作者大神(Andrew S. Tanenbaum & Herbert Bos),一本足矣
如果时间充足,大胆地写一个mini操作系统吧,只有这样才能把它的所有吃透。
4. 编译原理 (Compiler Concepts):
《Enhineering a Compiler》-- 标签:传说中的写编译器
亲自码!亲自码!亲自码!重要的话说三遍。
如果时间充足,大胆地写一个mini编译器吧,只有这样才能把它的所有吃透。
5.计算机网络(Computer Network):
《Computer Network》-- 标签:又见Andrwes S. Tanenbaum
6.数据库相关(Database):
《Database System Concepts》-- 标签:经典,基石
如果时间充足···好吧我知道你没那么多时间,不过写一个mini的数据库系统(好吧,从文件管理系统开始)确实也是一件特别有意思的事情。
除了王爽的《汇编语言》(同样是神作,强烈推荐),其他所有的教材都推荐英文原版阅读。语言关是避无可避的一道门槛,它关系着技术和事业的发展瓶颈。不要偷懒,浴火重生吧。
如果按照上面的规划踏实地完成下来,在所有的书读完后,你还会有三个重量级的项目经历在手中,写过编译器,写过数据库,写过操作系统。哇塞,感觉简直吊炸天了有木有!
虽然这三个底层的项目都是mini的,肯定不会有啥商业价值,但那将升华你的技术水平。自此以后,你看到的将完全是另一个世界,那是萌新的你当时原来可望而不可即的世界,那是大神们的世界。嗯,一起向着那个梦想中的世界努力吧。
以后再推荐和计算机所需的数学基础教材。也会更新一些我的读书笔记和随笔。慢慢来,不着急。