写点什么

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

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

关注

评论

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

在GitHub首页3分钟被下架!爱奇艺《高并发网关设计》笔记被盗?

Java 负载均衡 高并发 网关设计

一看就懂,一学就会的Raft解析

爱德华

raft PAXOS 共识算法 深入理解分布式共识算法

云图说 | MSSI之应用业务模型ABM,搭建业务与技术的数据治理桥梁

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

连接 AI,NebulaGraph Python ORM 项目 Carina 简化 Web 开发

NebulaGraph

Python ORM 图数据库

Nautilus Chain 首个生态基础设施 Poseiswap,公布空投规则

鳄鱼视界

云原生容器高可用运维能力应用

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

百套Web工业组态模板图库(长期更新)

2D3D前端可视化开发

组态软件 工业组态 组态图库 web组态图库 组态界面

LED显示屏与DLP拼接屏的优缺点分析

Dylan

LED LED显示屏 户外LED显示屏

互联网工程师1480道Java面试题及答案整理( 2023年 整理版)

Java你猿哥

Java 面试 面经 春招 Java八股文

面试必问:JVM 如何确定死亡对象?

Java 面试 JVM

一文告诉你如何一键复现“TSBS 时序数据库性能基准测试报告”测试结果

TDengine

tdengine 性能测试 时序数据库

基础篇丨链路追踪(Tracing)其实很简单

阿里巴巴云原生

阿里云 云原生 Tracing

测试流程规范如何推动落地?

老张

软件测试 目标识别 流程规范

官方文档 | 【JVM调优体系】「GC底层调优实战」XPocket为终结性能问题而生—开发指南

码界西柚

Java JVM 3月日更 XPocket 技术 优化体系

扫盲篇:Java中为啥一个 main 方法就能启动项目?

Java你猿哥

Java JVM ssm Java工程师

深度访谈 NXTF_ 负责人|虚实联动才是通向未来的数字通行证

万事ONES

Github上获赞59.8K的面试神技—1658页《Java面试突击核心讲》

Java你猿哥

Java 架构 面试 面经 春招

Alibaba官方上线!Java并发编程全彩图册(终极版)GitHub已置顶

Java 并发编程 多线程 高并发

Linux 的 TCP 连接数量最大不能超过 65535?

Java你猿哥

Java Linux 后端 ssm

灵魂拷问:你写的SQL一般有几个JOIN ?​

Java你猿哥

Java sql 后端 ssm join

最全金融数据安全政策汇编,你应该需要它!( 附下载 )

极盾科技

数据安全

专业的RAW图片处理:DxO PhotoLab 6 中文直装版

真大的脸盆

Mac Mac 软件 raw raw图片处理软件 Raw图像处理软件

YRCloudFile V6.10.0 功能新增对 NVIDIA GPUDirect 与回收站的支持

焱融科技

#高性能 #分布式文件存储 #文件存储 #全闪存储 #容器存储

如何使用责任链默认优雅地进行参数校验?

Flink 流批一体方案在数禾的实践

Apache Flink

大数据 实时计算 flinkl

几种快速传输大文件的方式

镭速

字节跳动 Flink 大规模云原生化实践

Apache Flink

大数据 flink 实时计算

夜莺n9e监控配置支持电话短信报警

外滩运维专家

夜莺监控 电话报警 短信报警 夜莺监控电话

IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践

JackJiang

即时通讯 即时通讯IM

普通程序员要成为架构师,需要掌握哪些知识体系?

程序员小毕

Java 面试 程序人生 后端 架构师

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