写点什么

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

  • 2013-10-23
  • 本文字数:2025 字

    阅读完需:约 7 分钟

《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

2013-10-23 06:4194872
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 136.8 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

2020 国内互联网公司的Android工程师薪酬排名!看看你是什么水平

android 程序员 移动开发

教你如何在Spark Scala/Java应用中调用Python脚本

华为云开发者联盟

Java Python spark JVM Spark Scala

恒源云(GPUSHARE)_U1S1,1年1度GPU云种草大会

恒源云

深度学习

2020Android 开发年度总结:“这一年里我到底做了些啥,面试阿里的时候一定会问到的

android 程序员 移动开发

推荐!DevOps工具正越来越自动化

飞算JavaAI开发助手

新版本发布!openLooKeng v1.4.0上线

openLooKeng

大数据 计算引擎 openLooKeng

TDSQL将发布免费版本,助力国产数据库生态完善

腾讯云数据库

数据库 tdsql

2020 更新 - 腾讯 Android 面试 (已拿到月薪22K offer)

android 程序员 移动开发

超简单教程!自动部署openLooKeng

openLooKeng

大数据 计算引擎 openLooKeng 安装部署

使用JPA + Eclipselink操作PostgreSQL数据库

汪子熙

eclipse 数据库 11月日更

飞鹤乳业数智化转型之路

大咖说

云计算 数字化转型 数字化 企业上云

TDSQL已助力20余家金融机构完成核心替换

腾讯云数据库

tdsql 国产数据库

2020Android-目前最稳定和高效的UI适配方案!你头秃都没想到还能这样吧!

android 程序员 移动开发

2020Android开发者学习路线(快速篇),分析android进程管理机制

android 程序员 移动开发

基于Hive Connector的openLooKeng Connector 创建复用机制剖析

openLooKeng

大数据 hive 多数据源配置 计算引擎 openLooKeng

性能优化反思:不要在for循环中操作DB

CRMEB

助力邯钢工业4.0!TDengine在深度(平潭)节水减排项目中的应用

TDengine

数据库 tdengine 后端

2020-Android-面试重难点(万字篇),android屏幕适配的五种方式

android 程序员 移动开发

Hazelcast在openLooKeng中的应用(Cache篇)

openLooKeng

大数据 cache 计算引擎 openLooKeng

TDSQL | 深度解读HTAP系统的问题与主义之争

腾讯云数据库

tdsql 国产数据库

模块三作业

doublechun

「架构实战营」

双11在即,分享一些稳定性保障技术干货

老张

系统稳定性 大促 生产环境全链路压测

【Java原理剖析系列】深度synchronized工作原理分析

洛神灬殇

java 11月日更

用一套代码实现APP和小程序

Speedoooo

容器 移动开发 ios开发 APP开发 Andriod开发

2020 年需要关注的 5 大 Android 开发技术(1),Android知识总结

android 程序员 移动开发

云上远程运维的最后那点担心,“云梯”帮你解决

华为云开发者联盟

运维 华为云Stack 远程运维 安全可信 云梯

浅析openLooKeng安全认证机制

openLooKeng

大数据 ldap openLooKeng 安全认证

硬核干货!TDSQL全局一致性读技术详解|

腾讯云数据库

tdsql 国产数据库

2020Android面经,历时一个半月,斩获3个大厂offer,移动端开发工程师面试题

android 程序员 移动开发

JPA + EclipseLink + 云平台 = 运行在云端的数据库应用

汪子熙

数据库 Cloud Cloud Native 11月日更

实用推荐系统:寻找有用的用户行为

博文视点Broadview

UNIX环境高级编程:Stephen Rago访谈_Linux_Jeff Martin_InfoQ精选文章