计算机丛书封面评点


从事软件开发工作,技术的发展变化令人眼花缭乱。一本好书的作用的不言而喻的,就像一个导师,能指引你走在正确的道路上。
国外最著名的计算机类图书奖项就是Jolt大奖了,我们可以看到若干年前的其他类大奖,如开发环境,工具软件等早已随着技术的进步成为昨日记忆,但绝大多数Jolt图书都还是经典,它们揭示软件开发中内涵,是不会随着时间消逝的。

以下是我认为每个软件工程师必读的软件工程类书籍:
- 编程匠艺,代码整洁之道, 代码大全
- 设计模式,敏捷开发
- DDD,分析模式
- 重构,持续交付,重构与模式,修改代码的艺术
- 面向对象,OOAD
- PEAA,EIP
- 程序员修炼之道,Joel,高效程序员习惯,梦断代码
- 解析极限编程,TDD

还有另一类计算机类图书就是所谓的实用型的,它们离理论远一些,而更加符合我们日常开发工作需求,离我们更近一些。这个群体大的多,国内外数百家专业出版社一年要把握当前技术趋势,快速而优质的推出数以万计的技术类书籍。如果说阅读经典软件工程书籍是修炼内功的话,那么阅读实用类图书就是磨练外家功夫了,也有了所谓的门派,套路一说。

国外实用性技术书出版社有很多,今天为了扣题,我只对封面有特色的,成系列的出版社做简单介绍。
1. 首先就是大名鼎鼎的Oreilly,封面的动物各有特色,像Hadoop的大象, Python的大蟒,既是项目的吉祥物,也成为经典图书。
2. 更加实用性强的就是Manning,它的in action系列的特点是找一线的开发人员,而且多数是基于Java的知名开源项目,封面是身穿奥斯曼帝国服饰的人物,极具特色。
3. 完全由开发人员编写,连出版工艺都是完全开源化的PragProg(PragmaticProgrammer),知名度从Rails,敏捷,快速互联网应用开发等方向迅速提升,其图书封面图案似乎没有太多规律,但统一的风格布局具有极强的辨识度。
4. Apress书籍封面黄色和黑色构成很容易认出,但最经典的就是水果系列,它的橙子,猕猴桃图书是每个ios开发人员的必修课。
5. Packt图书的封面也很好辨识,一个设计略显老土的样式,封面图案是一朵漂亮盛开的鲜花。Packt是被认为相对较"水"的出版社,但我觉得世界是多样的,就和我们鼓励每个开发人员参与开源项目一样,每个人都应该有最便利的渠道出版自己的文字。图书出版正在走向电子化,一个书籍的纸质印刷成本比例会越来越小,那么就给每个人小成本出版带来可能。至于销量是市场选择结果。就和开源软件数万计,最终只有少数能脱颖而出,但成就孕育了庞大的开源社区。

封面成系列图书的优点非常明显,首先是给读者以很强的视觉冲击力,相信大家在书店或者网上书城,看到整齐划一的书脊或者封面时有强烈的翻阅其中一本的冲动。其次方便宣传,便于推广,比如Oreilly经典的动物书系列,因为早期若干本高质量书籍带来的口碑,以后同样封面风格的书籍就很容易被读者接受。第三对于作者也有驱动作用,要用心写作不能拖了后腿,MartinFlowler系列的丛书,整体质量相当高,我想就是这个原因。

今年开始,我欣喜的看到国内计算机图书出版社也有了非常有内涵的丛书系列。
电工社博文视点的Jolt经典丛书,选用一样乐器[1]。里面的文字说的好:"名作堪比名曲。就不因岁月流逝而褪色来说,与这些Jolt名作相媲美者,只有那些百年响彻,震撼古今的经典名曲。...也如百听不厌的乐曲,掩卷良久方余音绕梁,真知存心。仔细想来,软件开发与古典音乐岂非有异曲同工之妙?“

再有就是博文视点的同样经典软件工程书籍丛书,但这套封面系列为名画,更有特点,网页连接[2],微博连接[3]。分为翻译版和评注版,翻译版名画为国外名画家,而评注版为国内名画家,这个思路真是有才!


1. UNIX编程艺术,梵高, 碧绿麦田与柏树Green Wheat Field with Cypress
UNIX编程艺术是著名黑客,Eric Raymond的著作,他的大教堂和集市的开源运动的经典之作,Netscape公司高层就是受到这本书的感悟,才作出产品开源的决策,从而推动的开源运动,也影响了软件和互联网行业的发展。这本书阐述了Unix系统领域中的设计和开发哲学,不可不读。

2. 程序员修炼之道:从小工到专家
翻译版,梵高,帆船
评注版,张大千,步壑看松图
这本书是程序员必读图书!就像一个大哥哥告诉从事编程工作的你,有什么需要注意的地方,熟读领悟后可以少走很多弯路。

3. 编程匠艺,
梵高, 播种者
在很多计算机书榜单中,代码大全都是第一,但我认为编程匠艺这本书基本涵盖了其内容,而没有那么大的部头,文字可读性更好,也是我前面推荐书籍的第一名。

4. 梦断代码
莫奈, 三艘渔船
这本书是真正的实践经验,教训写就的。在我们的编程道路上,真正能参与一个很价值的项目机会并不多,阅读别人的经验之谈是很好的学习机会。

5. UML精粹
莫奈,阿尔让特伊的午后 Argenteuil, Late Afternoon
UML是10年前风靡一时的技术,出现了很多工具尝试把图形变成代码,进行设计的可视化编程。这条路已经被证明是不正确的,但UML在软件设计阶段依然是最合适的描述语言。

6. Clean Code
沈周, 庐山高图
这本是RobertMartin大叔的大作,和代码大全和编程匠艺是一个套系,但最新出版,十分推荐.

7. Java编程思想
孙安, 太行秋色
Bruce的经典Java入门书籍,不用多说了。

8. Java核心技术:卷Ⅰ:基础知识
张大千, 庐山图
Java官方书籍上册,Java程序员必读。

9. 程序设计实践
张大千,长夏江寺图
这本书名字很普通,内容也平实无华,就如同少林长拳一般打基础。我们生长在一个快速迭代开发的时代,能静心打下扎实基础,似乎越来越难?

10. C++经典图书
Effective C++
翻译版,梵高, 星空
评注版,赵孟頫, 鹊华秋色图

提高C++性能的编程技术
梵高,黄房子

深度探索C++对象模型
梵高, 露天咖啡座 Interior of the Restaurant

More Exceptional C++
梵高, 鸢尾花

More Effective C++
梵高, 茅草农舍

Exceptional C++
约翰·艾佛雷特·米莱, Chill October

Essential C++
保罗·桑德比, A Moonlight Effect

Effective STL
莫奈, 峭壁

C++ Primer
李唐, 采薇图

编程语言中,C语言就像国王,而C++就是王后,王后的力量么,玩过国际象棋的都知道。

感谢博文视点,在再次印刷经典书籍同时,还给我们带来视觉上的享受。华章的国内原创IT书系列都有一个竞技项目剪影,深入理解系列以色彩,字体和版式也有很好的辨识度。图灵近年的图书质量很高,不过我没太注意到系列图书风格。希望国内出版社今后多出好的计算机丛书。

[1]: http://www.broadview.com.cn/Book/SearchResult.aspx?type=3&text=Jolt%E5%A4%A7%E5%A5%96%E7%B2%BE%E9%80%89%E4%B8%9B%E4%B9%A6
[2]: http://www.broadview.com.cn/Book/SearchResult.aspx?type=3&text=%E4%BC%A0%E4%B8%96%E7%BB%8F%E5%85%B8%E4%B9%A6%E4%B8%9B
[3]: http://www.weibo.com/1665356464/A2zG5bdPa

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 引言 本说明Unix系统的程序设计界面—系统调用界面和标准C提供的很多函数。这些对编写在Unix系统中运行的程序是非常有帮助的。 与大多数操作系统一样,Unix对程序运行提供了大量的服务—打开文件、读文件、启动一道新程序、分配存储区以及获得当前时间等。这些被称之为系统调用界面(system call interface)。另外,标准C库提供了大量C程序广泛使用的函数(格式化输入变量的值、比较两个字符串等)。 系统调用和库函数系统上由Unix程序员手册中的第2,3部分说明。本不是这些内容的重复。该手册没有给出实例,也不说明这些界面和函数设计的合理性,而这些则正是本所要弥补的。 Unix标准 在八十年代出现的大量Unix版本的基础上,八十年代后期开始制定了几个国际标准,包括:C程序设计语言的ANSI标准、IEEE POSIX标准族(还在继续制定)、X/open可移植性指南。 本也说明这些标准,但是并不只是说明这些标准本身,而是着重说明它们与广泛受到重视的一些实现之间的关系,这些实现主要是系统V版本4,以及将发布的4.4BSD。这样也就提供了一种对现实世界的说明,而这正是标准本身及描述符的文献所缺少的。 本的组织   本分成6个部分: 1. 对Unix程序设计概念和术语的概要描述(第一章),以及对各种Unix标准化工作和Unix实现的讨论(第二章)。 2. 不带缓存的I/O(第三章)、文件和目录(第四章、标准I/O库(第五章)以及系统数据文件(第六章)。 3. 进程—Unix进程的环境(第七章)、进程控制(第八章)、进程之间的关系(第九章)以及信号(第十章)。 4. 终端I/O(第十一章)、高级I/O(第十二章)以及精灵进程(第十三章) 5. IPC——进程间通信(第十四、十五章)。 6. 实例—一个数据库的函数库(第十六章)、与Postscrip打印机的通信(第十七章)、调制解调器拨号程序(第十八章)以及使用伪终端(第十九章)。 如果对C语言较熟悉并具有某些应用Unix的经验,那么对阅读本是非常有益的,但是并不要求读者具有Unix的程序设计经验。本面向的主要读者是:熟悉Unix的程序员,熟悉某个其它操作系统的程序员,他们希望了解大多数Unix系统提供的各种服务的详细情况。 本中的实例 本包含大量实例—大约10000行源代码。所有实例都用ANSL C语言编写。在阅读本时,你应当有一本你所使用的UNIX系统的Unix程序员手册,关于实施的细节等有时需参考该手册。 对于几乎每一个函数和系统调用,本都用一个小的完整的程序进行演示。这可以让我们清楚地了解它们的用法,包括参数、返回值等。有些小程序还不是以说明库函数和系统调用的复杂功能和应用技巧,所以本中也包含了一些较大的实例(第十六、十七、十八和十九章)。 所有实例的源代码文件都可经Internet用匿名ftp取到,其主机站点是ftjp.uu.net,文件名是published/books/stevens.advprog.tar.Z。在你的机器上可对这些源代码进行修改并运行它们。 用于测试实例的系统 不幸的是所有操作系统都在不断变更,Unix也不例外。下图示出了系统V和4.XBSD的最近进展情况。 4.XBSD是由加州大学贝克莱分校计算机系统研究组开发的。该研究组也发布BSD NET1和BSD NET2版,它们包含了4.XBSD系统公众可用源代码。SVRX是AT& T的系统V的简称。XPG3是X/Open可移植性指南的第三次发行本的简称。ANSI C是C程序设计语言的ANSI标准。POSIX.1是Unix类系统界面的IEEE和ISD标准。2.2和2.3节将对这些标准和版本之间的差别作更多说明。 在本中,用4.3+BSD表示BSD NET2和4.4BSD之间的Unix系统。 在本写作时,4.4BSD尚未发行,所以不能称一个系统为4.4BSD。尽管为此, 需要一个简单的名字以引用此种系统,在全中我们用4.3+BSD。 本中的大多数实例曾在4种Unix系统上运行过,它们是: 1. U.H公司(UHC)的Unix System V/386 Release4.0 Version 2.0。该系统在Intel 80386处理机上运行。 2. 加州大学贝克莱分校计算机科学系(Computer Science Division)计算机系统研究组的4.3+BSD,该系统在一台HP工作站上运行。 3. 贝克莱软件设计公司的BSD/386(是BSD Net2的导出版),该系统在一台Intel 80386处理机系统上运行。该系统几乎与我们称之为4.3+BSD的相同。 4. Sun Microsystems的Sun OS4.1.1和4.1.2(该系统与贝克莱系统有很深的渊源团系,但也包含了很多系统V的特征),这些系统在SPARC工作站SLC上运行。 本提供了与测试有关的许多时间信息,也说明了用于测试的系统实际系统。 目录 译者序 前言 第1章 UNIX基础知识 1.1 引言 1.2 登录 1.2.1 登录名 1.2.2 shell 1.3 文件和目录 1.3.1文件系统 1.3.2 文件名 1.3.3路径名 1.3.4工作目录 1.3.5起始目录 1.4输入和输出 1.4.1文件描述符 1.4.2标准输入、标准输出和标准出错 1.4.3不用缓存的I/O 1.4.4标准I/O 1.5程序和进程 1.5.1程序 1.5.2进程和进程ID 1.5.3进程控制 1.6 ANSI C 1.6.1 函数原型 1.6.2类属指针 1.6.3原始系统数据类型 1.7 出错处理 1.8 用户标识 1.8.1 用户ID 1.8.2 组ID 1.8.3 添加组ID 1.9 信号 1.10 UNIX时间值 1.11 系统调用和库函数 1.12 小结 习题 第2章 UNIX标准化及实现 2.1 引言 2.2 UNIX标准化 2.2.1 ANSI C 2.2.2 IEEE POSIX 2.2.3 X/Open XPG3 2.2.4 FIPS 2.3 UNIX实现 2.3.1 SVR4 2.3.2 4.3+BSD 2.4 标准和实现的关系 2.5 限制 2.5.1 ANSI C限制 2.5.2 POSIX限制 2.5.3 XPG3限制 2.5.4 sysconf、pathconf和 fpathconf函数 2.5.5 FIPS 151-1要求 2.5.6 限制总结 2.5.7 未确定的运行时间限制 2.6 功能测试宏 2.7 基本系统数据类型 2.8 标准之间的冲突 2.9 小结 习题 第3章 文件I/O 3.1 引言 3.2 文件描述符 3.3 open函数 3.4 creat函数 3.5 close函数 3.6 lseek函数 3.7 read函数 3.8 write函数 3.9 I/O的效率 3.10 文件共享 3.11 原子操作 3.11.1 添加至一个文件 3.11.2 创建一个文件 3.12 dup和dup2函数 3.13 fcntl函数 3.14 ioctl函数 3.15 /dev/fd 3.16 小结 习题 第4章 文件和目录 4.1 引言 4.2 stat,fstat和lstat函数 4.3 文件类型 4.4 设置-用户-ID和设置-组-ID 4.5 文件存取许可权 4.6 新文件和目录的所有权 4.7 access函数 4.8 umask函数 4.9 chmod 和fchomod函数 4.10 粘住位 4.11 chown, fchown和 lchown函数 4.12 文件长度 4.13 文件截短 4.14 文件系统 4.15 link, unlink, remove和 rename 函数 4.16 符号连接 4.17 symlink 和readlink函数 4.18 文件的时间 4.19 utime函数 4.20 mkdir和 rmdir函数 4.21 读目录 4.22 chdir, fchdir和 getcwd函数 4.23 特殊设备文件 4.24 sync和 fsync函数 4.25 文件存取许可权位小结 4.26 小结 习题 第5章 标准I/O库 5.1 引言 5.2 流和FILE对象 5.3 标准输入、标准输出和标准出错 5.4 缓存 5.5 打开流 5.6 读和写流 5.7 每次一行I/O 5.8 标准I/O的效率 5.9 二进制I/O 5.10 定位流 5.11 格式化I/O 5.12 实现细节 5.13 临时文件 5.14 标准I/O的替代软件 5.15 小结 习题 第6章 系统数据文件和信息 6.1 引言 6.2 口令文件 6.3 阴影口令 6.4 组文件 6.5 添加组ID 6.6 其他数据文件 6.7 登录会计 6.8 系统标识 6.9 时间和日期例程 6.10 小结 习题 第7章 UNIX进程的环境 7.1 引言 7.2 main 函数 7.3 进程终止 7.3.1 exit和_exit函数 7.3.2 atexit函数 7.4 命令行参数 7.5 环境表 7.6 C程序的存储空间布局 7.7 共享库 7.8 存储器分配 7.9 环境变量 7.10 setjmp 和longjmp函数 7.10.1 自动, 寄存器和易失变量 7.10.2 自动变量的潜在问题 7.11 getrlimit 和setrlimit函数 7.12 小结 习题 第8章 进程控制 8.1 引言 8.2 进程标识 8.3 fork函数 8.4 vfork 函数 8.5 exit函数 8.6 wait和waitpid函数 8.7 wait3和 wait4函数 8.8 竞态条件 8.9 exec函数 8.10 更改用户ID 和组ID 8.10.1 setreuid 和setregid函数 8.10.2 seteuid和 setegid函数 8.10.3 组ID 8.11 解释器文件 8.12 system函数 8.13 进程会计 8.14 用户标识 8.15 进程时间 8.16 小结 习题 第9章 进程关系 9.1 引言 9.2 终端登录 9.2.1 4.3+BSD终端登录 9.2.2 SVR4终端登录 9.3 网络登录 9.3.1 4.3+BSD网络登录 9.3.2 SVR4网络登录 9.4 进程组 9.5 对话期 9.6 终端控制 9.7 tcgetpgrp 和tcsetpgrp函数 9.8 作业控制 9.9 shell执行程序 9.10 孤儿进程组 9.11 4.3+BSD实现 9.12 小结 习题 第10章 信号 10.1 引言 10.2 信号的概念 10.3 signal函数 10.3.1 程序起动 10.3.2 进程创建 10.4 不可靠的信号 10.5 中断的系统调用 10.6 可再入函数 10.7 SIGCLD语义 10.8 可靠信号术语和语义 10.9 kill 和raise函数 10.10 alarm和 pause函数 10.11 信号集 10.12 sigprocmask 函数 10.13 sigpending函数 10.14 sigaction函数 10.15 sigsetjmp 和siglongjmp函数 10.16 sigsuspend函数 10.17 abort函数 10.18 system 函数 10.19 sleep函数 10.20 作业控制信号 10.21 其他特征 10.21.1 信号名字 10.21.2 SVR4信号处理程序的附加参数 10.21.3 4.3+BSD信号处理程序的附加参数 10.22 小结 习题 第11章 终端I/O 11.1 引言 11.2 综述 11.3 特殊输入字符 11.4 获得和设置终端属性 11.5 终端选择标志 11.6 stty命令 11.7 波特率函数 11.8 行控制函数 11.9 终端标识 11.10 规范方式 11.11 非规范方式 11.12 终端的窗口大小 11.13 termcap, terminfo和 curses 11.14 小结 习题 第12章 高级I/O 12.1 引言 12.2 非阻塞I/O 12.3 记录锁 12.3.1 历史 12.3.2 fcntl记录锁 12.3.3 锁的隐含继承和释放 12.3.4 4.3+BSD的实现 12.3.5 建议性锁和强制性锁 12.4 流 12.4.1 流消息 12.4.2 putmsg和 putpmsg函数 12.4.3 流ioct1操作 12.4.4 write至流设备 12.4.5 写方式 12.4.6 getmsg和 getpmsg函数 12.4.7 读方式 12.5 I/O多路转接 12.5.1 select函数 12.5.2 poll函数 12.6 异步I/O 12.6.1 SVR4 12.6.2 4.3+BSD 12.7 readv和writev函数 12.8 readn和 writen函数 12.9 存储映射I/O 12.10 小结 习题 第13章 精灵进程 13.1 引言 13.2 精灵进程的特征 13.3 编程规则 13.4 出错记录 13.4.1 SVR4流log驱动程序 13.4.2 4.3+BSD syslog设施 13.5 客户机-服务器模型 13.6 小结 习题 第14章 进程间通信 14.1 引言 14.2 管道 14.3 popen和 pclose函数 14.4 协同进程 14.5 FIFO 14.6 系统V IPC 14.6.1 标识符和关键字 14.6.2 许可权结构 14.6.3 结构限制 14.6.4 优点和缺点 14.7 消息队列 14.8 信号量 14.9 共享存储 14.10 客户机-服务器属性 14.11 小结 习题 第15章 高级进程间通信 15.1 引言 15.2 流管道 15.3 传送文件描述符 15.3.1 SVR4 15.3.2 4.3BSD 15.3.3 4.3+BSD 15.4 open服务器第1版 15.5 客户机-服务器连接函数 15.5.1 SVR4 15.5.2 4.3+BSD 15.6 open服务器第2版 15.7 小结 习题 第16章 数据库函数库 16.1 引言 16.2 历史 16.3 函数库 16.4 实现概述 16.5 集中式或非集中式 16.6 并发 16.6.1 粗锁 16.6.2 细锁 16.7 源码 16.8 性能 16.8.1 单进程的结果 16.8.2 多进程的结果 16.9 小结 习题 第17章 与PostScript打印机通信 17.1 引言 17.2 PostScript通信机制 17.3 假脱机打印 17.4 源码 17.5 小结 习题 第18章 调制解调器拨号器 18.1 引言 18.2 历史 18.3 程序设计 18.4 数据文件 18.5 服务器设计 18.6 服务器源码 18.7 客户机设计 18.7.1 终端行规程 18.7.2 一个进程还是两个进程 18.8 客户机源码 18.9 小结 习题 第19章 伪终端 19.1 引言 19.2 概述 19.2.1 网络登录服务器 19.2.2 script程序 19.2.3 expect程序 19.2.4 运行协同程序 19.2.5 观看长时间运行程序的输出 19.3 打开伪终端设备 19.3.1 SVR4 19.3.2 4.3+BSD 19.4 pty_fork函数 19.5 pty程序 19.6 使用pty程序 19.6.1 utmp文件 19.6.2 作业控制交互 19.6.3 检查长时间运行程序的输出 19.6.4 script程序 19.6.5 运行协同进程 19.6.6 用交互模式驱动交互式程序 19.7 其他特性 19.7.1 打包模式 19.7.2 远程模式 19.7.3 窗口大小变化 19.7.4 信号发生 19.8 小结 习题 附录A 函数原型 附录B 其他源代码 附录C 习题答案 参考

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值