UNIX环境高级编程:Stephen Rago访谈

《UNIX环境高级编程》(Advanced Programming in the UNIX Environment,APUE)被誉为基于UNIX的编程环境的圣经。本书全面介绍了UNIX环境上的C语言编程,涵盖文件I/O、进程、信号、线程、进程间通信和套接字(Socket)等主题。第3版结合FreeBSD 8、Linux 3.2.0、OS X 10.6.8和Solaris 10讨论了这些概念。

APUE的第3版已于近期出版。InfoQ有机会采访了其作者Stephen Rago,谈到了这一最新版本以及UNIX开发。

InfoQ:本书第1版出版于1992年,2005年更新过一版。在第3版中,你的主要目标和动机是什么?

Stephen Rago在第2版出版之前,我一直受困于没有足够的时间来更新某些平台相关的内容。尤其是我想用Linux 2.6代替2.4,因为2.6对pthread的支持更好一些,而且其表现与其他平台更为接近。但当时2.4仍然有很大的装机量,所以我保留了它。第3版用了我两年的时间才得以出版,因为在这期间,书中覆盖的平台频繁更新了好多次,我感觉自己一直在追赶。

InfoQ:你感觉哪部分写起来最有意思?

Rago这就好像问我最喜欢自己的哪个孩子。从遗传学角度讲,好父母不能厚此薄彼。我也一样。相对于我的工作,在APUE第3版上的工作是一次让我耳目一新的改变。我本质上是一位C程序员和操作系统开发人员,而UNIX系统的优雅超越了其他所有操作系统,所以每部分工作我都非常喜欢。

InfoQ:与第2版相比,面向的读者有变化吗?比如说,这本书是面向职业开发人员的,还是面向学习相关编程知识的人员的,这方面是不是有所改变?

RagoAPUE最初是作为“Addison-Wesley专业计算丛书”(Addison-Wesley Professional Computing Series)的一部分出版的,所以我假定读者是职业程序员。不过从我最近收到的提问问题的电子邮件来看,很多是来自学术界(对于赤裸裸地要答案的请求,我尽量不直接回复)。我知道一些系统编程类课程用到了这本书,我猜随着UNIX系统及其克隆产品在业务中越来越常见,越来越多的开发者都掌握了书中材料,所以本书面向的读者某种程度上也向学术界迁移了。或许也可以看做对这种改变的反映,我目前正在编写APUE第3版配套的教师手册,其中包括了书中所有习题的答案,还添加了一些书中没有的新习题。

在描述实际编程问题以及揭示很多UNIX系统接口的背景方面,这本书做得不错。所以我认为这本书可以很好地服务这两类读者。

InfoQ:你有没有发现基于UNIX系统比较适合学术研究?这是因为其设计内在的特性,还是说只是因为相对于商业系统,其源代码很容易获得?

Rago这两方面的原因使基于UNIX的系统用于学术研究非常理想。其设计简洁清晰,各种实现的源代码也可以免费获得,所以我们可以看到抽象的概念是如何映射为实际实现的。你可能需要把UNIX系统包含在“商业系统”中,因为很多业务都运行在UNIX系统之上。

InfoQ:你感觉你的书在哪种环境上更受欢迎,是UNIXOS X还是其他系统?

Rago:很难说。尽管我并没有一种很好的方法来衡量各种环境的受欢迎程度,但是从我收到的电子邮件来看,大部分人运行的都是某个版本的Linux。

InfoQ:考虑到C语言与UNIX的历史关系,所有例子都是用C写的。你有没有发现哪种语言能挑战C语言?C语言足够好了吗,还是说有新语言可以改进系统编程?

Rago40年来,C语言一直是够用的。我工作过的地方曾经把C++当做更好的C,因为它会进行更强的类型检查。但是C++如此庞大和复杂,使用起来非常困难。编写C程序时,我不需要不断地查参考书,以确定这样那样的特性应该如何使用;编写C++程序就不是这样了。我更喜欢C,因为可以用同一种语言处理高层和低层的东西,语言规范也足够简单,可以记在脑子里。操作系统需要与硬件交互,并基于高层构造提供功能,所以C语言可以很好地满足需求。使用底层操作系统所用的语言来编程会比较轻松。我还没研究过Go语言,但会找机会看一下,因为该语言尝试解决用C和C++之类的语言构建大型项目时所遇到的某些软件工程问题。

InfoQ:在花时间写书的时候,你有没有发现UNIX有何不足?

Rago或许UNIX系统需要一些简单的特性使执行更安全。比如,在IPC通道(如命名管道或套接字)的一端很难获得一个进程的标识信息。但是UNIX系统起源于协同环境,所以它没有提供更多内置的认证基础设施这一点也很容易理解。但是相对于使用该系统能做的所有事情,这只是小瑕疵了。

关于APUE一书作者

Stephen A. Rago是《UNIX® System V网络编程》(Addison-Wesley,1993)一书的作者。Rago是贝尔实验室参与构建UNIX System V Release 4的开发者之一。他曾经是《UNIX环境高级编程》第1版的技术审校者。Rago目前是NEC美国实验室存储系统组的一名研究人员。

W. Richard Stevens是公认的UNIX和网络专家,也是一位备受尊重的作家,还是广受欢迎的讲师和咨询师。他最著名的是《UNIX网络编程》、《UNIX环境高级编程》和《TCP/IP详解》等一系列书籍。

查看英文原文:Advanced UNIX Programming: An Interview with Stephen Rago

你可能感兴趣的:(UNIX环境高级编程:Stephen Rago访谈)