[有丶意思]grep的前世今生

视频原文:Where GREP Came From - Computerphile

今天在有土逼网看了一个很有意思的视频,想和大家分享一下。

用过 Linux 的人肯定都知道grep指令,你有没有好奇过,这个奇怪的名字是怎么来的呢?

这会是一个很有意思的故事。

在远古时代,计算资源是极其有限的,内存大概只有32kb、64kb 这个级别,disk 也只有几M。这使得软件设计不得不极其简单。

unix 有一款文字编辑器,叫做ed,作者是大名鼎鼎的Ken Thompson,下面这位:

ed的指令都只有一个字符:

  • p : print
  • s : delete
  • s : substitute
  • a : append
  • r : read
  • w : write

ed强大的地方在于,可以简单的操作多行:

  • 1,10p : 打印1-10行
  • 1,$p : 打印所有行
  • $d : 删除最后一行

还有正则表达式,用//包裹起来

/print/p

但是还有一个问题,内存是非常小的,可能装不下整个文件。

当时还有一位叫做Lee E. McMahon的计算机科学家从事text analysis 方向的工作。

他想通过text analysis的手段研究一下,The Federalist Papers (联邦党人文集,作者有很多很多人,很多学者想找出是谁写了哪一部分)的作者情况。The Federalist Papers 一共有85篇,加起来也就1M 左右,但是,ed装不下啊。。

于是 Lee 把这个问题向Ken Thompson反应了,于是第二天,Ken Thompson对ed的源码做了些修改,开发出了grep,能够实现从多个文件中查找满足特定正则表达式的字符串。

ed中有一个指令,叫做gglobal单词的缩写,可以和其他指令结合使用,比如g/print/p打印后面所有保护print的行。

现在看出点东西来了吗:

g/re/p
复制代码

所以Ken Thompson把这个程序命名为grep

这个故事后面还有彩蛋:

Professor Brian Kernighan90年代在普林斯顿大学教书的时候,给学生们布置了一个任务,给你ed的源代码(大概1800行 c 代码),给你一个星期的时间,写一个grep程序出来。

结果表明:None of them are Ken Thompson ~

视频下面的这个评论也很有意思:

如果你像我一样真正热爱计算机科学,喜欢研究底层逻辑,欢迎关注我的微信公众号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值