写点什么

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:4195298
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

网络攻防学习笔记 Day104

穿过生命散发芬芳

态势感知 网络攻防 8月日更

音频技术及行业的发展

声网

音频技术

让GitHub炸锅的深入理解MySQL实战手册,竟出自阿里云“藏经阁”

Java~~~

Java MySQL 数据库 架构 面试

GitHub上火了这份堪称神级的SpringBoot手册,竟出自滴滴之手

Java~~~

Java 架构 面试 微服务 Spring Boot

红黑树的理解与 Java 实现

编程菌

Java 编程 程序员 计算机 技术宅

面对物联网安全隐患高墙,熵核科技如何实现突围

熵核科技

物联网安全

干货分享!通过Dapr快速落地DDD,实现高并发

行云创新

了,来了!Nacos 2.0的Spring Boot Starter终于来了

Summer

Java 学习 程序员 架构 springboot

ReentrantLock 中的 4 个坑!

王磊

Java 并发 lock 8月日更

【得物技术】初探 OpenResty

得物技术

nginx 性能 openresty tengine

终于有人把操作系统、网络系统、线程进程、IO模型全部总结出来了

Java~~~

Java 架构 面试 TCP 网络

SQL的执行计划-->explain

卢卡多多

sql 8月日更

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

Summer

Java 学习 程序员 架构 jdk

在科技圈流行的冥想,为什么没有全民推广?

脑极体

低耦合、高内聚?

escray

学习 极客时间 如何落地业务建模 8月日更

【前端 · 面试 】JavaScript 之你不一定会的基础题(二)

编程三昧

JavaScript 面试 大前端 事件 8月日更

百度程序员:面试官看过我的博客,所以没敢问我多线程

今晚早点睡

Java 百度 程序员 面试 计算机

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

Java~~~

Java 架构 面试 IDEA 架构师

网络安全行业真的内卷了吗?

网络安全学海

网络安全 信息安全 网络 渗透测试 安全漏洞

架构实战营毕业总结

9527

#架构实战营

前端之算法(三)归并排序

Augus

数据结构与算法 8月日更

Web框架Gin | Gin 路由

xcbeyond

Go 语言 路由 gin 8月日更

360搜索宣布下线“明星人气排行榜”:饭圈文化不是洪水猛兽

石头IT视角

与外部系统的读写交互(八)

Databri_AI

flink kafka Cassandra

QDS06 Iperf 测网速

耳东@Erdong

8月日更 qds iperf

出自清华大神之手的JVM实战手册,刚上架GitHub点赞就达到85k

Java~~~

Java 架构 面试 JVM 多线程

阿里首本凤凰架构竟要付费,构建大型分布式系统的指南这么宝贵吗

Java~~~

Java 架构 面试 分布式 高并发

腾讯三面落马+拒网易、CVTE后,字节四面成功拿下offer

编程菌

Java 编程 程序员 面试 计算机

支持高性能计算场景,博云容器云打造智能算力引擎

BoCloud博云

容器 高性能计算

趁着课余时间学点Python(十二)面向对象的理解(结局)

ベ布小禅

8月日更

腾讯三面:哨兵挂了,Redis还能正常工作吗?

Summer

Java redis 学习 程序员 架构

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