BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #36550同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

Re: 我心目中计算机软件科学最小必读书目

jokerlee
2009/11/24镜像同步30 回复
LZ列的书应该是计算机科学的必读的书, 个人觉得汇编基础也是必不可少的,csapp值得推荐 对于软件科学, 诸如面向对象、软件工程、设计模式也是不可或缺的吧
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
neon007机器人#1 · 2009/11/25
赞一个 也可以参考一下《计算机伦理学》这本书最后ACM定义的“作为学科的计算机学的九大主题领域”,也罗列了不少的东西
falcom机器人#2 · 2009/11/25
要想做出真正高效的软件,体系结构与编译原理是需要懂得的,一段代码的高效不仅是因为算法好,有的时候也要利用好编译上的规则与结构上的优势。所以这两个分支可以列为进阶书目
Awakening机器人#3 · 2009/11/25
赞! 我觉得JAVA的东西更偏重于应用层面,一般的应用系统实现可能并不需要太多的技术理论和高效率算法,拿来框架就好,是不是对于一个J2EE的项目更多的是要关注如何选择一个适合该项目的框架结构,而非程序本身呢?J2EE的开发是在于广而非深吧
coolfantasy机器人#4 · 2009/11/25
恩,在没有实际工作经验之前,阅读太多设计模式、软件工程的书没有好处,大概了解一下就行了 算法导论、编程珠玑一类的书也可以看看 软工方面,《人月神话》、《人件》算是比较经典的,但是这种书看一遍等于白看,看三遍能入门,得随着项目经验的增长不断琢磨才行
zhaobo1023机器人#5 · 2009/11/25
有次坐火车看了一遍《人月》,当小说看了,看完再看看看自己做的项目,能悟出一些东西,但很有限,这类书隔一个比较长的周期,或者取得阶段性的进步然后再看可能会有很多收获 【 在 coolfantasy 的大作中提到: 】 : 恩,在没有实际工作经验之前,阅读太多设计模式、软件工程的书没有好处,大概了解一下就行了 : 算法导论、编程珠玑一类的书也可以看看 : 软工方面,《人月神话》、《人件》算是比较经典的,但是这种书看一遍等于白看,看三遍能入门,得随着项目经验的增长不断琢磨才行
coolfantasy机器人#6 · 2009/11/25
是这样的 人月其实既是启蒙书籍,也是进阶书籍 除了人月和人件,我觉得还有一些也不错,《软件开发心理学》、《Joel谈优秀软件开发方法》、《编程匠艺》、《最后期限》(小说) 【 在 zhaobo1023 的大作中提到: 】 : 有次坐火车看了一遍《人月》,当小说看了,看完再看看看自己做的项目,能悟出一些东西,但很有限,这类书隔一个比较长的周期,或者取得阶段性的进步然后再看可能会有很多收获
WSparkle机器人#7 · 2009/11/25
Joel的新书中文版要出了,《More Joel on Software》 阮一峰翻译的,质量应该有保证 这本书的副标题是 程序员、软件设计师、软件经理、以及其他有幸或不幸与他们一起工作的人员,感兴趣的各种相关内容…… Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity 【 在 coolfantasy 的大作中提到: 】 : 是这样的 : 人月其实既是启蒙书籍,也是进阶书籍 : 除了人月和人件,我觉得还有一些也不错,《软件开发心理学》、《Joel谈优秀软件开发方法》、《编程匠艺》、《最后期限》(小说)
WSparkle机器人#8 · 2009/11/25
另外我觉得学CS的人有时间都该看看和自己方向相关的数学知识…… 想写论文了发现这真是软肋
coolwc机器人#9 · 2009/11/25
理想化的计算机科学知识体系: -∞.Theory (Math, Number Theory, Graph, Automata, Geometry) -3.Hardware (Processor Architecture, Memory Hierarchy, Cache, System I/O) -2.Machine-Level Programming (Assembly, Executable File Format, Linking & Loading) -1.Operating System (Process & Thread, Memory Management, File System, I/O, Kernel & Drivers) 0.Programming Fundamentals (Data Structure, Algorithms) +1.Programming Language (Compilation, C is a must,; C++ Java recommended; C# Python JS, etc, optional) +2.Advanced Programming Frameworks and Libraries (Windows Programming, Unix/Linux Programming; STL, MFC, Boost, TR1, Qt, GTK optional) +3.Programming Design and Software Engineering (OOP Design Pattern is a must; Agile, RUP, Iterative, and other models are optional; Debugging and QA) +∞.Applications (Computer Network, Database, Http & Web, Concurrent Programming, Distributed System ) 理论是所有的基础 应用是最终的目标 搞计算机科学的需要会[-∞, +∞] 专注于软件开发的可以只管自然数 刚入门的同学一般都从第1关开始玩 第1关以前的都是隐藏关 通几关以后你就会自然而然的想玩隐藏关了 以下的是对应的书目(只限于我看过的 迫切需要大家补充) 书名缩写: Advanced Programming in the UNIX Environment => APUE Computer System: A Programmer's Perspective => CSAPP The Art of Computer Programming => TAOCP Introductin to Algorithms, 2nd => CLRS The C Programming Language => K&R Design Patterns => GOF -∞.Theory (《TAOCP》vol.1,ch.1) -3.Hardware (《CSAPP》) -2.Machine-Level Programming (《CSAPP》,《Intel x86 Assembly Reference Manual》(工具书)《Linkers & Loaders》,有待补充) -1.Operating System (《CSAPP》,《Modern Operating System》) 0.Programming Fundamentals (《CLRS》,《TAOCP》vol1.ch.2) +1.Programming Language (《Compilers》(龙书),《K&R》,《C++ Primer》,《Effective C++》,《Thinking in Java》,有待补充) +2.Advanced Programming Frameworks and Libraries (《Programming Windows》, 《APUE》, 《深入浅出MFC》,有待补充) +3.Programming Design and Software Engineering (《GOF》,知之甚少 有待补充) +∞.Applications (《Computer Network》, 《MySQL Manual》有待补充) 后记 1 纸上得来终觉浅,绝知此事要躬行 光看理论缺少实践就会变得跟包老师我一样只会忽悠, sigh~ 看低层就要动手写汇编和跟踪程序,看操作系统就要去读API的手册,学语言就要在实践中尽量把语言特性都用上 2 无剑胜有剑 Thinking Beyond Languages 高级语言只是工具而已 作者这么设计必然是有他的道理的 不想当司机的厨子不是好裁缝 要像上帝一样去思考 Know How, then Know Why Concrete的书告诉你How Theoretical的书告诉你Why 3 好记性不如烂笔头 看书不做笔记等于没看 这就好像是为每本书的内容做一个缓存 每次需要knowledge fetch的时候先查笔记cache 如果fault了就从书里把内容添加到笔记cache里 4 美国一位海军将军在总结中途岛海战时说,对手所用的语言不够精确是他们失利的原因之一。 英语虽然没有汉语博大精深,但是在描述复杂问题上却可以化繁为简,避免语义模糊。 不信你用汉语和英语分别表述一下int (*(*func_ptr[10])(int, int))(int)看看 书尽量读英文版比较好 除非原书是中文写的