http://bbs.byr.cn/#!article/SoftDesign/36586
来自北邮人论坛、
-∞.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》《Computer Architecture: A Quantitative Approach》)
-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》, 《TCP/IP 详解》《MySQL Manual》有待补充)
感谢Lennon的补充
后记
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)看看
书尽量读英文版比较好 除非原书是中文写的
------------------------------------------------------------------------------------------------------------------------
晚上和diyer的直系师弟聊了聊,后生可畏啊,我老了,呵呵。
好书还是很重要的
应要求,推荐几本书吧
我看过的书有限,大家补充吧~~
w最近不是看了很多好书么~~
主要是一些基础方面的书
1.《深入理解计算机系统》
对于知识结构还没有建立起来的人,这本书再合适不过了。
包括计算机组成,编译,汇编,操作系统等各方面内容,号称非CS专业必看。
2.操作系统
《现代操作系统》
Andrew.Tananbaum 写的好书之一,相当不错,我看的就是这本
《操作系统概念》
计算机学院操作系统课程的教材,好书。
3.计算机网络
《计算机网络》
Andrew.Tananbaum 写的好书之二,潘爱民翻译的,很赞。
4.计算机组成和体系结构
我是靠本院教材了解的,不过那些教材个人觉得很水。
各位推荐一本这方面的?
From derkaiser: 《计算机体系结构-量化研究方法(4th)》
From Birdman: 《Computer Organization and Design: Hardware/Software Interface》
5.编译原理
《编译原理》
传说中的龙书,不二选择
《Modern Compiler Implementation in C》
虎书,在图书馆看到过。据说不错~
6.数据库
《数据库系统概念》
帆船书,不二选择
7.汇编
《Intel 汇编程序设计》
我看的,难度适中,适合像我这样希望熟悉掌握,当不打算精通的人看。书的习题也不错。附有光盘和程序库,刚入门的时候可以倚靠调用库函数来实现输出等功能,而不用调中断,或者自己写,容易上手。
《Win32汇编程序设计》
罗云彬的大作,C叔向我强力推荐过,可惜一直没有时间看。有空补上
8.C++
不用多说了。。。
《C++ Primer》
《The C++ Programming language》(《C++程序设计语言》)
《Effective C++》
《More Effective C++》
听w说Exceptional系列也不错
下面的书比较进阶了。
From NE:
Ruminations on C++
Modern C++ Design
From Windam:
《C++语言设计与演化》(理解C++语言的发展历程)
9.C
《C专家编程》
《The C Programming language》(《C程序设计语言》,又称 K&R C)
在C标准问世前的事实标准,就是这本书。
10.软件工程
《人月神话》软件工程的鼻祖级著作
《AGILE SOFTWARE DEVELOPMENT》ROBERT C. MARTIN 敏捷的经典
FADETOBLACK:《Applying UML & Patterns 》
11.算法
《算法导论》
也不用说了,博大精深,很多习题都值得思考
《算法设计与分析基础》
这本书好上手些,难度适中,适合入门或者复习用。
《数据结构与算法分析——C语言描述》
据说不错,我没看过。。
From KajiRyouji :
《编程之美(这个准备算法面试不错)》
12.Linux
From KajiRyouji :
《APUE(UNIX环境高级编程)》
POSIX API必备
《深入理解linux内核》
Linux内核必备
《实战linux socket编程》
13.JAVA
From 小贝:
《core java第一卷,第二卷 》
《thinking in java 》
《headfirst 设计模式》
14.大杂烩,各种各样的好书~
FROM PtwCJ:
高效程序的奥秘<hacker's delight>
编程珠玑(中文版一定要看第二版,第一版翻译很烂)
程序设计实践(只有英文版)
From Windam:
科普类:《从一到无穷大》(对数学,科学,以及世界观的一次洗礼)
重构代码方面:《修改代码的艺术》 Michael C. Feathers (对已有代码进行维护,修改的方法)
From KajiRyouji :
beautiful code(听说不错,读过其中两章,觉得还是等中文版)