推荐计算机科学类的经典书籍

  • Post author:
  • Post category:其他



推荐计算机科学类的经典书籍(一)



1.The Art of Computer Programming




Author



: Donald.E.Knuth


Web site

:




http://www-cs-faculty.stanford.edu/~knuth/taocp.html






Book Info

:


这部书被誉为

20

世纪最重要的

20

部著作之一

,



Einstein



< <

相对论

>>

并列

,

是计算机科学领域的权威著作

.

全书共分

7



,

目前已经出版了

3



,

被誉为



计算机程序设计理论的荷马史诗

“,”

可与 牛顿的

< <

自然科学的数学原理

>>

媲美的巨著

“.

作者数学方面的功底造就了本书严谨的风格

,

虽然本书不是用当今流行的程序设计语言描述的

,

但这 丝毫不损伤它



程序设计史诗



的地位

.

道理很简单

,

它内涵的设计思想是永远不会过时的

.The Art of Computer Programming

原计划要出七册

,

但目前只完成了三册

.

该书有日文

,

俄文

,

西班牙文等许多国的版本

.

其中

,

中文版由国防大学出版社发行

.


Book Reviews

:


无数的读者都在谈论

Knuth

的书所带来的深远影响

.

科学家惊叹于分析逻辑之透彻严谨

,

而普通的编程人员也已成功地将书中所列方案运用到他们的日常问题中

.

所有的人都非常赞赏

Knuth

在这套书中所表现的精确与风趣

,

并为其明确性与涉及面之广而感到欣喜

.


我无法向你表达这套书在学习和创造性方面所带给我的兴奋与激动

,

我已经将它们带入了我的生活

,

就像我的汽车

,

饭馆

,

工作

,

家庭

……

无所不在

.

—-Charles Long


无论你的背景怎样

,

如果你正在进行复杂的计算机编程

,

你就应该阅读本套书中的每本书

,

来补充你的专业知识

.


当一个问题难以解决

,

而必须使用

Knuth

的这套书来解决时

,

总是一件令人愉快的事情

.

我发现在计算机方面使用它们会有惊人的效果

.

—-Jonathan Laventhol


如果你认为你是一名真正优秀的程序员

……



Knuth



< <

计算机程序设计艺术

>>,

如果你能读懂整套书的话

,

请给我发一份你的简历

.

—-Bill Gates

The Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition)


Author

: Donald.E.Knuth


Publisher

: Prentice Hall


Amazon Reviews

: Amazon.com


Book Info

:



1

为基础运算法则

,

该书以基本的编程概念和技术为开始

,

然后讲述信息结构



计算机内信息的表示法

,

数据元素间的结构关系以及处理它们的有效方法

.

主要 应用于模拟

,

数字方法

,

符号计算

,

软件和系统设计

.

许多简单和重要的运算法则和技术已添加到前一版本中

,

精确的初步计算部分已经修改

,

以适应当前趋势

.

The Art of Computer Programming, Volume 2: Seminumerical Algorithms (3rd Edition)


Author

: Donald.E.Knuth


Publisher

: Prentice Hall


Amazon Reviews

: Amazon.com


Book Info

:



2

卷对半数值算法领域做了全面介绍

,





随机数







算术



两章

.

本卷总结了主要算法范例及这些算法的基本理论

,

广泛剖析了计算机程序设计与数值分析间的相互联系

.



3

版中特别值得注意的是

Knuth

对随机数生成程序的重新处理和对形式幂级数计算的讨论

.

The Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition)


Author

: Donald E.Knuth


Publisher

: Prentice Hall


Amazon Reviews

: Amazon.com


Book Info

:



3

为分拣和搜索

,

这是本书的第

1

个修订版

,

它是对计算机分拣和搜索的一流技术的最全面的研究

,

它扩展了卷

1

中数据结构的处理方法

,

将大小数据库以及内存 和外部存储都包含在内

.

本书包括对计算机方法仔细检查的选择方案

,

和其效率的大量分析

.

本书该版的独特之处在于优化了的分拣

,

以及对通用散列法和排列法的 新的理论论述

.



作者简介


:

Donald.E.Knuth(

唐纳德

.E.

克努特

,

中文名高德纳

)

是算法和程序设计技术的先驱者

,

是计算机排版系统

TeX



METAFONT

的发明 者

,

他因这些成就和大量创造性的影响深远的著作

(19

部书和

160

篇论文

)

而誉满全球

,

在计算机科学领域享有崇高的威望

,

是计算机科学界公认的大宗师

.

作 为斯坦福大学计算机程序设计艺术的荣誉退休教授

,

他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集

.

这一伟大工程在

1962

年他还是加利福尼亚理 工学院的研究生时就开始了

.Knuth

教授获得了许多奖项和荣誉

,

包括美国计算机协会图灵奖

(ACM Turing Award),

美国前总统卡特授予的科学金奖

(Medal of Science),

美国数学学会斯蒂尔奖

(AMS Steele Prize),

以及

1996



11

月由于发明先进技术荣获的极受尊重的京都奖

(KyotoPrize).

现与其妻

Jill

生活于斯坦福校园内

.

Donald.E.Knuth

人生最辉煌的时刻在斯坦福大学计算机系渡过

,

获得了美国计算机协会图灵奖

,

成为本领域内当之无愧的泰斗

.


英文原版下载







http://www.shubulo.com/redirect.php?tid=34754



—————————————————————-


2.Introduction to Algorithms



Author

:Thomas H.Cormen ,Charles E.Leiserson ,Ronald L.Rivest ,Clifford Stein


Amazon Reviews

: Amazon.com


Book Info

:


简称为

CLRS



< <

算法导论

>>,

被称作



计算机算法的圣经

“.


本书的主要作者来自麻省理工大学计算机

,

作者之一

Ronald L.Rivest

由于其在公开秘钥密码算法

RSA

上的贡献获得了图灵奖

,

目前是算法的标准教材

,

美国许多名校的计算机系都使用它

,

国内有些院校也将本书作为算法课程的教 材

.

另外许多专业人员也经常引用它

.

由于

TAOCP

只出版了

3



,CLRS

比较起前者来则显得内容更为全面

,

基本包含了所有的经典算法

.

本书程序全部由伪 代码实现

,

这更增添了本书的通用性

,

使得利用各种程序设计语言的程序员都可以作为参考

.

语言方面通俗

,

很适合作为算法教材和自学算法之用

.

国内的很多作品 名为数据结构

,

从本书中断章取义

,

把数据结构与算法混为一谈

,

搞得作者自己都迷迷糊糊

.

这也是我不十分愿意向大家推荐国内作品的原因

.

你会发现现在基本上 所有的数据结构与算法书籍都会将本书作为参考文献之一

,

更可以说明一个问题

,

本书是作为读者进行算法学习的最佳选择

.

作为本书的补充内容

,

我愿意向大家推 荐下面的学习资料

:

你可以通过这个地址找到本书的所有练习答案

:





http://www.itu.dk/people/beetle/




.


为了更好的学习本书中的内容

,

最好的指导当然是来自作者本身讲述本书的课程

,

读者们可以通过




http://18.89.1.101/sma/5503fall2001/index5503fall2001.html




获得课程的录像

.


中文版







http://www.shubulo.com/thread-31351-1-1.html







习题及答案







http://www.shubulo.com/thread-33989-1-1.html



—————————————————————-


3.Data Structure & Algorithm Analysis in C (Second Edition)



Author

:Mark Allen Weiss


Published

:September 1996


Web site

:




http://www.cs.fiu.edu/~weiss/






Amazon Reviews

: Amazon.com


Book Info

:


本书曾被评为

20

世纪顶尖的

30

部计算机著作之一

,

作者

Mark Allen Weiss

在数据结构和算法分析方面卓有建树

.

他的数据结构和算法分析的著作尤其畅销

,

并受到广泛好评

.

已被世界

500

余所大学用作教材

.


4.Concrete Mathematics A Foundation for Computer Science(Second Edition)



中文版




http://www.shubulo.com/thread-33994-1-1.html






Author

:Donald.E.Knuth&Ronald L.Graham


Web site

:




http://www-cs-faculty.stanford.edu/~knuth/gkp.html






Amazon Reviews

: Amazon.com


Book Info

:


很令人兴奋的就是这本书的主要作者正是泰斗

Donald.E.Knuth

以及他的同事

Ronald L.Graham.

书稿是他们在

1970

年的时候在计算机系教授研究生本门课程的基础上整理出来的教材

.

内容上是

Knuth

的巨著

TAOCP

第一部的扩 展

,

有些比

TAOCP

中谈及地又深入了许多

.

重点放在高级计算机程序设计话题以及算法分析上

,

涉及了计算机科学领域内几乎所有可能遇到的数学知识

.

具体数 学是离散数学和连续数学的综合

,

书中这点做得极为出色

,

介绍的内容涉及到书中许多经典问题的解答比目前广泛流传的解法更易懂

.

对于提高大家的计算数学修养 有很大帮助

.

之所以

TAOCP

有的时候读者们读不懂就是因为计算数学基础不是十分扎实

,

但以我个人经验

,

若能对本书中内容有一个比较好的理解

,

会给你阅读 如

TAOCP

这样的旷世巨著带来很大的方便

.


5.Discrete Mathematics and Its Applications,Fourth Edition



习题




http://www.shubulo.com/viewthread.php?tid=33130






Author

:Kenneth H.Rosen


Amazon Reviews

: Amazon.com


Book Info

:


本书的价值已经被全世界几百所大学所证实

,

作为离散数学领域的经典教材

,

全世界几乎所有知名的院校都曾经使用本书作为教材

.

以我个人观点看来

,

这本书可以 称之为离散数学百科

.

书中不但介绍了离散数学的理论和方法

,

还有丰富的历史资料和相关学习网站资源

.

更为令人激动的便是这本书少有的将离散数学理论与应用 结合得如此的好

.

你可以看到离散数学理论在逻辑电路

,

程序设计

,

商业和互联网等诸多领域的应用实例

.

本书的英文版

(

第五版

)

当中更增添了相当多的数学和计 算机科学家的传记

,

是计算机科学历史不可多得的参考资料

.

作为教材这本书配有相当数量的练习

.

每一章后面还有一组课题

,

把学生已经学到的计算和离散数学的 内容结合在一起进行训练

.

这本书也是我个人在学习离散数学时读的唯一的英文教材

,

实为一本值得推荐的好书

.

—————————————————————-


6.The C Programming Language 2nd Edition



英文版




http://www.shubulo.com/viewthread.php?tid=17067







习题及答案




http://www.shubulo.com/viewthread.php?tid=30825






Author

:Brian W.Kernighan and Dennis M.Ritchie


Publisher

: Prentice Hall


Published:

1988.


Amazon Reviews

: Amazon.com


Book Info

: Brian W.Kernighan




Dennis M.Ritchie

的传世之作

.

千千万万程序员和编程爱好者的圣经

,

每一页都是价值连城的秘诀

.

不管你从哪一页信手翻起

,

最终你都会发现自己已经深陷其中而不能自拔

.

—————————————————————-


7.The C++ Programming Language


Author:Bjarne Stroustrap

Amazon Reviews: Amazon.com

Book Info:



C++

之父亲手执笔的

< <The C++ Programming Language>>

是每个程序员心目中不可动摇的指南

—–

尽管官方标准还是

ISO

颁布的另一份文档

,



ISO/IEC JTC1/SC22/WG21

出版

.TCPL

是除了

C++

标准文献之外最权威的

C++

参考手册

.

和大多数人的看法不大一样

,

我认为

Bjarne

的文字语言 并不逊色于他所创建的程序语言

,

至少我喜欢这种学院气息浓厚的作品

.

本书对

C++

语言的描述轮廓鲜明

,

直截了当

.

它从

C++

语言创建者的角度来观察

C++,

这是任何别的作者和书籍做不到的

—-

没有任何人比

Bjarne

自己更清楚该怎么来使用

C++.


这是一本严肃的著作

,

以中

,

高级

C++

开发人员为目标读者

.

如果你是一名有经验的

C++

程序员

,

需要了解更加本质的

C++

知识

,

本书正是为你而写

.

它 不是那种让你看了会不断窃喜的小书

,

需要用心体会

,

反复咀嚼

.

在阅读过程中

,

请特别留心

Bjarne

先生强调了什么

,

又对什么一语带过

.

我个人比较喜欢这 本书的第四部分



使用

C++

做设计

“,

这样的内容在类似的程序设计语言书籍中很难看到

—-

我甚至认为

Bjarne

应该将这部分独立出来单独写一本书

.

—————————————————————-


8.The Design and Evolution of C++


Author: Bjarne Stroustrup

Amazon Reviews: Amazon.com

Book Info: D&E

是一本关于

C++

语言设计原理

,

设计决策和设计哲学的专著

.

它清晰地回答了

C++

为什么会成为今天这个样子而没有变成另外一种语言

.

作为

C++

语言的创建者

,Bjarne

淋漓尽致地展示了他独到而深刻的见解

.

除了广受赞誉的语言特性外

,Bjarne

没有回避那些引起争议的甚至被拒绝的

C++

特性

,

他一一给出了逻辑严密

,

令人信服的解释

.

内容涵盖

C++

的史前时代

,

带类的

C,C++

的设计规则

,

标准化

,



,

内存管理

,

多重继承

,

模板等

,

对包括异常机制

,

运行时类型信息和名字空间在内的重要的新特性都分别进行了深入探讨

.

每一名

C++

程序员都应该可以从

Bjarne

的阐释中加深对手中这门 语言的认识

.

这本书知识浓缩

,

信息量极大

,

请不要错过

Bjarne

每一句看似漫不经意的话

.

—————————————————————-


9.Accelerated C++: Practical Programming by Example


Author: Andrew Koenig, Barbara E.Moo

Publisher: Addison-Wesley Professional

Published: January 15, 2000

Amazon Reviews: Amazon.com

Book Info:

和市面上大多数

C++

教程不同

,

本书不是从

“C++

中的

C”

开始讲解

,

而是始于地道的

C++

特性

.

从一开始就使用标准库来写程序

,

随着讲述的逐渐深入

,

又 一一解释这些标准库组件所依赖的基础概念

.

另外

,

和其他

C++

教材不同的是

,

这本书以实例拉动语言和标准库的讲解

,

对后两者的讲解是为了给实例程序提供支 持

,

而不是像绝大多数

C++

教材那样

,

例子只是用作演示语言特性和标准库用法的辅助工具

.


作者在

C++

领域的编程实践

,

教育培训以及技术写作方面都是世界一流水准

.

我喜欢这种大量使用标准库和

C++

语言原生特性的清新的写作风格

.

在这本教 材面前

,

几乎迄今为止的所有

C++

教材都黯然失色或显得过时

.

尽管这本教材也许对于国内的高校教育来说有些前卫

,

不过我仍然极力向我的同行们推荐

.

顺带一 提

,



Bjarne

和我最近的一封通信里

,

他这样评价本书

:

对于有经验的程序员学习

C++

而言

,

这本书可能是世界上最好的一本

.

—————————————————————-


10.C++ Gotchas: Avoiding Common Problems in Coding and Design


Author: Stephen C.Dewhurst

Publisher: Addison-Wesley Professional; 1st edition (November 26, 2002)

Amazon Reviews: Amazon.com

Book Info: Stephen

的理论素养和实践经验注定这是一本值得一读的好书

.Stephen

曾经是贝尔实验室中第一批

C++

使用者

.

他已经使用

C++

成功解决了包括 编译器

,

证券交易

,

电子商务以及嵌入式系统等领域中的问题

.

本书汇集了作者来自开发一线的

99

条编程真知灼见

,

洞悉它们

,

你可以避免几乎所有常见的

C++

设计和编程问题

.


我甚至认为

,

对于

C++

编程菜鸟而言

,

阅读这本书会比阅读

Scott



Herb

的书更能轻松而立竿见影地获得更大的提高

.

我个人很喜欢这本书的写作风 格

—-Stephen

的许多观点看似极端却无可辩驳

.

当然了

,

这种自信

(

以及冷幽默

)

来自于作者深厚的技术素养

,

而非自大的偏执

.

———————————————————————————-


11.C++ Primer 3rd


Author: Stanley B.Lippman

Amazon Reviews: Amazon.com

Book Info:

这本书的名字多少有点让人误解

.

尽管作者声称这本书是为

C++

新手而写

,

但无论是它的厚度还是讲解的深度都暴露了似乎并非如此

.

也许说它是一本



从入门到 精通





C++

教程会更合适一些

.

我个人认为它并不适合完全不懂

C++

的初学者

—-

在阅读这本书之前

,

你至少应该先有那么一点

C



C++

的背景知识

,

或者至少要具有一些其他语言的编程经验

.


尽管这本书省略了一些高级

C++

特性的讨论

,

但仍然可以称得上是迄今为止最全面的

C++

学习教程

.

事实上

,

如果一名

C++

初学者能够扎扎实实地读完本 书并对照

< <C++ Primer Answer Book>>

完成全部习题的话

,

他的水平肯定可以进入职业

C++

程序员的行列

.

我个人认为

,

即使你已经拥有了

TCPL,

这本书依然有拥有的价 值

,

因为在许多方面它比

TCPL

来得更详细

,

更易懂

.

—————————————————————-


12.Essential C++


Author: Stanley B.Lippman

Amazon Reviews: Amazon.com

Book Info:

可以不太严格地认为这本书是

< <C++ Primer>>

的精简版

.

本书一一讲述了

C++

中最具代表性的主题

,

包括过程式编程

,

泛型编程

,

基于对象编程

,

面向对象编程

,

模板编程以及 异常处理等

.Stanley

将门槛调低到



具有其他语言程序设计经验





C++

新手所能接受的最基本的层次

,

使他们能够迅速开始使用

C++

编程而又免于阅 读

< <C++ Primer>>

那样的大部头

.

它以实例引导学习

,

力图使读者在最短的时间内把握

C++

的精粹

.


也许换一个人来概述

C++

编程范型

(paradigm)

的方方面面需要好几百页才能说清楚

,

但这本小书不可思议地做到了这一点

.

我个人非常喜欢这种满 是技术

,

简明扼要并且



有话好好说



的书

.

这本书同样具有一个明显的风格

:

所有程序例子全部采用标准库组件

,

让人耳目一新

.

—————————————————————-


13.Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)


More Effective C++: 35 New Ways to Improve Your Programs and Designs

Author: Scott Meyers

Publisher:Prentice Hall

Amazon Reviews: Amazon.com

Amazon.com

Book Info:

先养成良好的

C++

设计习惯

,

这是

Scott Meyers



< <Effective C++>>



< <More Effective C++>>

带给我们的无穷好处

,

这两本书是真正的经典

,

作者对

C++

的纯熟

,

使得语言的风格读起来简直是如饴甘甜

,

就像他站在你对面讲课

.

如 果你已经深刻地理解了

< <Effective C++>>



< <More Effective C++>>,

那你可以发现

,

你在众人中已经是鸡群之鹤

.


如果说

< <Effective C++>>

主要讨论

C++

中一些相对基础的概念和技巧的话

,

那么

< <More Effective C++>>

则着重探讨了包括异常处理在内的一系列高级技术

.

与前者相比

,

后者具有两大主要区别

:

其一

,

它包含很多时新的标准

C++

的内容

;

第 二

,

它讨论的主题倾向于



战略化



而非



战术化

“,

并且讨论得更深入

,

更彻底

.

尤其是对虚析构函数

,

智能指针

,

引用计数以及代理类

(proxy classe)

等技术和模式论述的深入程度

,

让人很难想象是出现于这样的一本小书之中

.

—————————————————————-


14.Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions


More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions

Author: Herb Sutter

Book Info:

你自认为是一名

C++

语言专家吗

?

读一读

ISO C++

标准委员会秘书长的这两本书再回答

.

在这两本书中

,Herb

采用了



问答



的方式指导你学习

C++

语言特性

.

对于每一个专题

,Herb

首先合理地设 想出你的疑问和困惑

,

接着又猜测出你十有八九是错误的解答

,

然后给你以指点并提出最佳解决方案

,

最后还归纳出解决类似问题的普适性原则

.


这两本书是典型的深究

C++

语言细节的著作

,

很薄

,

但内容密集

,

远远超过

Scott

的那两本书

,

读起来很费脑筋

—-

我个人认为它们要比

Scott

的书难懂得多

.

若要研习这薄薄的两本书所包含的知识

,

至少需要花费数月的时间

!(



Scott

的荐序中

,

他坦陈不止一次陷入

GotW

问题的陷阱

,

你应该知 道这意味着什么

)

对于语言细节的深究有什么好处呢

?

尽管在大多数情况下

,

我们不必关心

C++

代码幕后的动作

,

然而当我们不得不关心时

,

这两本书可以为我们 提供很好的线索

,

因为它们揭示了

C++

语言中微妙而又至关重要的东西

.

—————————————————————-

15.

Modern C++ Design: Generic Programming and Design Patterns Applied


Author: Andrei Alexandrescu

Publisher: Prentice Hall

Amazon Reviews: Amazon.com

Book Info:

你自认为是

C++

模板编程高手吗

?

请看过这本书再回答

.

这是一本出自天才之手令人敬畏的杰作

.

泛型模式

,

无限延伸你的视野

,

足以挑战任何一名

C++

程序员的思维极限

.


这本书共分为两大部分

,

第一部分讨论了

Loki

程序库采用的基础技术以及一些高级语言特性

,

包括基于策略的类设计

,

模板局部特化

,

编译期断 言

,Typelist

以及小型对象分配技术等

.

第二部分则着重介绍了

Loki

中的重要组件和泛型模式技术

,

包括泛化仿函数

(Generalization Functor),

单件

(Singleton),

智能指针

,

对象工厂

(Object Factory),

抽象工厂

(Abstract Factory),

访问者

(Visitor)

以及多方法

(Multimethods)



.

每一种技术都让人大开眼界

,

叹为观止

.

———————————————————————————-


16.C++ Templates: The Complete Guide


Author: David Vandevoorde, Nicolai M.Josuttis

Amazon Reviews: Amazon.com

Book Info:

有一种老套的赞美一本书的手法

,

大致是



没有看过这本书

,

你就怎么怎么地

“,

这里面往往夸张的成分居多

.

不过

,

倘若说



没有看过

< <C++ Templates: The Complete Guide>>,

你就不可能精通

C++

模板编程

“,

那么这个论断对于世界上绝大多数

C++

程序员来说是成立的

.

这本书填补了

C++

模板书籍领 域由来已久的空白

.

此前

,

上有

< <Modern C++ Design>>

这样的专注于模板高级编程技术和泛型模式的著作

,

下有

< <The C++ Standard Library>>

这样的针对特定模板框架和组件的使用指南

.

然而

,

假如对模板机制缺乏深入的理解

,

你就很难



上下



自如

.

鉴于此

,

我向每一 位渴望透彻理解

C++

模板技术的朋友推荐这本书

.

—————————————————————-


17.The C++ Standard Library: A Tutorial and Reference


Author: Nicolai M. Josuttis

Publisher: Addison-Wesley Professional; 1st edition (August 12, 1999)

Amazon Reviews:








]

Book Info:


这是一本百科全书式的

C++

标准库著作

,

是一本需要一再查阅的参考大全

.

它在完备性

,

细致性以及精确性方面都是无与伦比的

.

本书详细介绍了每一标准库组件 的规格和用法

,

内容涵盖包括流和本地化在内的整个标准库而不仅仅是

STL.

正如本书副标题所示

,

它首先适合作为教程阅读

,

尔后又可用作参考手册

.


浅显易懂的写作风格使得这本书非常易读

.

如果你希望学习标准库的用法并尽可能地发挥其潜能

,

那你必须拥有这本书

.

正如网络上所言

,

这本书不仅仅应该摆在你的书橱中

,

更应该放到你的电脑桌上

.

我向每一位职业

C++

程序员强烈推荐

.

—————————————————————-


18.Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)


Author: Scott Meyers

Publisher: Addison-Wesley Professional; 2 edition (September 2, 1997)

Amazon Reviews: Amazon.com

Book Info:

Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library

Author: Scott Meyers

Publisher: Addison-Wesley Professional; 1st edition (June 6, 2001)

Amazon Reviews: Amazon.com

Book Info:

读完

Scott



< <Effective C++>>



< <More Effective C++>>

的中译本之后

,

我一直期待这本书的中文版

.

我从潘爱民先生的个人主页上了解到

,

他和他的合作伙伴似乎早已完成了这本书的翻译工作

,

可惜至今市面上仍不得见

.

幸运的是

,

我们可以看到它的原版

.

本书是使用

STL

的程序员必读之作

.

在这本书中

,Scott

向我们讲述

STL

容器和算法的工作机制以及如何以最佳方式使用它们

.



Scott

的其他作品一 样

,

这本书的写作风格清晰

,

精确

,

具有极佳的可读性

.

看过这本书以后

,

我想你也许会和我以及其他

C++

程序员一样产生这样的想法

:Scott

什么时候会写 出一本

“More Effective STL”





推荐计算机科学类的经典书籍(二)



2009




10



01

日 星期四

23:08


19.Thinking in C++, Volume 1: Introduction to Standard C++ (2nd Edition)



Author: Bruce Eckel

Publisher: Prentice Hall; 2nd edition (April 15, 2000)

Amazon Reviews: Amazon.com

Book Info: < <Thinking in C++>>


的第

1

版于

1996

年荣获



软件研发



杂志评选的图书震撼大奖

.

最新推出的第

2

版对内容进行了大幅改写和调整

,

以反映

C++

标准化 带来的影响以及近几年面向对象领域最新研究和实践成果

.”

输入输入流

“,”

多重继承

“,”

异常处理







运行时类型识别



等高级主题连同

C++

标准化以后 增加的一些内容则被放入第二卷中

.Bruce

是一名经验丰富的

C++

讲师和顾问

,

其培训和写作经验都是世界一流水准

,

他的作品比那些



玩票



的技术人员写 的东西更能吸引读者

.

事实上

,

在同类图书中

,

对于大多数读者而言

,

这本书的可读性要超过

TCPL



< <C++ Primer>>.

Thinking in C++, Volume 2: Practical Programming (Second Edition)

Author: Bruce Eckel

Publisher: Prentice Hall; 2nd edition (November 1, 2003)

Amazon Reviews: Amazon.com

Book Info:

—————————————————————-


20. Ruminations on C++: A Decade of Programming Insight and Experience


Author: Andrew Koenig, Barbara E. Moo, Barbara E. (Editor) Moo

Publisher: Addison-Wesley Professional; 1st edition (August 7, 1996)

Amazon Reviews: Amazon.com

Book Info: Andrew

是世界上屈指可数的

C++

专家

.

这是一本关于

C++

编程思想和程序设计技术而非语言细节的著作

.

如果你已经具有一定的基础

,

这本书将教你在进 行

C++

编程时应该怎样思考

,

应该如何表达解决方案

.

整本书技术表达透彻

,

文字通俗易懂

.Bjarne

这样评价这本书

:

本书遍布

“C++

是什么

,C++

能 够做什么



的真知灼见

.

—————————————————————-


21.Design Patterns: Elements of Reusable Object-Oriented software


Author: Erich Gamma

Publisher: Addison Wesley Longman; (1998

Amazon Reviews: Amazon.com

Book Info:

设计可复用的面向对象的软件

,

你需要掌握设计模式

.

本书并非专为

C++

程序员而写

,

但它采用了

C++(

以及

Smalltalk)

作为主要示例语言

,C++

程序员尤其易于从中受益

.

四位作者都是国际公认的面向对象软件领域专家

,

他们将面向对象软件的设计经验作为设计模式详细记录下来

.

这本书影响是如此深远

,

以至于四位作者以及本书都被昵称为

GoF(Gang of Four).

本书学院气息浓厚

,

行文风格严谨简洁

,

虽然它不如某些讲解模式的书籍易读

,

但真正要精准地理解设计模式

,

本书是终极权威

.

学习设计模式

,

这本 书需要一而再

,

再而三的咀嚼

.

顺带一句

:

请将设计模式化作开拓思维的钥匙

,

切莫成为封闭思维的枷锁

.

—————————————————————-


22.Efficient C++: Performance Programming Techniques


Author: Dov Bulka, David Mayhew

Publisher: Prentice Hall

Amazon Reviews: Amazon.com

Book Info:

这本超薄小书聚焦于高性能

C++

应用程序开发

.

两位作者都是

IBM

软件专家

,

都工作于对性能要求极高的系统构建领域

,

本书是他们的经验之谈

.

也有人不喜欢 这本书

,

因为它花了不少的篇幅讲述和

C++

无关的东西

,

我却恰恰因为这一点而对这本书产生好感

,

正是这些东西让我开阔了眼界

.

———————————————————————————-


23.Inside the C++ Object Model


Author: Stanley B.Lippman

Publisher: Addison-Wesley Pub Co

Published: May 3, 1996

Amazon Reviews: Amazon.com

Book Info:

从编译器的角度观察

C++

可以使你知其然并知其所以然

.

本书探讨了大量的

C++

面向对象程序设计的底层运作机制

,

包括构造函数

,

函数

,

临时对象

,

继承

,

虚 拟

,

模板的实例化

,

异常处理

,

运行期类型识别等

,

另外还介绍了一些在实现

C++

对象模型过程中做出的权衡折衷

.

喜欢刨根问底的

C++

程序员可以从中了解了 无数的编译器解释源代码的细节

,

以及记忆体分配的细节

..

———————————————————————————-


24.The Art of Assembly Language


Author: Randall Hyde

Amazon Reviews: Amazon.com

Book Info:

本书以

X86

系列微机为背景

,

从简单的

Hello

程序开始

,

系统而详细地阐述了

X86

微机汇编语言编程的各种基础知识和编程技巧

,

内容涉及到数据表示

,

存 储器管理

,

各种数据类型

,

过程

,

与汇编语言相关的体系结构

,

控制结构

,

文件

,

宏指令

,

位处理指令

,

字符串指令

,MMX

指令

,

类和对象

,

以及混合语言编程 等

,

尤其是在高级汇编语言

(HLA)

方面

,

该书给予了细致深入的讲解

.

对于有意学习

X86

汇编语言编程的程序员来说

,

这是一本难得的好书

.


本书的作者

Randall Hyde

在大学中教授汇编语言十多年

,

并且开发了好几个商用软件

,

具有丰富的汇编语言开发经验

.

该书的英文电子版受到了成千上万的网站和高级程序员的高度 评价

,

已经成为了高级汇编语言编程方面的一本经典之作

.

虽然该书的出版时间不长

,

但在

Amazon

上为该书作出评价的人很多

,

而且几乎所有的人都给予

5

星 的评价

,

可见其内容之好

.

可以相信

,

随着时间的推移

,

它在程序员中的影响会越来越大

.

—————————————————————-


25.The Design and Implementation of the 4.4BSD Operating System


Auther:

Marshall Kirk McKusick, Consultant

Keith Bostic, Berkeley Software Design, Inc.

Michael J.Karels, Berkeley Software Design, Inc.

John S.Quarterman, Texas Internet Consulting

Publisher: Addison-Wesley Publishing Company

Published: 04/30/1996

Book Info:

是第一本完整描述伯克利最新版本

4.4BSD

设计和实现的权威性著作

.

书中介绍了

4.4BSD

的内部结构和实现

4.4BSD

的系统功能中所用的概念

,

数据 结构和算法

.

书中着重对

4.4BSD



AT&T System V UNIX

版本的不同处作了较详细的描述

,

并对其设计思想及背景作了清晰的阐述

.

该书对研究

,

开发和使用

UNIX

系统

,

特别是

4.4BSD UNIX

实现中的一些新技术

,

新特点

.

有很大的参考价值

.

—————————————————————-


26.John Lions:Lions’Commentary on UNIX 6th Edition with Source Code


Author: John Lions

Amazon Reviews: Amazon.com

Book Info:



20

世纪

70

年代和

80

年代这一时期

,

莱昂的几册

< <

源代码分析

>>,

曾是人们争相传看的

UNIX

系统的



地下出版物

“.

我们今天来审视这一著作

,

尽管其中的代码已属过时

,

但其注释者所 作的大部分注释

,

依然完美如初

.

要想学习操作系统原理

,

就必须阅读和理解源代码

.

莱昂的工作

,

使我们中间的大多数人都能达到这一步

.

Book Reviews:


本书中的材料确定是有点过时了

,

其内容不包括图形

,

网络以及

1975

年后出现的新事物

.

即使在

1979

年的编译中也不再使用的线性搜索

,

基本数据结构 和

C

代码还保留在本书的源代码中

,

而该代码面向的计算机非常简单

,

只比存储器稍稍多一些

.

从中你会发现有很多粗糙之处

.

但是在代码中你也可以观察到其基本 结构

,

该结构沿用了很长时间

,

而且能够包容在计算环境中发生的巨大变化

.

在莱昂的分析中

,

你可以觉察到新鲜的

,

经常提出问题的立场

,

其中的很多词语和思想 都很适宜于教育和学习

.

莱昂非常清楚地赞赏他阅读的

UNIX

源代码

,

但又立即指出其不足之处

.

他帮助他的学生理解蕴含在源代码中的很多思想和主题

,

也坦率 地说明他对该代码某些部分感到的困惑之处

.

此处重印的文献已经教育了一代人

,

它是计算机界中复印数量最多的一本书稿

.

将此公开记录在案是件大好事

.

—-

丹尼斯

.M .

里奇



最后我还想提及的是

:

现在

,

得到最广泛传播的一份地下计算机科学文献已经可以自由地使用了

.

我对

1977

年中的那一天仍然是记忆犹新

,

那时我接到邮寄 来的此书的第一份草稿

,

开始时我对此书并无很多期望

,

但是最后却是逐字逐句进行了仔细阅读

.20

年之后

,

此书依旧是对一个实际操作系统工作的最好分析说 明

.

—-



?

汤姆森


(

汤姆森和里奇因为开发和实现

UNIX

操作系统而共同获得

1983



ACM

美国计算机协会图灵奖

).

—————————————————————-


27.Operating Systems: Design and Implementation (Second Edition)


Author: Andrew S.Tanenbaum, Albert S.Woodhull

Publisher: Prentice Hall; 2nd edition (January 15, 1997)

Amazon Reviews: Amazon.com

Book Info:

本书是一本理论结合实践的杰出教材

.

作者不仅介绍了所有基本原理

,



:

进程

,

进程间通信

,

输入

/

输出

,

虚拟存储

,

文件系统及系统安全

,

也介绍了线程概念

,

同时又详尽地讨论了

MINIX

系统

(

一种

UNIX

兼容系统

),

使学生不仅能学到原理

,

还能 通过使用

MINIX

来了解如何将这些原理应用到真实的操作系统中

.

作者更新了所有原理性材料以反映该领域的新进展

.

基于

POSIX



MINIX

系统经修订 后可运行在基于奔腾

(Pentium)

的计算机上

.MINIX

代码可用于

Ethernet



TCP/IP

联网环境

.

每本书均附光盘

,

内含

MINIX

全部源 码和可运行各种计算机上的两个模拟程序

.

每章后均附思考题

.

—————————————————————-


28.Modern Operating Systems (2nd Edition)


Author: Andrew Tanenbaum

Publisher: Prentice Hall

Amazon Reviews: Amazon.com

Book Info:

对于软件开发专家以及计算机专业的学生来说

, < <

现代操作系统

>>

给出了操作系统设计一个概念上的全面见解

,

包括

Unix/Linux



Windows 2000

的详细个案研究

.

本书共分两部分

,

第一部分详尽讲述了传统操作系统知识

,

包括进程

,

存储器管理

,

文件系统

,I/O

设备管理

,

死锁等内容

;

第二部分 主要介绍了分布式操作系统

,

包括层次协议

,

远程过程调用

,

互斥操作

,

分布式文件系统等专题

.

为加深概念的理解

,

本书还详细介绍了四个操作系统

,

包括两个传 统的系统

UNIX



MS-DOS;

两个分布式系统

Amoeba



Mach.

此外还简要介绍了

NFS,AFS,ISIS

等其他几个系统

.

本书体系完整

,

内容 丰富

,

叙述清晰

,

是大学计算机及相关专业学生不可多得的教科书

,

对于从事计算机管理

,

开发

,

系统分析等职业的专业人员也是优秀的参考书

.

—————————————————————-


29.Operating System Concepts


Author: Abraham Silberschatz, Greg Gagne, Peter Baer Galvin

Amazon Reviews: Amazon.com

Book Info:

本书是计算机类专业操作系统课程的一本经典教材

,

自第一版问世以来

,

经历了近

20

年的锤炼

,

被认为是该课程教材的一本



圣经

“.

它对操作系统的概念和基本 原理给出了清晰的阐述

.

本书所涉及的基本概念和算法均基于当前商用操作系统

,

并在非特定操作系统的通用环境中展开讲解

.

书中介绍了大量与流行操作系统相关 的实现技术

,

包括

Solaris2,Linux,Windows NT,Windows 2000,OS/2



Apple Macintosh

操作系统

.

此版包括了线程

,Windows 2000

的新章节

,

并新增了客户

/

服务器模型和网络文件系统

,

嵌入式操作系统

,

实时操作系统

,

分布式操作系统等

.

—————————————————————-


30.Running MS-DOS


Author: Van Wolverton

Published: 18 November 1993

Book Info: MS-DOS

上的清晰工作

!


经过

10

年无数次竞争

, < <Running MS-DOS>>

仍是被其它

MS-DOS

奉为标准的书

.Van Wolverton

的实际的写作风格

,

上百张屏幕演示

,

使得

< <Running MS-DOS>>

成为任何时候的

DOS

指南畅销书

.

再没有哪个计算机书从读者和评论家那里获得过这么多的赞扬

.


这本新的

,10

周年纪念版本

,

包括关于

MS-DOS 6.2

最新版本的重要的信息

.

如果您仅仅只是买了一台

PC



,

或者只是升级到了一个新版本

, < <Running MS-DOS>>

应当成为您的第一个信息源

. < <Running MS-DOS>>

实际上是由

3

本书合成的

,

包括

:

MS-DOS

介绍

,

以及如何同您的计算机硬件相协调



一个关于了解和使用

MS-DOS

的完整制导



一个命令手册

,

里面有定义

,

例子和表格

,

帮您快速寻找信息

!

—————————————————————-


31.Advanced Programming in the UNIX? Environment


Author: Richard W.Stevens, Stephen A.Rago

Publisher: Addison-Wesley Professional

Amazon Reviews: Amazon.com

Book Info:

与大多数其他操作系统类似

,Unix

对运行其上的程序提供了大量服务

,

此外

,

本书与其他

Unix

编程书籍不同的是

,

本书除了讲述

Unix

系统的编程接口

—-

即系统调用接口和由标准

C

函数库提供的大量函数之外

,

还通过许多例子和基本原理对

Unix

编程环境做了更深入的解释和剖析

,

如怎样创建数据库

,

页 面描述语言的打印机驱动程序

,

现代拨号程序以及代理进程

,

处理机间通信

,

伪终端程序等

.

本书作者是

Unix

研究领域的 专家

,

而本书更被誉为是该领域的圣经宝典

,

相信每一位读者都会在学习本书的过程中体会到它的价值所在

.

—————————————————————-


32.Unix Network Programming

Unix Network Programming, Volume.1: The Sockets Networking API, Third Edition

Author: W.Richard Stevens, Bill Fenner, Andrew M.Rudoff, Richard W.Stevens

Publisher: Addison-Wesley Professional

Amazon Reviews: Amazon.com

Book Info:

这是一本利用应用编程接口

(API)

编写法对计算机网络进行通信的网络编程的教程

.

所用的

API

有两类

:

基于

BerkeleyUNIX

操作系统的

“Berkeley”

套接字和基于

AT&T

开发的

X Open

传输接口

XTI.

本书分四大部分

:Ⅰ.

引论和

TCP/IP;Ⅱ.

基本套接字

(Sockets);Ⅲ.

高级套接字

;Ⅳ.XTI X/Open

传输接口

.

四个附录

:A.IPv4,IPv6,ICMPv4



ICMPv6;B.

虚拟网络

;C.

调试技术

;D.

一些关键源代码

.

全书内容全 面

,

实用性强

,

是一本极好的参考书

.

UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition)

Author: W.Richard Stevens

Publisher: Addison-Wesley Professional

Amazon Reviews: Amazon.com

Book Info:

一种良好的进程间通信

(IPC)

形式是复杂精致的

UNIX

程序性能之关键

.

本书全面深入地介绍了各种进程间通信形式

,

包括消息传递

,

同步

,

共享内存及远程 调用

(RPC).

作者从介绍

IPC

的基础及其所要解决的问题开始

,

逐步引导读者学习如何使

System V IPC

和新的

Posix

标准两者都达到极至

.

书中

Pthread

的内容有较大的扩充

,

所附的许多例子反映多个线程而不是多个进程

.

读者通过本书将能掌握各 种现行的

IPC

技术

,

其中有

:

管道和

FIFO;Posix



System V

消息队列

;

互斥锁和条件变量

;

读写锁

;

记录上锁

;Posix



System V

信号灯

;Posix



System V

共享内存

;Solaris

门和

Sun RPC;IPC

技术的性能测量

.

本书内容详尽且具有权威性

,

几乎每章都有精选的习题

,

是计算机和网络专业高年级本科生和研究生的首选教材

,

本书也可作为网 络研究和开发人员的自学教材和参考书

.

—————————————————————-


33.TCP/IP Illustrated

Web site:





http://www.kohala.com/start/





TCP/IP Illustrated,Volume 1:The Protocols

Author: W.Richard Stevens

Publisher: Addison-Wesley

Amazon Reviews: Amazon.com

Book Info: < <TCP/IP


详解

,



1:

协议

>>

是一本完整而详细的

TCP/IP

协议指南

.

描述了属于每一层的各个协议以及它们如何在不同操作系统 中运行

.

作者用

Lawrence Berkeley

实验室的

tcpdump

程序来捕获不同操作系统和

TCP/IP

实现之间传输的不同分组

.



tcpdump

输出的研究可以帮助理解不同协议 如何工作

.

本书适合作为计算机专业学生学习网络的教材和教师参考书

.

也适用于研究网络的技术人员

.

TCP/IP Illustrated,Volume 2:The Implementation

Author: Gary R.Wright, W.Richard Stevens

Publisher: Addison-Wesley

Amazon Reviews: Amazon.com

Book Info:

本书完整而详细地介绍了

TCP/IP

协议是如何实现的

.

书中给出了约

500

个图例

,15,000

行实际操作的

C

代码

,

采用举例教学的方法帮助你掌握

TCP /IP

实现

.

本书不仅说明了插口

API

和协议族的关系以及主机实现与路由器实现的差别

.

还介绍了

4.4BSD-Lite

版的新的特点

,

如多播

,

长肥管道支 持

,

窗口缩放

,

时间戳选项以及其他主题等等

.

读者阅读本书时

,

应当具备卷

1

中阐述的关于

TCP/IP

的基本知识

.

本书适用于希望理解

TCP/TP

协议如何 实现的人

,

包括编写网络应用程序的程序员以及利用

TCP/IP

维护计算机网络的系统管理员

.

TCP/IP Illstrated,Volume 3:TCP for Transactions,HTTP,NNTP,and the UNIX Domain Protocols

Author: W.Richard Stevens

Publisher: Addison-Wesley

Amazon Reviews: Amazon.com

Book Info:

本书是

< <TCP/IP

详解系列

>>

的延续

.

主要内容包括

:TCP

事务协议

,



T/TCP,

这是对

TCP

的扩展

,

使客户



服务器事务更快

,

更高 效和更可靠

;TCP/IP

应用

,

主要是

HTTP



NNTP;UNIX

域协议

,

这些协议提供了进程之间通信的一种手段

.

当客户与服务器进程在同一台主机上 时

,UNIX

域协议通常要比

TCP/IP

快一倍

.

本书同样采用了大量的实例和实现细节

,

并参考引用了卷

2

中的大量源程序

.

本书适用于希望理解

TCP/IP

如何工作的人

,

包括编写网络应用程序的程序员以及利用

TCP/IP

维护计算机网络的系统管理员

.


作者简介

:

Gary R.Wright

研究

TCP/IP

多年

.

他是

Connix

公司的董事长

,

这个公司的基地在康涅狄格州

,

它提供

Internet

接入和咨询服务

.W.Richard Stevens(1951-1999)

是一位非常受人尊敬的专家

,

除了

< <TCP/IP

详解

>>

三卷本外

,

他还有其他两部最为畅销的作品

; < <UNIX

环境高级编程

>>



< <UNIX

网络编程

>>(

两卷本

).


34.Routing TCP/IP

CCIE Professional Development:Routing TCP/IP Volume 1

Author: Jeff Doyle

Publisher: Cisco Press; 1st edition (July 1, 1998)

Amazon Reviews: Amazon.com

Book Info:

本书是第一本详细而又完整地介绍互联网络内部网关路由选择协议

(IGRP)

的专业书籍

,

堪称有关

IGRP

方面不可多得的经典之作

.

本书共分三个部分

.

第一 部分主要介绍了网络和路由选择的基本知识

,



TCP/IP

和静态

,

动态路由选择技术作了一个整体的回顾

.

第二部分是本书的精华

,

这一部分详细深入地讲述了 各种常用的内部网关路由选择协议

,

如静态路由

,RIP,RIPv2,IGRP,EIGRP,OSPF,ISIS



,

每一章除了对该协议的实现机制和参数详 尽阐述

,

使读者对协议的实现原理有一个清晰的理解外

,

还通过在实际网络环境中的实例

,

详细地论述了该协议在

Cisco

路由器上的配置和故障处理方法

,

使读 者获取大量解决实际问题的专业技能

.

第三部分介绍了如缺省路由

,

路由过滤等多种有效的路由控制工具

,

用来创建和管理多个

IP

路由选择协议的协调工作

.

本书 不仅适合那些需要准备通过

CCIE

考试的考生

,

而且也适合任何需要完整理解

TCP/IP

内部路由选择协议的网络设计和工程人员阅读

.

本书中对协议细节的讲 解和对网络实例的探讨相信会让读者获益匪浅

.

CCIE Professional Development Routing TCP/IP Volume 2

Author: Jeff Doyle, Jennifer DeHaven Carroll

Publisher: Cisco Press; 1st edition (April 11, 2001)

Amazon Reviews: Amazon.com

Book Info:

本书深入系统地阐述了

TCP/IP

路由技术

,

内容包括几种重要的网络协议

,

如外部网关协议

(EGP),

边界网关协议

(BGP4),

以及相应的高级

IP

路由 技术与应用

――

网络地址转换

,IP

组播路由技术

,IPv6

技术

,

路由器管理等

.

本书共分

9

个章节

,

首先介绍并讨论了主题内容的基本原理

,

接着是设计用来展 示真实网络环境中相关概念的一系列配置范例

,

最后提供给读者经实践验证过的故障排除方法以解决网络可能会出现的问题

.

重点介绍了自治系统之间的路由选择策 略以及诸如组播和

IPv6

等更具挑战性的路由选择和实施技术

.

—————————————————————-

35.Data and Computer Communications,Seventh Edition

Author: William Stallings

Amazon Reviews: Amazon.com

Book Info:

本书是著名计算机专业作家

William Stallings

的经典著作之一

,

内容涉及最基本的数据通信原理

,

各种类型的计算机网络及多种网络协议和应用

.

这一版对原有内容做了彻底的修订和重组

,

使新版对通信各专题 的阐述更全面

,

更清晰

.

同时

,

新版加强了无线通信和组网

,

吉比特以太网

,

区分服务

,MPLS




TCP/IP

实现细节等内容

.

此外

,

本书还包括词汇表

,

参考文献

,

缩写词对照表

.

每章都附有习题和建议

,

以便读者进一步阅读

.

—————————————————————-


36.Programming Pearls, 2nd Edition


Author: Jon Bentley

Publisher: Addison-Wesley Professional; 2 edition (September 27, 1999)

Amazon Reviews: Amazon.com

Book Info:

如果让程序员们列出他们最喜欢的书籍

,Jon Bentley



< <

编程珠玑

>>

通常可以位于经典之列

.

如同珍珠来自于曾经折磨牡蛎的沙粒

,

程序设计的珍珠也来自曾经折磨程序员的实际问 题

.Bentley

的珍珠建立在坚实的工程学基础上

,

在洞察力和创造力的王国中为那些恼人的问题提供了独特而巧妙的解决方案

.

通过一些精心设计的有趣而且 颇具指导意义的程序

,

本书对众多实用程序设计技巧及基本设计原则作了清晰而机智的描述

.

因此

, < <

编程珠玑

>>

得到各个层次程序员的青睐并不让人感觉意外

.


为了反映当今的程序设计方法和环境

,Bentley

在本书中彻底更新了第一版里的大多数素材

.

此外

,

他还新增加了以下三个方面的内容

:1.

测试

,

调试和计时

2.

集合表示

3.

字符中问题  对原来的所有程序都重新进行了改写

,

并生成了等量的新代码

.

您可以从本书网站




www.programmingpearls.com)




获取所有程序的

C



C++

实现

.

Book Reviews:

< <

编程珠玑

>>

第一版是我职业生涯早期阅读过的最有影响力的书籍之一

,

第一次从该书中学到的许多观点很久以后仍然使我受益匪浅

.Jon

在第二版中对素材进行了大量更新

,

这些新例子的新鲜程度给我留下了深刻的印象

.

—-Steve McConnell < <Code Complete>>

等多部畅销书作者

—————————————————————-


37.The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition


Author: Frederick P, Brooks,Jr.

Publisher: Addison-Wesley Professional; 1st edition (August 2, 1995)

Amazon Reviews: Amazon.com

Book Info: IBM

大型电脑之父

Fred Brooks

二十余年开发经验的汇集

,

远谋深虑

,

字字珠玑

.

技术之巧与人文之美的完美结合

.

本书自第一版以来

,

畅销二十余年不衰

,

是软件领域绝无仅有的必读经典

.


作者简介

:

Frederick P

曾荣获美国计算机领域最具声望的图灵奖

(A.M.Turing Award)

桂冠

.

美国计算机协会

(ACM)

称赞他



对计算机体系结构

,

操作系统和软件工程做出了里程碑式的贡献

.”

Brooks

博士是北卡罗莱纳大学

Kenan-Flagler

商学院的计算机科学教授

.

他被认为是

“IBM 360

系统之父

“,

曾担任了

360

系统的项目经理

,

以及

360

操作系统项目设计阶段的经理

.

凭借在上述项目中的杰出贡献

,Brooks

博士以及

Bob Evans



Erich Bloch



1985

年荣获了美国国家技术奖

(National Medal of Technology).Brooks

博士早期曾担任

IBM

公司

Stretch



Harvest

计算机的体系结构设计师

.

Brooks

博士创立了北卡罗莱纳大学的计算机科学系

,

并在

1964



1984

年期间担任系主任

.

他还曾任职于美国国家科技局和国防科学技术委员会

.

他目前的教学和研究方向是计算机体系结构

,

分子模型绘图和虚拟环境设计

.

—————————————————————-


38.The Pragmatic Programmer


Author: Andrew Hunt,David Thomas

Publisher: Addison Wesley

Published: November 24, 1999

Amazon Reviews: Amazon.com

Book Info:

本书直击编程阵地

,

穿过了日益增长的现代软件开发的规范和学术

,

对核心过程进行了审视

—-

该过程采取了供需结合的工作方式和令人欣喜的可维护代码

.

本书包含的内容从个人责任和职业发展到保持代码的灵活性

,

使之易于改编和重用

.


本书由各个相对独立的章节组成

,

其间不乏好玩的轶事

,

详细的实例和有趣的对话

,

描述了软件开发各个方面的最好实践和主要缺陷

.

无论你是一个新入门的编 码者

,

一个有经验的程序员

,

还是负责软件项目的经理

,

通过每日学习这些课程

,

都会在个人生产力

,

准确率和工作满意度上有快速的增长

.

你所学到的技巧和开发习惯和态度将为你在职业生涯中取得长期成功奠定基础

.

你将成为又一

Pragmatic Programmer.

—————————————————————-


39.The Art of UNIX programming


Author: Eric S. Raymond

Publisher: Addison Wesley

Published: October 2, 2003

Amazon Reviews: Amazon.com

Book Info:

荣获美国

Software Development Productivity Award

大奖作品

!


本书是作者封笔

30

年后历时

5

年创作而成

,

是一部难得的软件工程方面的佳作

.

作者首次将哲学

,

设计模式

,

工具

,

文化和传统结合在一起

,

使得

UNIX

成 为世界上最好且最具创新意义的软件

,

并展示了如何将其拓展到

Linux

和当今的开源

(open-source)

运动中

:

通过取自最主要的开源项目中的示 例

,

作者向

UNIX



Linux

编程人员展示了如何更巧妙地创建软件

,

使其更雅致

,

更灵巧

,

更具可重用性且具有更长的生命期



本书主要介绍了

Unix

系统领域中的设计和开发哲学

,

思想文化体系

,

原则与经验

,

由公认的

Unix

编程大师

,

开源运动领袖人物之一

Eric S.Raymond

倾力多年写作而成

.

包括

Unix

设计者在内的多位领域专家也为本书贡献了宝贵的内容

.

本书内容涉及社群文化

,

软件开发设计与实现

,

覆盖 面广

,

内容深邃

,

完全展现了作者极其深厚的经验积累和领域智慧

.

—————————————————————-


40.Peopleware:Productive Projects and Teams


Author: Tom DeMarco, Timothy Lister

Publisher: Dorset House Publishing Co

Published: February 28, 1999

Amazon Reviews: Amazon.com

Book Info: Tom Demarco



Tim Lister



“Peopleware:Productive Projects and Teams”

第一版于

1987

年出版

,

专门讨论了软件开发和维护的团队管理问题

,

向传统的管理方法提出了挑战

,

推崇人本管理思想

,

给予软件工人自由和信任

.



< <

人月神话

>>

一样

,

该书现在已经成为软件团队管理的经典之作

.1995



,Larry Constantine

出版了一部题为

“Constantine

论人件



的论文集

,

扩大了



人件



概念

,

把那些使用软件的人也包括进来

.1999



2



, < <

人件

>>

第二版出版

,

增补了

8

章新内容

.

这些增补的内容视角更加宽广

,

对比较大型的组织中的团队如何运作进行了探索

.

—————————————————————-


41.Computer graphics C Version 2nd ed


Author: Donald Heam, M.Pauline Baker

Publisher: Pearson US Imports & PHIPEs

Published: May 24, 1996

Amazon Reviews: Amazon.com

Book Info:

这是计算机图形学领域的一部经典之作

,

作者

Foley,van Dam

等是国际图形学界的著名学者

,

学术带头人

,

而且本书英文版自出版以来

,

一直是各国大学计算机图形学课程的主要教科书

.

本书是高等院校计算机专业本科 生

,

研究生计算机图形学课程的理想教材

,

是相关领域专业人员开展研究工作的优秀参考书

.

—————————————————————-


42.Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization


Author: Andre LaMothe

Amazon Reviews: Amazon.com

Book Info:

本书是著名游戏程序设计类书籍作者

Andre LaMothe

的畅销书

.

在书中随处可见许多有趣但又有一定难度的源程序

.

作者循循善诱地从程序设计的角度介绍了在

Windows

环境下进行游戏开发所需 的全部知识

,

包括

Win32

编程以及

DirectX

中所有主要组件

(

包括

DirectDraw,DirectSound,DirectInput




DirectMusic).

书中还用单独的章节详细讲授了

2D

图形学和光栅化技术

,

游戏算法

,

多线程编程

,

文本游戏和解析

,

人工智能

(

包括模糊逻辑

,

神经网络和遗传算法

),

物理建模

(

完全碰撞反应

,

动量传递和正反向运动学

)

及实时模拟等游戏程序开发中的关键技术

.

—————————————————————-


43.Compilers Principles, Techniques, and Tools


Author: Alfred V. Aho, Ravi Seth, Jeffrey D. Ullman

Publisher: Addison Wesley (January 1, 1986)

Amazon Reviews: Amazon.com

Book Info:

本书另外一个响亮的名字就是龙书

.

原因是这本书的封面上有条红色的龙

.

里面讲解的核心编译原理至今都没有变过

,

所以一直到今天

,

它的价值都非凡

.

这本书最 大的特点就是一开始就通过一个实际的小例子

,

把编译原理的大致内容罗列出来

,

让很多编译原理的初学者很快心里有了个底

,

也知道为什么会有这些理论

,

怎么运 用这些理论

.

而这一点是我感觉国内的教材缺乏的东西

,

所以国内的教材都不是写给愿意自学的读者

,

总之让人看了半天

,

却不知道里面的东西有什么用

.

—————————————————————-


44.Computer Systems A Programmer’s Perspective


Author: Randal E. Bryant, David R. O’Hallaron

Publisher: Prentice Hall; 1st edition (August 13, 2002)

Amazon Reviews: Amazon.com

Book Info: AMAZON

五星图书

,

最伟大计算机科学教材之一



卡耐基梅隆大学计算机学院院长

,IEEE



ACM

双院士倾力推出



超过

80

所美国和世界一流大学计算机专业选用本书为教材



本书英文版久负盛名

,

被众多专业人士称为



最伟大的计算机教材



之一

,

著名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用

,

程序员眼中的透 彻讲述计算机系统的扛鼎之作

.

作者

Randal E. Bryant

是卡耐基梅隆大学的计算机科学系主任

,ACM



IEEE

双院士

(Fellow),

其研究成果多次获得

ACM



IEEE

颁发的大奖

.

本书共分十 三章

,

分别介绍了信息的表示和处理

,

程序的机器级表示

,

处理器体系结构

,

存储器层次结构

,

静态和动态链接

,

虚拟存储器

,

系统级

I/O,

网络编程和并发编程 等精彩内容

.

其目的是解释计算机系统的所有本质概念

,

并向读者展示这些概念是如何实际地影响应用程序的正确性

,

性能和实用性

.

与其他主要针对系统构造人员 的系统类书籍不同

,

这本书是写给程序员的

,

是从程序员的角度来描述的

.

本书为软件和硬件之间搭起了一个桥梁

,

它给出了一种帮助读者分别从硬件和软件的角度 去理解一个程序及其行为的途径

,

这也填补了国内计算机系统教学中的一个空白

.

本书的最大优点是帮助读者理解概念

,

让读者很清楚地在脑海中构造一个层次型的 计算机系统

,

从最低层数据在内存中的表示

(

如我们一直陌生的浮点数表示

),

到流水线指令的构成

,

到虚拟存储器

,

到编译系统

,

到动态加载库

,

到最后的用户应 用

.

本书提供了大量的例子和练习及部分答案

.

尤其值得一提的是

,

对于每一个基本概念都有相应的笔头或程序试验

,

加深读者的理解

.

Book Reviews:


我坚信从程序员的角度来看计算机系统对教会学生计算机的内部结构非常有帮助

.

—-Kostas Daniilidis,

宾夕法尼亚大学



这本书讲述事物的方法与众不同

,

但是和我想要的课程进行方式类似

.

—-John Greiner,Rice

大学



这是一项出色的工作

,

是这一领域教学方法的一次革命

.

—-Michael Scott,

罗切斯特大学



我的大学六年



郭天祥



2009-10-01 22:42


作者:郭天祥



致阅读本书的大学生朋友



在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。



2007


年,我以全新的教学方式推出了一套讲述

51

单片机的教学视频课程

——“

十天学会单片机



,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。为此,从

2007



9

月至

2008



7

月,我用了近十个月的时间将本书写完。本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机



过来人



的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。



我的大学



写这篇文章的时候,我正处于硕士研究生毕业论文的准备阶段,眼睁睁看着我的大学生活即将画上句号,再看看身边有很多低年级的学生们一天天把时间白白荒费掉,我在心里替他们惋惜,在即将结束我的大学生活之际,我将我的大学几年的有意义的生活与大家分享,看过这篇文章后也许能让那些有梦想的同学为了实现自己的人生目标少走些弯路,大家要相信,大学校园

——

将为你提供一生最好的学习环境。



我高中毕业于新疆伊宁市三中,

2002

年考入哈尔滨工程大学信息与通信工程学院电子信息工程专业,

2006

年以创新人才免试保送哈尔滨工程大学硕士研究生,现在已经是我在学校的最后一个学期了。记得我刚入校的时候对电子知识一点也不懂,之前我比较喜欢经商,想着好好努力,将来开个公司,做做生意,所以第一志愿报了经济管理学院,结果没被经管学院录取,而被调剂到信通学院,现在想来也算是走对了。在上大学之前,我的梦想是上大学后,一定要当班长,一定要当学生会的干部。所以我从上大一就开始加入学校的学生会,非常积极地竞选班干部,后来也如了我的愿,班长也当了,学生会干部也做了不少。因为刚上大一的时候根本不知道大学里具体要学什么知识,每天就是上课,那时一节课也不敢逃,每天的生活就是去上课、吃饭、打球和踢球,然后回宿舍瞎侃,上床睡觉。周末时,找几个同学逛逛街什么的,每周都重复着同样的生活,日子过得平平谈谈,但那时也不觉得在虚度,可能还带着刚离开高中校园的那种兴奋,认为理想中的大学生活就是如此吧。



大一的一年就这样糊里湖涂过去了,接着就大二了,大二上学期除了在学生会的职位高了点外,其余和大一时也没什么区别,没有特别的事情发生过,偶尔逃逃不点名的公共课,天天照旧打篮球、踢足球。在大二下学期开学不久的某一天,我静静地的思考了很久,我想起了我曾经有过的梦想、我追求的人生、我向往的生活,想想如果再这样过完两年,我的将来会是什么样子

?

那天我觉悟了。我的专业是电子信息工程,那我必须在这方面学有所成,两年都快过去了,天天抱着课本啃,现在想想我的水平和高中时一样,我学的是电子专业,从初中就开始学电阻了,到现在都六七年了,至今我连电阻长什么样都没见过,这样下去学的算是什么电子专业

?

我想我不能再这样下去了,于是找了同宿舍的另一位同学赖世雄,我对他说:



我们一起参加学校的



五四杯



电子设计竞赛吧!



他欣然同意了,当时我俩真是对电子知识一无所知,根本不知道从哪里开始,于是我们就从电子杂志上随便找了个类似电话控制器的小作品,把杂志上原理图中所有的元件型号抄下来,然后我俩就去电子市场上买元件。第一次买电子元件,一点专业知识也没有,我们讲的好多东西卖元件的人都听不懂,闹了不少笑话,一个电阻被人家要了一毛钱,还说这东西真便宜啊!(实际上一个电阻还不到一分钱),最后买了一堆电阻、电容和三极管,加起来一共六七十元,回来就准备照着别人的原理图焊接,很显然,这种做法从一开始就已经注定结果必然是失败的。无奈之下,我们跑去找当时教我们电路基础课的付永庆教授,我对付老师说我们想学点真正的东西,但根本无从下手,能不能请付老师帮我们想想看做个什么东西?付老师是个很好的人,他当时正在构想从学校低年级学生中选出一部分爱动手、有上进心的学生作为创新型人才来培养,他看我俩有想法,就直接对我俩说:



你们俩可以到我的实验室里来,现在我正好带几个大四的学生做毕业设计,你俩先跟着他们学习学习吧!



。当时因为是付老师个人的实验室,所以电脑不够用,于是我俩就把自己的电脑搬进了实验室,从那天起,我真正踏上了电子设计这条路。付老师又给我俩介绍了一位正在做毕业设计的大四女同学,她叫黄光亚,她正在做一个两台计算机之间用激光通信的题目,我和赖世雄每天都去实验室看着黄光亚焊电路、写程序,那时看着真是一头雾水,感觉那些东西好神奇,在计算机上写上几句程序,按完回车,看见一道激光穿过眼前,然后在另一台电脑上就能看到整屏滚动的数据。大概跟着黄光亚前后忙了一个月,对黄光亚正在做的作品的硬件部分算是有了基本的了解,但计算机部分具体怎么实现的还是不明白。那时正好赶上

2004

年学校的



五四杯



电子设计竞赛,我们借黄光亚的作品申报了参赛资格。在比赛那天,我们就用仅懂些基本原理的一堆元件加两台电脑等待比赛评委的到来,当时评委们问了我们这是什么原理、信号怎么样调制、传输波特率多少等很多很多简单的专业问题。说实话,我们哪里知道啊!我那时连

RS232

电平是什么概念都不明白,评委们提的专业名词我根本就没听说过,当时也就把我们懂的东西全说了,也不知道对应评委的哪个问题。那时学校



五四杯



电子竞赛的参赛作品比较少,评委看我们才大二,而且我们的作品又是一个较完整的系统,基本没什么工作上的漏洞,为了鼓励我们,最后还给我们发了个小奖。






五四杯



结束后,赖世雄就从实验室把他的电脑搬回宿舍了,很可惜,他放弃了继续走这条路。我的电脑一直放在付老师的实验室。说到这里还要讲一点儿关于我买电脑的小插曲。大二上学期时,我的很多同学们都买了电脑,于是我也跟着买了,当时不知道买来电脑后具体要学什么东西,我的同学们买来电脑后,大部分时间在玩游戏、

QQ

聊天,有的同学可以从早上一直聊到晚上,玩游戏的同学可以从早玩到晚,我同学建议我玩



传奇



游戏,说很有意思,他帮我注册了账号,游戏里一个动画人物拿着一把大刀不停地砍野猪、野鹿什么乱七八糟的所谓怪物,他砍了几刀就把一头野猪砍死了,然后他说:



你看长经验了吧,多有意思,你来玩!



,我接过鼠标砍了三刀,我想破脑子也想不出他说的有意思是指什么,然后我说:



实在是无聊!



,那天起开始了我的游戏生涯,三刀后也结束了我的游戏生涯,我觉得网络游戏实在是没有意思。我更不喜欢聊

QQ

,可是这电脑都买了,不能一点用处都没有吧,当时那个时候,真的不知道电脑能







什么和我们专业有关的东西,那些天我每天用电脑做的最多的工作就是把文件从一个分区拷到另一个分区,把一些不用的文件删除,甚至把

C

盘下能删的文件都删了,最后导致系统无法启动还问为什么?过了几个月我发现除了复制和粘贴功能我用得非常熟练外,其他我好像还是什么也没学会。再后来就去书店买了些制作

Flash

动画和制作照片的

Photoshop

之类的书,回来后天天学那些没用的东西。现在想来真的是太可惜了,那时真是浪费了大把大把的时间。电脑真的是可以学很多很多东西的,对于我们专业来讲,学单片机需要学

C

语言,学

Keil



WAVE



IAR



ICC



MPLAB

软件的使用,学汇编语言;在用到上位机界面编程时,需要学

C++



VC++



VB

语言等;用

CPLD/FPGA/SOPC

时,需要学

VHDL



Verlog

语言,学这些语言时,可以学

Maxplus



Quartus

软件的使用;当用到仿真时,可以学

Protues



Multisim

软件的使用;设计电路板时,可以学

Protell



Altium Designer



Power PCB

软件的使用等;还可以学

DSP

用的

CCS

软件、

ARM

用的

ADS



STD

软件等,所有上面我提到的这些,全都依赖于计算机系统。在今天看来,我是全部掌握了,然而这是后来我付出巨大的代价才换来的,如果我能利用好大一大二那些大好时光的话,我相信今天的我又会是另一番模样。



接上面话题,赖世雄搬走后,付老师给了我实验室的钥匙,从那天起,实验室便成了我的另一个家。当时那个实验室只有我一个人学硬件,也只有我一个本科生,其他的硕士、博士研究生主要研究理论,所以很少有做硬件的,那时我分不清电解电容的正负极性,我拿着一个电解电容问了实验室的好几个人,结果他们也不知道,更有人说这是什么东西,我从来没见过。这件事很令我震惊,难道这就是电子专业读了四年本科,又读了几年硕士研究生的高水平大学生吗?现在大学毕业生的工作确实不好找,那不能怪别人,只是因为你确实没有别人需要你的理由。偶尔听前届的学长们说到,作为信通学院的学生,如果学会了单片机、

C

语言、

DSP

那你的前途必定是一片光明。于是我开始学习单片机,当时苦于没有硬件实验环境,身边又没有会的人请教,于是我就上网找资料,看见网上有卖单片机学习板的,那时价格都挺贵的,但我还是狠下心买了一块三百多块钱的单片机学习板,寄回来后我就开始做练习,之前也看过几遍书,可发现光看书没有任何效果,看上十遍、二十遍,感觉是学会单片机了,可当要应用到硬件系统中时,发现其实我什么也不会。后来我就边做实验边查书,这样就理解得很透彻了,就是从那时起我每天早上八点之前就到实验室了,除了选上部分课外,其他时间都泡在实验室里,一直到晚上十点多看楼的大爷用脚踹着实验室的门叫我走我才离开实验室。那时每天就摆弄单片机,没有人教我,全是我自己一个人摸索,而且当时学的是非常难懂的汇编语言。记得大一时也学过

C

语言,可我发现等要用的时候我什么也不会,根本和单片机联系不起来,就和没学一样,我只好选择汇编语言,大概一个月后,也就是快放暑假时,我做出来了自己的第一个单片机作品,一个电子钟。有人说你要是用单片机做出一个电子钟,那你基本上已经掌握单片机的

80%

了。这句话有道理,电子钟对编程的综合性要求还是相当高的。



那时,我对单片机已经有了初步的掌握,假期的时候我报名参加了

2004

年黑龙江省大学生电子设计大赛,那天起我搬进了学校的电子创新实验室,我们选的题目是无线数据通信,当时指导老师让我们用

FPGA

做,其中还要用到

VC

编程及

C++

语言,我那时还不懂什么是

FPGA

,于是我开始拼命地学这些知识,每天吃饭都在实验室。省赛不同国赛,省赛是把题目先发下来,两个月后交作品就行,其实学

FPGA/CPLD

也和学单片机一样,关键是自己动手写程序实践,不停地写程序,然后看程序运行的效果,这两个月里我把

VHDL

语言搞得很熟练,但是

VC

还差了一点。我们队一共三个人,除我之外还有路智超(做模拟电路部分)和魏旭东(上位机

VC

程序),魏旭东是我校理学院的,

VC

学得相当好,他的

VC

编程也全是自已业余学的。魏旭东编程时,我就在旁边看,他耐心地给我解释每一行每一句,等空闲时我自己再练,那段时间我对

VC

有了初步的了解。比赛结果很好,我们获得了黑龙江省一等奖,这也是我的第二次获奖,这次获奖给了我很大的鼓舞,接下来我发现必须要学单片机

C

语言编程了,汇编编程非常烦琐,一个全面的人才不能只将知识局限于某一方面。



从大三开始学校里有各种电子设计竞赛,我总是积极报名参加,为自己寻找锻炼的机会,我为此放弃了我最喜欢的篮球、足球运动,再没有逛过一次街,每天早上起床、洗脸、刷牙,然后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍一遍地重复看,每晚差不多两点睡觉,充分地把实践与理论结合在了一起,那时我才发现大学里的理论知识同样是那么重要,而原来根本没有意识到。孤立地学习理论,不把它们与要应用的领域结合在一起,就失去了学习它的意义;如果只为了参加期末考试,等考完试的第二周也许就已经忘得干干净净了,如果这样学习,那只能说我们学错了方向。如果一个人的模拟电路、数字电路和高频电子线路的基础不好,那么他可能设计不出什么好的电路, 我们在做硬件实践的同时再来看书中的理论知识,这样的结合是最好的。这种单调的生活我天天重复着大概过了一年,无数次实验失败时内心涌起的烦燥被我执着追求知识的欲望一次次抑制住;无数次胜利的经验告诉我,唯有坚持不懈、永不放弃才会取得最终的胜利。在这一年期间,我陆续参加了一些国家级及校里的竞赛,同时也获得了不少奖项。



大三下学期,我基本上在学习单片机

C

语言编程,进一步熟练

VC



C++

语言。等真正学会用

C

语言给单片机编程时,那时才将单片机用得得心应手。回想过去,学汇编语言花费了我大量的时间,假如当初有人指点我学单片机的

C

语言编程那该有多好,至少可以少走很多弯路。很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用

C

语言为单片机编程,既省时间,学起来又容易,进步速度会很快。在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。大三暑期时,我为每两年一届的



索尼杯



全国大学生电子设计竞赛做准备, 大赛时我们选择的题目是



集成运放参数测量仪



,题目是自己队员商量后选择的,我们代表队有三名成员,说实话,对于这个题目我当时心里还真没底,大家研究了两个小时,感觉不应该选这个题目,可惜题目已定,不能更换,大赛只有四天三夜的时间,第一天的早上八点知道题目,要求第四天的晚上八点交作品,所以每一分钟都是非常宝贵的,既然题目都选了不管有多大的难度都要坚持到底。计算机系的于振南主要负责写软件,他对硬件也很熟悉,完全是凭兴趣自学的,他的工作态度和吃苦精神当时给我留下了很深的印象。那四天三夜里我们没有睡过觉,尤其是于振南,他几乎是一直坐在电脑前写软件,差不多有几十个小时没有睡一分钟,他什么时候吃的饭我都没看见,最后我看他眼睛一直在流眼泪,当然不是哭了,那是看电脑屏幕看的。因为工作量非常大,要做硬件,写软件,绘制整个系统的电路图,还要写几万字的论文,都要在这四天三夜里完成。当时我们队三个人的个人能力都比较强,可能是以前大家没在一起合作过,所以到真正合作设计作品的时候还不是很默契。电路焊了一套又一套,结果都不理想。我们的作品最终在联调时失败了,每个人负责的功能能够独立实现,可联在一起就不能工作了,而评委要看的就是你的整体功能实现,不会看部分的。这次比赛我们以失败告终。以后大家如果有机会组队参加比赛要注意如下三点:



选题最关键,一定要选你们比较熟的,队里有一两个比较熟也行,但如果三个人都不会那一定要换题。



题目选定后,首先以实现基本功能为主开始做题,如果基本功能你都能做成功了,那你应该能得全国二等奖了,因为在这么短的时间里大部分队根本是什么也做不出来的,如果发挥部分再能做出一部分就可以向全国一等奖进军了,我们队失败的另一个原因就是我们直接开始做发挥部分的题目,而忽略了基本部分。



组队的安排,一定要找大家熟悉的人,最好在一起合作过,分工要明确,不要无头绪地各干各的,最后要做什么大家都不明白。



参加完这次比赛后,我承接了一个开发项目,我找了于振南合作,我设计硬件,于振南写软件,我俩很快就把项目做完了,这也算是我们用所学的专业知识淘的第一桶金吧,获得的报酬足够支付我俩两年的学费了。在学习更多电子技术知识的同时,我和于振南共同合作开发了几个项目,一点点积累着经验。



大四了,已经习惯了的生活和大三没有多大的变化,和我第一次参加



五四杯



的赖世雄同学每天都在忙着复习考研,最终也考上了他理想的学校。我不想再读书了,想着早点毕业出去工作。快十月份时,我们学院电工电子基地的王松武老师告诉我,北京某个电子公司每年在我们学校招两三个学生,要求动手能力较强的,最好参加过一些国家级的竞赛获过奖的同学,那边公司待遇很不错,王老师推荐了我,我谢过王老师准备参加该单位十月三号来学校进行的面试。我正准备面试呢,十月二号学校贴出通告,我被免试保送我校的研究生了,当时很高兴。学校有制度,学生有某方面的特长,多次获级别较高国家奖项的可以推荐免试读研究生,保送读研究生不交学费,不用考试,而且享有硕博连读的优先资格。当时值得庆幸的是,我的综合成绩平均分

70

多分,也就是刚够分数线,若再低一点点恐怕我也无缘这等好事了。我从内心感谢哈尔滨工程大学的领导、感谢哈尔滨工程大学的教育体制。



大四上学期一学期我基本上都在为

2005

年的



枭龙杯



中国空中机器人大赛备赛,这次于振南也参加了,我主要负责飞机的自动驾驶仪,另外协助于振南一起写地面站操作平台。这次比赛涉及的知识领域非常广泛,主要包括同时刻四通道无线通信(遥控器、远程无线数据传输、远程微波图像传输、

GPS

信号传输)、单片机技术、计算机控制、应用软件、图像捕捉、图像识别、惯性导航、飞行器制造等技术。这次比赛我全身心投入,在调试飞机的近六个月的时间里,差不多天天早出晚归。功夫不负有心人,我校设计的无人机实现了全程无人控制全自主的自动起飞、自动巡航、自动识别静态

/

动态目标、自动着陆动作,开辟了我国无人机全自主飞行的先河。最终我校代表队战胜清华等多所名校,获得了全国亚军。



大四的寒假,那时我对单片机的掌握已经很熟练了,想着应该用学会的知识来开发些产品了,一来可以解决生活费用上的开销,二来正好也可以圆我经商做生意的梦。想着很多曾经和我一样的单片机初学者可能会购买学习板,于是决定开发单片机学习板,

2

月份做出第一个样板,

3

月份做出第

2

版,

4

月底建立个人网站



天祥电子

” http://www.txmcu.com/

,在经过

3

个月共改进了

7

版后,最终定型

TX-1C

单片机学习板为最终产品。

4

月份中央电视台



我的太阳



摄制组来到我校特别为我拍摄了专题片



我的太阳

——

创新

360

之郭天祥



,该片以我参加

2005“

枭龙杯



中国空中机器人大赛为背景,讲述了我在哈尔滨工程大学几年的创新学习生活,

5



7

日在中央电视台教育一台播出,同时我远在新疆的家人在电视里看见了已经离开家乡几年的我,这也是我生平第一次上中央电视台的专题节目。



从大四下学期开始,我一边管理自己的网站,一边学习

DSP

(数字信号处理器),因为我清楚,在科技日新月异的今天,仅靠会一点单片机而在社会上立足是万万不行的,我必须充分利用在大学校园里的这几年时间,以最快的速度尽可能多地掌握各种电子技术知识,一旦出了校园,恐怕再也不会有太多的学习时间了。由于学校实验室里有

DSP

实验箱,这样学习起来就方便多了,一台

DSP

实验箱的价格都在七、八千甚至上万元,以个人能力购买还是很费劲的。学硬件主要就是做实验,写程序、下载程序、观察现象、认真思考、修改程序、再下载程序、再观察现象

……

如此重复,直到得到满意的现象结果,只要抓住这条思路,任何硬件都会在很短的时间内掌握。大四下学期,我的同学们都在为各自的本科毕业设计而忙碌,而我却在设计自己的

DSP

实验板,由于

DSP

实验板上使用的芯片大多为多引脚贴片封装的,所以至少要设计成

4

层的

PCB

板,那是我第一次画

4



PCB

板,用了近一个月才绘制完成,值得庆幸的是,板子做出来后完全正常,我又用了一个月将其调试完成。差不多在

4

个月的时间里,我完成了对

DSP

从认识到制板再到最后调试实验板通过的全过程。因为之前有单片机的基础,本科毕业设计对我来讲是非常容易的,在大多数同学花半年的时间去研究的时候,我从设计到完成用了不到

10

天的时间,而且在这

10

天里还帮了很多同学的忙。



转眼就到了本科毕业聚会了,大部分同学的大学生活就此画上了句号。我亲眼看着他们如何一步步地成就了自己的梦想,也亲眼看着他们如何一次次地重复着自己的生活,同时也亲眼看着他们如何一天天地堕落下去。从那天起,大家又将迎来各自的全新环境,在那里,也许有人庆幸、也许有人后悔,但无论怎样,自己的路自己选择,当然要自己走下去。



知识的海洋永无尽头,在路上的我不能停止,还没等到研究生开学,我已经为这

2

年半的时间制定了全面的计划。从假期开始,我就开始接触

ARM

(嵌入式系统)了,在我看来,如果不涉及

ARM

的操作系统,那么它的学习方法还是和单片机一样,在开始阶段,我就把它当成一块单片机来用,当然它的功能要比单片机强大得多。半年后,我和同学宋宝森还有于振南三人共同承接了一个用三星

ARM7

做主控制器的工程项目,该项目所涉及的知识也非常之广,内容涵盖单片机系统、嵌入式

ARM7



GPRS

网络、

Internet

应用、图像采集、图像处理及远程传输、

TCP/IP

协议、移动通信技术、码分多址技术、网络数据解析、模拟电路、数字电路、高频电路、射频无线数据传输、工业传感器等技术。在这个项目设计中,我发现,上面我提到的这些知识领域,没有几个是我大学专业所学到的,就算是学到了也没有几个是真正能应用到实际当中的,在高科技主导社会进步的今天,单纯掌握某一狭窄领域的知识是远远不够的,我们只有不断地学习,不断地应用,再学习,抱着这种态度才能让知识得到最大的发挥,让科技不断地进步。



2007


年初,通过学校的科技创新立项,我申报了



远程无线可控潜水器



项目,最后以全校唯一特大重点项目获得批准,学校和院里都给予了全额资金的支持,在经过我和团队成员

5

个月的努力后,我们的作品终于试水成功。该作品获

2007

年学校



五四杯



一等奖,同年获得黑龙江省



挑战杯



大学生电子设计竞赛一等奖。至我离开学校时,该项目还在由团队其他成员进一步改进完善中。



在研一阶段,我利用两个寒暑期在学校举办了为期十天的单片机培训班,我以全新的授课方式,以初学者最容易快速入门的方法为学员讲解了

51

单片机的用法,我在课堂现场带领学员做实验,每天课后学员们自己再练习写程序,经过十天的强化训练,课程结束时,几乎所有的学员都能够独立编程操作

51

单片机的各个功能了。在同年的



索尼杯



全国大学生电子设计大赛中,我担任学校指导教师,在大赛现场我看到了许多曾经在我的课堂上听课的学员的身影,而且他们最终都取得了喜人的成绩,我由衷地感到欣慰。为了让更多的单片机初学者受益,我将授课过程全程录像,然后将其免费发布到网上,自该录像在网上发布后,得到了很多学员的高度赞扬,甚至有许多国外的留学生打来电话向我致谢。



2007




9

月,我以实习生的身份到某能源股份有限公司做硕士课题,当时与我同去的还有很多其他院校的本科毕业生,他们有与我同专业的,也有自动化专业的。我与几个老员工是公司仅有的能够独立开发项目并且真正懂硬件编程的人,我们拿着高薪,而且公司还把我们当成宝贝,其他新来的大学生们在夸奖我们能力的同时也叹息自己大学里到底学了什么,从无奈的语气中我看出了他们的悔恨,然而今天的他们在现实中又有什么办法呢?每周

6

个工作日、每天

8

小时、迟到扣工资、早退扣工资、请假扣工资

……

这就是摆在他们面前不可改变的现实,每月等待那么一天的到来,而薄薄的信封里也仅仅够每个月的基本生活费。年轻的朋友们啊!同是从大学校园里走出的大学生,这就是差距,而且这只是差距的开始。实习期间,在与公司技术人员的交流中,在产品一步步地改进完善中,我的专业知识得到进一步的升华,我深刻地认识到,仅仅死学书本上的理论而不与实际硬件结合进行实践,这样的理论没有用;仅仅在校园里做的简单硬件实践如果不与工业现场应用结合,这样的实践是不成熟的。至

2008



6

月我离开公司,我为公司研发了一系列的太阳能充

/

放电控制器、太阳能路灯控制器和联通移动基站的太阳能电站充

/

放电控制器,并且得到了批量生产和应用。



大学生活是我们人生中最宝贵的经历,我们付出了四年光阴的代价,我们应该也必须为此有所收获。很多同学在大学校园里迷失了方向,不知道自己来到这里究竟是为了什么,单纯的认为毕业后找个好工作就万事大吉了,可你们是否想过,没有真正的本领如何能找到好工作?如何能为这个社会做出贡献?更现实一些,没有一份好工作如何买房成家,建立起属于你自己的幸福快乐的家呢?真本事不是靠混日子混出来的,我们身边有很多机会可以发挥自己的能力,实现自己的理想,即使这些机会不是很明显地让我们看见,我们也应该努力地去争取。偶尔的娱乐是可以的,可是成宿在网络游戏中挥舞大刀的同学们,那里可以砍出你的未来吗?适当的运动也是应该的,可整天都泡在篮球场上的同学们,你觉得你还有希望成为第二个乔丹吗?哥们义气固然重要,可三天两头为朋友两肋插刀,你的肋骨够用吗?年轻人应该有更高的追求,你要为你的将来做好准备,外面的世界很精彩,外面的世界也很残酷,你活着的每一天都应该好好珍惜!



我的大学生活即将结束,这就是我大学的六年生活,有人认为我可能失去了很多东西,但我得到的却是无价的,这样的人生经历可能有很多人惋惜,然而这样的结果必然有很多人羡慕。为了追求我的梦想,我充分利用每一天每一秒,为了实现我的目标,我在知识的海洋里吸取每一点每一滴,我感觉到的是充实。只要你有技高别人的想法,你有出人头地的愿望,你能下得了做一件事情的决心,你有能坚持下去的毅力,只要你天天都在进步,用不了多久,你会发现一个全新的你将重新站立在大家面前。希望各位学弟学妹们珍惜你们拥有的,在大学里好好努力,四年时间过得飞快,当瞬间过后发现自己和刚入校时并没有太大的变化时,那时后悔恐怕真的晚了

!