- 论坛徽章:
- 1
|
1、请叙述一下您与《UNIX环境高级编程》以往版本的初识、学习经历或其他难忘的故事和回忆(必须是自身经历);
好几年前刚刚接触Linux的项目,感觉自己有很大的知识空白,于是在网上查询各种学习经验,头一次看到"APUE"这样的字母组合,觉得很新奇,看到很多人对它的推崇,于是买了一本英文版的,每天下班就抱着看(那时候还没有女朋友。。。),从此踏入了Linux世界,一发而不可收拾。
以前上学的时候看过英文的论文,还有一些英文的资料,感觉大部分都挺拗口的,不太好理解。而看APUE的时候,虽然我的Linux基础很少,但是读起来一点都不费劲。头一次发现英文书居然可以写的这么通俗易懂,极其浅显的句子就把道理说的很明白。后来看CSAPP的时候,作者在前言里写道“Finally, we would like to acknowledge the great technical writers Brian Kernighan and the late W. Richard Stevens, for showing us that technical books can be beautiful.” 看来大家都有如此深刻的体会。(CSAPP这本书也是写得非常浅显易懂,继承了APUE那种婉婉道来的风格。相反,TCP/IP Illustrated Volume1的第二版就改动了很多,从前几章看,已经失去了Stevens经典系列所具有的那种语言风格,带有浓重的学究气,后面的章节还没看,不好做评论)
APUE之后,我意识到学习经典著作的重要性。TCPL,SICP,CSAPP,UNP等等(这些就好像我们行业里的黑话一样,还有大骆驼,小骆驼,龙书,虎书。。。),在读这些书的时候,意识到我们大学教育的失败,同时为自己没有尽早接触这些知识宝库而感到遗憾。但是庆幸的是我已经意识到了。可能还有很多人还不知道有这些经典读物,还在看着国内各种粗制滥造的大学教材。当然现在的网络比我当年读书的时候发达多了,我相信会有越来越多的人接触到这些杰出的著作的,CU的这种活动也会起到很好的推动作用。
2、作为程序开发人员,从APUE里的哪些思想对您来说帮助很大?
第一是作者认真的态度,每个函数都详细介绍了各个系统间的差异。在TCP/IP协议详解中也是这样,详细描述不同操作系统间的行为差异。这种认真的态度是非常值得学习的。
其次是深入底层实现,详细描述实际问题的本质。印象最深刻的就是文件IO那一章的习题里提到了shell里重定向操作符,将shell应用和内核函数结合起来,引导我们思考问题的根源。在APUE(以及Stevens的其他书中)这样的例子很常见。
第三个,是作者浅入深出的写作风格。以前导师曾介绍过MIT的经典教材《信号与系统》,说那本书是浅入深出,在看APUE的时候,真是切身体会到所谓浅入深出的意思了。每个开发人员都不可避免的要写文档,但是很多文档往往写的让人看不懂。
最后是作者所介绍的操作系统的设计思路。一切皆文件,进程、线程,信号,等等。也就是一个系统应该如何设计,如何管理。其实在设计具体项目的架构和接口的时候,也可以参考UNIX的接口进行设计。软件系统应该如何设置数据输入和输出,如何设计进程和线程的分配,如何设计进程/线程间的通信。我在项目设计中有意或者无意的参考了很多这些设计思想,随着经验的增加,愈发体会到这种设计思想的益处,对于软件架构的可维护性和可扩展性都有很大的帮助。 |
|