免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 36800 | 回复: 85

[书评] 《UNIX环境高级编程》第三版来袭地球! (获奖名单已公布-2014-6-27) [复制链接]

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
发表于 2014-05-27 14:52 |显示全部楼层
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4143762-1-1.html

背景资料:
20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W. Richard Stevens所著的《UNIX高级环境编程》。现在,Stevens的同事Steve Rago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了最新技术进展和最佳实践,并且符合最新的Single UNIX Specification第4版(SUSv4)。

Rago保留了使本书前版成为经典之作的精髓和方法。他在Stevens原著的基础上,从基础的文件、目录和进程讲起,并给诸如信号处理和终端I/O之类的先进技术保留较大的篇幅。他还深入讨论了线程和多线程编程、使用套接字接口驱动进程间通信(IPC)等方面的内容。

这一版涵盖了70多个最新版POSIX.1标准的新增接口,包括POSIX异步I/O、旋转锁、屏障(barrier)和POSIX信号量。此外,这一版删除了许多过时的接口,保留了一些广泛使用的接口。书中几乎所有实例都已经在目前最主流的4个平台上测试过,包括Solaris 10、Mac OS X 10.6.8(Darwin 10.8.0)、FressBSD 8.0、Ubuntu 12.04(基于Linux 3.2内核)。

与前两版一样,读者仍可以通过实例学习,这些实例包括了1万多行可下载的ISO C源代码,书中通过简明但完整的程序阐述了400多个系统调用和函数,清楚地说明它们的用法、参数和返回值。为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每个案例都根据现在的技术环境进行了全面更新。第3版根据当今主流系统进行更新,更具实用价值。

活动规则:
1、请叙述一下您与《UNIX环境高级编程》以往版本的初识、学习经历或其他难忘的故事和回忆(必须是自身经历);
2、作为程序开发人员,从APUE里的哪些思想对您来说帮助很大?

活动时间:
2014.5.28-2014.6.28

活动奖品:
最新版《UNIX环境高级编程(第3版)》新书一本!共5本!

本期嘉宾:
ChinaUnix论坛架构设计版资深版主:duanjigang

图书简介:
apue3.png
UNIX环境高级编程(第3版)
ISBN:978-7-115-35211-8
定价:128元

购买链接:当当 amazon 京东 China-Pub

样章试读:
前言.pdf (102.2 KB, 下载次数: 107)

论坛徽章:
1
双子座
日期:2013-11-06 17:18:01
发表于 2014-05-27 15:26 |显示全部楼层
MARK:wink:

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2014-05-27 15:32 |显示全部楼层
这个太赞了!

Stevens成书之时时间太早,二版之后到现在隔了太久,变化很多,我入门的时候看APUE2就感觉有的地方
不尽人意,但是又没有什么其他更好的书籍做参考

比如线程,第二版几笔带过,各种IPC机制也都放到UNP的进程间通讯卷中,要再看UNP才行

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2014-05-27 15:50 |显示全部楼层
本帖最后由 cokeboL 于 2014-05-28 17:33 编辑

1、请叙述一下您与《UNIX环境高级编程》以往版本的初识、学习经历或其他难忘的故事和回忆(必须是自身经历);

我是文科,大学连C语言都没学过,转行学linux的时候,别人推荐看APUE,迫不及待在亚马逊上下了订单,送书很快,第二天就到了
一拿到手里,看着厚厚的一大卷,心里美滋滋想着赶紧搞定它来增进知识

谁知道一翻开就傻了,基础知识太薄弱,很多东西看不懂,随便找几个概念都要反复琢磨才行,可以说是举步维艰
苦苦啃了一个礼拜,进展缓慢,这样下去不是个办法,我果断把APUE放下了,去补习基础知识,那期间C也就是刚入门,一目十行买来
看了一堆计算机课程的相关书籍,电脑装了个centos虚拟机敲代码学习

两个月后,稍微有些底气了,又把APUE拿出来,像捧着神灵似的,带着万分敬畏之情细细地读
这次效果要好得多了,很多东西都能读得懂,我是喜欢一大段重复阅读,第一遍不懂就再来一遍,配合着敲代码看运行结果,书中基础的
部分都能顺利踏过

然后去找了份工作干起来,恰好公司对我这种菜鸟进去是要先培训的,还有作业,要写几个不算太简单的程序,就一边百度谷歌一遍抱着
APUE研究设计逻辑结构,作业里用了thread、signal、FIFO、socket之类的,算是应用到实践当中去了
这期间为了写点基础的socket,由于APUE上几乎没怎么讲,就又买了UNP两卷,抱着socket那本照着老方法,一遍一遍啃着前几章基础
部分,那一个礼拜好歹算是把1000行左右的培训作业搞定

再次抱起APUE的时候大概是又半年之后,每天晚上看一阵,偶尔到论坛上看帖子,看别人的问题自己也研究,搞明白的就也帮人解答,借
着别人的问题,自己也学会了更多知识,很happy

可能APUE太过经典,很少有好书能超越,即便是版本那么老已经跟不上时间,一开始给别人推荐linux书籍的时候都要说APUE,但是也总
有些不太舒服的感觉,因为毕竟有过时的有缺少的,对比下来APUE可能不如 一站式编程 那些书对于新手更加来得实在

现在虽然自己已经不怎么搞linux了,但看到第三版要出了和简介,还是非常欣喜,向Stevens致敬,如果Stevens先生没有意外早逝,可能
第三版早就有了,真是可惜!

最后向第三版作者致敬!感谢他又给unix类爱好者带来一本愉悦的旅行!


2、作为程序开发人员,从APUE里的哪些思想对您来说帮助很大?

APUE比国内那些操作系统教材之类的实际效果更好,理论加上代码,还透漏着一些思想和实现原理而不只是干巴巴的理论
像透明、原子操作这些基本概念,进程、文件系统、权限之类的,都要比一般的理论书籍更具说服力

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2014-05-27 16:21 |显示全部楼层
至今印象最深刻APUE例子是以前第二版里的一个技巧: twice fork,把进程改为 1 的儿子来自动回收

论坛徽章:
4
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:11
发表于 2014-05-27 16:28 |显示全部楼层
前排留名。

这套书的确很赞。以前看过第二版的旧版和新版,我觉得新版最大的优势是加入了对异步IO的介绍。

对于POSIX,我觉得是一种表面上的优雅和干净。其复杂度都隐藏在接口之外。比如说信号这玩意儿,在第一次看的时候你根本就不知道这玩意儿比线程还要麻烦很多。而且加锁都不好加。APUE可以说是帮你避免踩坑的绝佳指南,在这个程度上,这套书无论怎么赞誉都不为过。

这本书的阅读需要独特的技巧。这是由这本书的特殊性导致的。本质上来说,这本书其实就是一本字典——问题是,它同时还是一本指南。所以,我们需要结合阅读字典和阅读指南的方法来阅读这本书。我的推荐就是第一次粗读这本书。你只需要知道这本书讲的是什么,分为哪几部分,每一部分之间有什么联系就可以了。技术细节可以不需要太过深入——小心入了无底坑,这样,第一遍看下来应该会很快的。

然后,就是把这本书当作字典收藏了。对于感兴趣的部分、对于工作中需要使用的部分,可以精细地去读了……问题就在于,这本书和字典又有一些区别——字典只需要读了就知道了,但是这本书还需要想,很多经验都不是书本能够教会你的。因此,书后的一些习题你需要认真去想,你会发现,其实UNIX接口并不是你想象中的那么一致,你期望完成的目标可以分解为几个完全不相干的部分完成——孩子,你太天真了。很多复杂度是藏在接口下面的。你需要了解接口的具体行为,明白这些行为会导致的隐藏后果。之所以会有这些问题,这是由操作系统这个领域独有的复杂度导致的。要么接口复杂,要么实现复杂,要么使用复杂。所有的操作系统接口无非就是把复杂度从这三只手转来转去罢了。

这样,你至少就能看完这本书了。但是你要注意的事情就是,这本书并不是全部。什么意思呢?这本书只是讲解了【接口】,然而,实际的开发你不可能——甚至大部分时间——都不会是在接口上面动工。而且这世界上还有另外一样姓W的东西呢。所以,实际的软件开发其实占据了你的知识库的大部分。然而,在这个意义上,这本书依然能够给你带来帮助。这就是这本书给你带来的隐藏价值了——他本质上,可以作为对于需要通用、意义不明的功能接口的一份良好的设计指南。

说白了。你的系统应该怎么去设计?设计中,怎么去估算后期的维护复杂度以及实现的难度?这本书讲解的UNIX接口,可以给你一个很好的参考作用。通过参考不同的UNIX的实现对某个技术的选择,你可以看出来用什么样的思路去设计什么样的功能可以导致什么样的后果——每个程序员都幻想去写一个操作系统,但殊不知操作系统其实是很简单的东西,最复杂的地方在于,怎么才能让别人用的操作系统,而且用的很舒服。这就意味着你的接口需要满足某些特定的条件,庸俗的说,就是所谓的“卖点”。当然,你也可以说高雅的说法——设计哲学。

从上述的三个角度来说,这本书都是你不得不读而且值得去反复阅读的,相信每次阅读都会给你带来不同维度的新的惊喜和进步的~

论坛徽章:
4
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:11
发表于 2014-05-27 16:36 |显示全部楼层
写完了发现忘了回答前面的问题:

1、请叙述一下您与《UNIX环境高级编程》以往版本的初识、学习经历或其他难忘的故事和回忆(必须是自身经历);
2、作为程序开发人员,从APUE里的哪些思想对您来说帮助很大?


初识的话,第一本貌似是在大学的旧书摊发现的,当时紧张兮兮地赶紧掏出钱来买走,害怕被别人看到这本书了。不过后来才发现貌似旧书店里面这本书有好多好多本的说【哭。对于这本书,刚开始是直接在网上看,很有些意犹未尽的感觉,还是觉得实体书好得多。比如说蹲厕所的时间刚刚够看完一小节神马的……嗯。

很长时间里面都有一些误解,上面的回帖提到一些了,其实主要是一种虚假的自满感——看完了觉得自己就无所不能了。其实这本书虽然是非常经典而且可以学到很多的。但是作为软件开发人员,对于知识都必须要能够达到虚怀若谷的状态。很容易就会有一些需求会刺到你知识的底线的。因此这种虚假的自满感是千万不能有——如果看完以后发现自己有这种感觉,自己去写一个比如m4这样的工具就发现自己傻逼了,嗯~

思想的话。我觉得对我帮助最大的是socket和信号量部分。这两部分给予我了一种全新的世界观——程序如何去和一个陌生的世界去沟通?以及程序如何处理那些神出鬼没去影响你的因素?这种思考曾经给我带来过很大的恐慌——是这样的,当你发现你的程序已经没有所谓的“鲁棒性”和“安全性”可言的时候,甚至有时候连效率都没法保证,是一件多么恐怖的事情。这两个部分对我来说,是在强迫我去思考那些我以前也许是主观不愿意去思考的部分。可以说过程是痛苦的(相同的经历出现在接受C++的异常式编程的时候),但是收获还是很丰富的。我相信,下面这句话对每个人来说都是有用的:

一个人一旦认识到了自己的局限性,才会发现自己最大的用处。

从一本讲述接口的书里面感受到这样的东西,这样的奇葩恐怕就只有我一个吧= =

论坛徽章:
0
发表于 2014-05-27 16:48 |显示全部楼层
10年前看的第二版
当时刚学linux不久
书的代码直接编译不过,出了一身汗,哈
感谢W. Richard Stevens,他的书每本都是经典

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
发表于 2014-05-27 16:54 |显示全部楼层
sxcong 发表于 2014-05-27 16:48
10年前看的第二版
当时刚学linux不久
书的代码直接编译不过,出了一身汗,哈


编译不过,可以在CU上问嘛,大家多交流

论坛徽章:
43
15-16赛季CBA联赛之四川
日期:2018-10-13 23:26:5015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:36程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
发表于 2014-05-27 17:39 |显示全部楼层
话说当年刚开始搞Unix的时候,为了搞懂这个问题,在一堆希望翻译的烂书中居然找到了原版APUE,后来惊闻作者的噩耗,真心觉得可惜。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP