首页 › programming › 一条竖线,串起软件五十年

一条竖线,串起软件五十年:柯尼汉谈Unix管道神课深读

概述

在“编程与开发”的视觉盛宴里,有一条画风极其朴素的视频:没有炫酷动画,没有海量剪辑,只有一位白发教授坐在白板前,画了一根竖线,讲了十来分钟——它就是传奇程序员布莱恩·柯尼汉(Brian Kernighan)做客Computerphile的访谈《UNIX Pipeline》。柯尼汉是谁?K&R《C程序设计语言》的"K"、awk的"K"、与皮克合著《UNIX编程环境》的作者。这根他亲手参与推广的竖线——管道(pipe)——是过去五十多年里软件业最重要的一个字符:它让“只做一件事”的小工具像积木一样拼装,催生了整条Unix哲学,也悄悄预定了2026年AI编程代理时代最吃香的设计模式。本文把这条访谈的知识骨架逐层拆开,补齐它没时间讲的历史坐标与争议,让你看完等于看完视频,还多懂一层。

视频基本信息

项目 内容
视频标题 UNIX Pipeline(Unix管道),柯尼汉Computerphile访谈系列之一
频道 Computerphile(英国诺丁汉大学背景的计算机科普频道)
主讲人 Brian Kernighan(普林斯顿大学教授、贝尔实验室资深成员、K&R与awk的共同缔造者)
发布时间 2021年前后(据频道页面历史数据,未实时核验;同一系列另有《Where GREP Came From》等期,标题与期数以频道页面为准)
时长 约10分钟白板访谈
热度 播放量在百万量级上下,为该访谈系列的热门一集(据频道页面历史数据,约数,未实时核验)

数据与核验说明:本次发布环境未开放实时网络抓取权限,无法在成文时重新核验YouTube页面。以上视频信息与热度数据均来自公开资料的既有记载,数字为约数,可能存在偏差,请以频道页面实际显示为准。本篇属于“经典重读”选题——素材近景中,编程分类的头部样本(C语言课、Unicode、正则、Vim、并发、Git、数据库索引、比特币、光追、面向对象等)已在本站此前各轮中被逐条覆盖,故本轮选择一条角度完全不同、且在AI代理时代重新变得要紧的公认经典。所引文献均为真实发表物,关键主张均注明出处与年份。

一、核心主张拆解:一根竖线如何变成一种世界观

这条访谈的叙事是典型的“大师讲古”:从一个问题讲起,讲到一次实现,最后落在一套哲学上。拆开来是六个层次。

1. 起点:1964年的一份备忘录——程序之间怎么“接水管”

管道的故事比Unix还早。道格·麦克罗伊(Doug McIlroy,当时在贝尔实验室)在1964年的一份内部备忘录里提出大意如此的设想:我们应该有办法像接花园水管一样,把程序一段一段串起来——当数据需要换一种方式加工时,直接“续接一段”即可,而不是每次都写一个从头到尾的新程序。这份备忘录被Unix史研究者反复引用,被认为是管道思想的最早书面记录(转引自里奇的回顾文章与麦克罗伊本人的多次口述)。

这个想法在当时的操作系统里没有土壤:主流批处理系统一次跑一个大作业,程序与程序之间没有“流水线”可言。它要等一个愿意为它造土壤的系统。

2. 落地:1973年,汤普逊把竖线插进了Unix

据丹尼斯·里奇在经典回顾《The Evolution of the UNIX Time-Sharing System》中的记载,麦克罗伊持续游说多年后,肯·汤普逊在1973年前后的Unix第三版里实现了管道:用户在命令行里敲一个竖线 |,操作系统就为两个程序接起一条单向字节流——左边程序的标准输出,直接成为右边程序的标准输入。配合输入输出重定向,shell从“启动程序的启动器”升级成了“拼接程序的胶水”。

柯尼汉在访谈里强调的实现要点,恰恰是它简单到令人发指:管道里流动的就是无结构的字节,不定义格式、不注册接口、不需要中间人。任何能读写标准输入输出的程序,天生就能和任何其他程序协作。

3. 哲学:三条原则撑起半个软件业

管道之所以能从“一个系统调用”长成“一种世界观”,靠的是麦克罗伊等人提炼、后来被埃里克·雷蒙德在《UNIX编程艺术》(2003)里整理成典的那套Unix哲学。访谈里柯尼汉着重讲了其中三条:

三条原则互相咬合:因为每个程序只做一件事,它才有资格把那一件事做到极致;因为接口是统一的文本流,三流小工具才能拼出千变万化的工作流。

4. 名场面:grep一夜诞生,然后被拼进千军万马

在访谈系列的姊妹篇《Where GREP Came From》里,柯尼汉讲了全系列最出名的故事:同事想在《联邦党人文集》里查找特定句式,汤普逊一个晚上就写出了grep——名字来自ed编辑器的全局正则打印命令 g/re/p。这个小工具从此成为Unix世界的“牙刷”:每天用、离不开、没人注意它多重要。

而管道让grep的威力翻了几十倍:grep | sort | uniq -c | sort -rn | head 一行命令,就完成“筛选—排序—去重计数—再排序—取前几名”的完整分析流水线。每一段都平庸,串起来却能干活。柯尼汉自己参与的awk(1977,与Aho、Weinberger合作)也是为这条流水线补上“字段处理”这一环而生的。

5. 深层逻辑:组合性(composability)是免费的杠杆

访谈真正的知识内核,是“组合性”这个多数观众第一遍看漏的概念。对比两种扩展模式:面向功能的系统里,每新增一种需求都要造一个更大的新工具,能力按“加法”增长;而在管道世界里,每新增一个小工具,它立刻能和所有存量工具自由组合,能力按“乘法”增长。十个小工具就有上百种两两组合,这就是为什么Unix命令行工具箱五十年不换弹药、新工具(curl、jq、ripgrep、fzf)一出生就自带全家桶能力。

6. 2026年的新章:AI代理把竖线重新捧上顶流

这条2021年的访谈在2026年看,几乎像一则预言。今天的编程代理(coding agent)干活的主战场恰恰是shell:抓日志、筛报错、数token、批量改文件,用的还是 grep | awk | sort 这套老手艺;业界给代理造的各类钩子与工作流,本质上也都是在问同一个问题——中间产物能不能是一段干净的、人和机器都能继续拼接的文本流。麦克罗伊1964年那句“接水管”,成了AI时代人机协作的接口隐喻。柯尼汉在访谈结尾那句轻描淡写的“这套想法用到现在”,在代理时代听来分量十足。

二、知识与理论溯源:每个说法都有文献坐标

三、批判性审查:哪些站得住,哪些要打折

证据最硬的部分:管道的发明史有里奇、麦克罗伊、柯尼汉三方当事人的文字与口述互证,1973年落地、1974年成文、1978年成典的时间线清晰无争议。这是软件史上史料质量最好的段落之一。

需要打折的四处:

  1. “文本流是万能接口”在结构化数据时代有真实短板。文本对人类可读、可手拼,但对机器而言每一环都要“解析—再序列化”:字段一含空格、引号、换行,grep | awk 就开始出事故。微软的PowerShell(斯诺弗2002年《Monad宣言》、2006年发布)干脆让管道里流动的不再是文本而是对象,直接点名修正了这一代际缺陷;jq(2012年前后问世)则是Unix阵营对JSON时代的一次“补票”。历史证明竖线赢了,但赢得并不完美——这一点访谈里没有展开。
  2. “只做一件事”在现实里节节败退。今天开发者的日常主力——git、Docker、systemd、乃至编程代理本身——都是大而全的多合一工具。“小工具哲学”更像是留给了胶水层的纪律,而不是整个软件业的现状。把Unix哲学当成普适教条去批评现代工具,是社区里常见的误用。
  3. 胜者书写的幸存者偏差。柯尼汉的讲述动人是动人,但同期System V与BSD之外的那些路径、以及当年在“用户体验”上走得更远的施乐PARC路线为何败北,视频没有提供对照。加布里埃尔的"worse is better"论文恰好补上了这一层:Unix赢,未必因为它处处更优,而因为它更容易被实现、被移植、被扩散。
  4. “一夜写出grep”请当传说听。当事人自己的多次转述在细节上就有出入(为谁而写、写到多晚),它作为“小工具可以很快诞生”的注脚极好,作为工程管理案例则经不起复盘——今天谁把关键工具赌在一夜产出上,多半活不过代码评审。

四、认知提升与实用启示

  1. 每天用一次管道解决一个真实问题。不必背手册,从最高频的三件套开始:统计日志里最常出现的错误,一行 grep ERROR app.log | sort | uniq -c | sort -rn | head 就够了。管道的学习曲线是所有编程技能里最陡峭下降的一条:十分钟上手,终身复利。
  2. 给你的程序留一个“竖线接口”。判断自己的脚本是否Unix味,只要一问:它能不能被接在别人管道的末尾?落到实践是两条:结果走标准输出、日志走标准错误(别把调试信息混进数据流,这也是《十二要素应用》把日志当事件流处理的设计依据),输入输出都接受纯文本。做到这两条,你的工具就自动获得了“与全人类工具箱组合”的资格。
  3. 在AI协作里主动维护“可拼接性”。让编程代理产出的中间物保持为干净的结构化文本(JSON、TSV、markdown),而不是只有它自己能读的状态——你就保留了随时人工介入、用任意老工具接手加工的能力。这是麦克罗伊1964年那句“接水管”在2026年的最佳翻译:接口属于管道,不属于任何单个程序。

视频论证结构图

flowchart TD
    A[1964年备忘录<br/>程序要像水管串联] --> B[1973年汤普逊<br/>在Unix实现管道]
    B --> C[原则一<br/>只做一件事做到极致]
    B --> D[原则二<br/>文本流当通用接口]
    B --> E[原则三<br/>为使用而写不为重写]
    C --> F[grep一夜诞生<br/>小工具小而锋利]
    D --> G[左输出即右输入<br/>进程零耦合]
    E --> H[存量即资产<br/>新工具全家桶能力]
    F --> I[组合性<br/>能力乘法增长]
    G --> I
    H --> I
    I --> J[2010年代复活<br/>jq与ripgrep接棒]
    J --> K[2026年新章<br/>AI代理靠文本流协作]

延伸阅读

  1. Where GREP Came From - Brian Kernighan | Computerphile — 同一系列的姊妹篇:柯尼汉亲述grep一夜诞生的故事与g/re/p的来历(视频链接以频道页面为准)
  2. The Art of UNIX Programming, Eric S. Raymond — Unix哲学最系统的成文化整理,把这条视频里的三条原则展开成十七章

参考来源

  1. Computerphile官方频道 — 本文解读视频《UNIX Pipeline》及柯尼汉访谈系列的发布渠道,播放与期数信息以频道页面为准
  2. Ritchie D.M., "The Evolution of the UNIX Time-Sharing System", Bell System Technical Journal, 1984 — 管道从1964年备忘录到1973年实现的权威一手史料(公开可检索)
  3. Ritchie D.M. & Thompson K., "The UNIX Time-Sharing System", Communications of the ACM, 1974, 17(7) — Unix系统的奠基性论文(ACM官网可检索)
  4. Kernighan B.W. & Pike R., "The UNIX Programming Environment", Prentice-Hall, 1984 — 首次以管道为主线组织教学的经典教材
  5. Kernighan B., "UNIX: A History and a Memoir", 2019 — 柯尼汉的亲历回忆录,Computerphile访谈系列的知识底稿
  6. Gabriel R.P., "The Rise of 'Worse is Better'", 1991 — 对Unix风格为何胜出的思想史反思,本文批判性审查部分的对照坐标

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入