posts - 51,  comments - 24,  trackbacks - 0
大学读过的一些好书
 

从学校回来,整理了一下书籍。以后可能不会把目光放在这边,因为快要去传统行业的国企混了。于是把看过的好书写出来,算是个纪念吧,也给有兴趣的朋友们参考下。主要是些c语言相关的书籍,至于各种语言的优劣也没兴趣争了,只想对自己说,选择c,至今仍不后悔。
     这些书很多是英文的,也基本上都是本学科内的权威之作。没办法,国内高校的气氛就那样,老师写书的目的就是评职称,东抄西抄,翻译的也很多是让自己的学生来弄。即便是影印版,有的也被出版商弄得印刷质量惨不忍睹,这是题外话了。无法改变环境,就只能去适应了。
     除了两本没来得及看,其他的都有亲自看过。看的是英文版或是中文版也写在括号里了。大概是按照读过的次序排下去。花了1年多的时间在学习,也算挺累的。即将离开软件业了,至少是离开c语言,得过且过吧。

Thinking in C++ 2nd ed. Volume 1(英文) (Bruce Eckel[著])
C++编程思想(第2版) 第1卷:标准C++导引
     读过的第一本英文原版书,正是他使我体验到了英文版的魅力,从而一发不可收拾。Bruce大叔的《Thinking in C++》,《Thinking in Java》本本是经典。这本书介绍了c基础,c++语法基础以及底层实现,更重要的是渗透在其中的OOP,软件工程思想,以至于后来看《Effective C++》时,发现有一半左右的条款其实在《Thinking in C++》就有讲了。当然这些东西有的是需要一定的工程经验才能看得懂的,偶那时自然是囫囵吞枣了。附录的Coding Style, Programming Guidelines,Recommended Reading也都值得一看。网上有人对这书评价极低,我想唯一的理由就是翻译问题了,中文版看起来的确是惨不忍睹。Volume 2讲的主要是异常,STL等议题,偶因为转向c了,所以没来得及看。

Effective C++, Second Edition(中文)   (Scott Meyers[著])
     看的是网上流传的中文版,描述了50个经过实践检验的c++技巧和误区。第三版已经出来了,内容有所增加,侯捷老师翻译的,值得一读。也大致翻过《More Effective C++》,同样经典。

高质量程序设计指南——C++/C语言(第二版)(中文)   (林锐 韩永泉[著])
     网上对此书褒贬不一。个人认为,书中涉及c的部分的确蛮不错的。至于c++部分我没认真读,无法评价。

The C Programming Language 2nd Ed(英文)   (Brian W.Kernighan,Dennis M.Ritchie[著])
C程序设计语言(第2版)
     二十年前一本200多页的小册子,至今仍是c教程领域无可争议的霸主,就是这一本c语言之父的大作。整本书介绍了c语言的方方面面,文笔优美,深入浅出,可以说是多一句话无益,少一句话不够,读这种书真的是一种享受。一个学c的人如果没看过此书,那只能说你没真正学过c。这书并不太适合于入门,不过只需有一点c或其他语言的基础便足矣读通了,之后当然就是反反复复的咀嚼,每读一遍都会有新的收获。
     至于附录部分的参考手册和库函数更是增加了该书的实用性。ANSI C就是根据这本书第一版中的参考手册来写的,第二版又根据ANSI C做了少许修订。虽然标准才是权威,但那主要是给编译器作者看的,而这本书是真正写给c的使用者看的。

C专家编程(中文)   (徐波[译])
Expert C Programming   (Perter Van Der LinDen[著])
     翻译的还行,作者的文笔也很诙谐,算是本书的一大特色了。内容倒不浅显,讲了c的不少技巧,特别是花了很大篇幅讲述数组与指针的关系,让那时刚学c语言的我明白,c不是好惹的。
     顺便推荐一篇文章,How to interpret complex C/C++ declarations(www.codeproject.com/cpp/complex_declarations.asp),讲解了各种复杂的指针声明,右左法则,非常不错。也有人翻译了,叫“教你理解复杂的C/C++声明”,不过译得不是太好。

C陷阱与缺陷(中文)   (高巍[译])
C Traps and Pitfalls   (Andrew Koenig[著])
     写在ANSI C之前的一本书,其内容到了今天仍然绝大部分适用。主要指明了c语言使用中容易碰到的一些陷阱,看似简单,实际上却很容易疏忽,比如很经典的把“==”误写成“=”。需要在编写大量代码的过程中注意理解,方能真正避开c语言中数不尽的trick。

华为编码规范和范例(中文)
     网上下载的电子文档,是偶看过的第一份编码规范资料,因此之后的代码风格大部分都照着他来了。也稍微看过《代码大全》,主要讲的同样是编码规范,还有一些系统设计,文档编写方面的注意事项,不过内容实在太多了,没耐心看完。

编程精粹───Microsoft编写优质无错C程序秘诀(中文)
Writing Clean Code───Microsoft Techniques for Developing Bug-free C Programs
     网上的文档,好像没有实体书。讲的是ANSI C,还不错。

Data Structures and Algorithm Analysis in C:Second Edition(英文) (Mark Allen Weiss[著])
数据结构与算法分析——C语言描述(原书第2版)
     该书讲述了各种数据结构和算法及其分析。国内好像蛮流行严蔚敏老师的那本数据结构,我也看过,不知是不是资质问题,有的地方看不懂,感觉比较乱,而这本书看起来就很流畅了,代码很清晰,当然深度也不比严的差。也曾翻过《INTRODUCTION TO ALGORITHMS(SECOND EDITION)》的目录,发现这两本书的内容差别不大。《INTRODUCTION TO ALGORITHMS(SECOND EDITION)》侧重的是算法方面,而这本书侧重的是数据结构。如果有时间,两本书都可以看看。但是时间紧的话,个人觉得看这本也就够了,毕竟我看过了,内举不避亲,呵呵,而且从现实的角度来看,面试时数据结构题目也比算法常见。
     这本书是浙大用的教材,在国内出影印的时候也被浙大的老师修改了一下,大概是原出版社怕盗版回流国外吧。不过修改的并不太严重,主要是前面有一章简单的数学基础删了,没多大影响。另外有些代码的变量名,大小写也稍微变了,但是基本不影响原来的面貌。改编者也有增加了一两节还算过得去的内容。如果实在想要原版的,可以到网上搜索一下《算法ebook(10部算法经典著作的合集)》,里面有英文原版的第一版,除了少掉最后一章(一些高级算法),其他好像和第二版一样。

Computer Systems: A Programmer's Perspective(英文)   (Randal E.Bryant,David R.O'Hallaron[著])
深入理解计算机系统
     这是本将近1000页的“砖头”,不过他的内容绝对对得起他的质量。顾名思义,此书以程序员的视角出发,帮我我们在大脑里构造出一个有层次的计算机系统,深入浅出地介绍了处理器(通过一个简单cpu的模拟设计)和存储器硬件(存储器的层次,数据在硬盘,内存,寄存器之间的传输)、编译器(用编译后的汇编代码来解释)、操作系统(OS的存储器管理,虚拟内存管理)和网络环境(通过几个小程序介绍了Linux下常用的socket,多进程等方面的system call)等内容。本书的精华之处还在于他在多处地方贯穿讲解了c语言是怎样转换成计算机所能理解的汇编语言,然后描述计算机如何解释和执行汇编程序,如何高效率地传送数据,是系统的哪一部分影响程序的执行效率,从而有助于读者写出更高效,更健壮的程序。欲读此书,无须自宫,只要有一点c语言基础就足够了(当然英文也要懂一点),读后便觉醍醐灌顶。
     顺便说一下,该书中文版翻译的还不错,译者也很负责,我那时从图书馆借来看,给译者发了个e-mail要勘误表,结果第二天他就发给我了。只是看到某个地方忽然理解不了,找来英文的电子版看了下,好像懂了,于是就去买英文版来看了。
     Ps:个人觉得,认真读完《The C Programming Language》+《Data Structures and Algorithm Analysis in C》+《Computer Systems: A Programmer's Perspective》+《CET真题》,基本上就算是个合格的本科毕业生了。

计算机网络(第4版)(中文)   (潘爱民[译])
Computer networks, Fourth Edition   (Andrew S.Tanenbaum, Vrije Universiteit, Amsterdam,The Netherlands[著])
     潘爱民老师出了很多的经典译著和原创,这本就是其中之一,语言通俗流畅,不知情的人可能还看不出这是翻译过来的。整书深入浅出地介绍了网络协议模型的各个层次,从物理层一直到应用层,并辅以详尽的代码解释,另外还讲述了网络安全。书虽然是几年前出的,但是对于当前流行的WLAN,蓝牙等东西都有涉及到,至于像3G之类的新生事物,我想只要有了这本书的基础,想去把他搞明白只是举手之劳吧。

数据库系统概念(中文) ( 杨冬青 唐世渭 等[译])
Database System Concepts   (Abraham Silberschatz,Henry E Korth,S.Sudarshan[著])
     当时对数据库不是很感兴趣,不过学校有开这门课程,就去图书馆借来看看。翻译的还算不错,我看了前几章,主要是基本概念,E-R模型,关系模型,sql语句等内容,应付考试已足够了。后面几章是数据库系统设计,开发的一些高级内容,想必也应该写的不错吧。

编译原理(中文)   (李建中 姜守旭[译])
Compilers:Principles,Techniques,and Tools (Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman[著])
     著名的“龙书”。看这本书的目的和《数据库系统概念》一样。只看完语法分析,有点迷迷糊糊的,因为编译原理本来就比较难懂,可能翻译的也不是非常好,再加上没什么时间,所以没再看了。

面向对象与传统软件工程(原书第5版)(中文)   (韩松 邓迎春 李萍[译])
Object-Oriented and Classical Software Engineering,Fifth Edition (Stephen R.Schach[著])
     同样是为了考试。内容比较易懂,讲解的项目实例也挺丰富,翻译中规中矩。

Operating System Concepts(Sixth Edition)(英文)   (Abraham Silberschatz & Peter Baer Galvin & Greg Gagne[著])
操作系统概念(第六版)
     这本是“恐龙书”,可惜国内的影印版封面上都没恐龙了。如果觉得《Computer Systems: A Programmer's Perspective》里面的OS部分不够详细,可以读一读此书。基本上有关OS的知识都可以在这里面找到了,概念清晰,条理性强。当时国内只出了第六版,现在第七版也已经出了。

汇编语言(中文) (王爽[著])
     国内的原创好书。整书循序渐进,通俗易懂,基本不需要有什么硬件基础,也改变了我以前对汇编晦涩,难学的印象。唯一的遗憾是没讲解保护模式下的汇编,这方面可以看下杨季文的《80X86汇编语言程序设计教程》。不过从初学者的角度来看,杨的书就比较差了,而且里面的代码都是用大写的,对于长期用c的我来说,多少有点不习惯。当然最权威的参考资料还是Intel的《Intel(R) 64 and IA-32 Architectures Software Developer’s Manual》了。

自己动手写操作系统(中文)   (于渊[著])
     又是一本原创好书。作者详细介绍了各种开发工具的使用,通过一步步的实践指导,帮助我们构造出一个简单的OS雏形。讲述的内容层次不会很深入,不过毕竟OS本身起点就比较高,所以要读懂这本书还是要有点努力的。必要的基础是c语言,保护模式下的汇编,另外Intel的汇编三卷本,微软的fat文件系统规范等都是不错的参考资料。

LINUX内核完全注释(中文)   (赵炯[著])
     这本也是国内原创。忘了当初是买那本书时一起买的,之后一直没时间看。不过大致翻了一下,本书是用早期的能正常运行的0.01版来说明OS的各项基本功能,代码量不太大(1万多行),注释也很清晰,如果对OS内核有兴趣的,此书应该值得一读。现在的新版本是叫《LINUX内核完全剖析》。

The C++ Programming Language(Special Edition) (英文)   (Bjarne Stroustrup[著])
     学校书店里一堆垃圾计算机书籍,好不容易看到这么本好书,就买回来了。不过后来跑去学c,所以一直放着没读。偶尔拿起来翻翻,结构很清晰,网上的评价也是非常高,不愧是C++之父的大作。

程序员面试攻略(中文)   (杨晓云[译])
Programming Interviews Exposed Secrets to Landing Your Next Job   (John Mongan,Noan Suojanen[著])
     本书对面试中的各种注意事项,常见题型做出了分析和解答。其中的题目都还算经典。

Advanced Programming in the UNIX Environment,Second Edition (英文)   (W.Richard Stevens,Stephen A.Rago[著])
UNIX环境高级编程(第2版)
     厚厚的“砖头”,描述了FreeBSD 5.2.1、Linux 2.4.22内核、Solaris 9和Darwin 7.4.0系统上的POSIX.1接口,有助于写出类UNIX环境中的兼容程序,当然把他当作纯粹的Linux系统调用书籍来学习也不错。虽然内容很多,但是分类清楚,条理性强,无论是通读还是作为字典来使用,都非常合适。

分留着没用,散掉。

posted on 2009-08-02 13:36 刘之远 阅读(477) 评论(1)  编辑 收藏 引用

FeedBack:
# re: 大学读过的一些好书(转)[未登录]
2009-08-04 21:52 | chaosuper
基本都读过.  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(1)

随笔分类(21)

随笔档案(51)

c语言学习笔记

搜索

  •  

积分与排名

  • 积分 - 22019
  • 排名 - 761

最新随笔

最新评论

阅读排行榜

评论排行榜