視頻原文:Where GREP Came From - Computerphile正則表達式
今天在有土逼網看了一個頗有意思的視頻,想和你們分享一下。bash
用過 Linux 的人確定都知道grep
指令,你有沒有好奇過,這個奇怪的名字是怎麼來的呢?微信
這會是一個頗有意思的故事。app
在遠古時代,計算資源是極其有限的,內存大概只有32kb、64kb 這個級別,disk 也只有幾M。這使得軟件設計不得不極其簡單。編輯器
unix 有一款文字編輯器,叫作ed
,做者是大名鼎鼎的Ken Thompson,下面這位:spa
ed
的指令都只有一個字符:設計
ed
強大的地方在於,能夠簡單的操做多行:unix
1,10p
: 打印1-10行1,$p
: 打印全部行$d
: 刪除最後一行還有正則表達式,用//
包裹起來code
/print/p
cdn
可是還有一個問題,內存是很是小的,可能裝不下整個文件。
當時還有一位叫作Lee E. McMahon的計算機科學家從事text analysis 方向的工做。
他想經過text analysis的手段研究一下,The Federalist Papers (聯邦黨人文集,做者有不少不少人,不少學者想找出是誰寫了哪一部分)的做者狀況。The Federalist Papers 一共有85篇,加起來也就1M 左右,可是,ed
裝不下啊。。
因而 Lee 把這個問題向Ken Thompson反應了,因而次日,Ken Thompson對ed
的源碼作了些修改,開發出了grep
,可以實現從多個文件中查找知足特定正則表達式的字符串。
ed
中有一個指令,叫作g
,global
單詞的縮寫,能夠和其餘指令結合使用,好比g/print/p
打印後面全部保護print
的行。
如今看出點東西來了嗎:
g/re/p
複製代碼
因此Ken Thompson把這個程序命名爲grep
。
這個故過後面還有彩蛋:
Professor Brian Kernighan90年代在普林斯頓大學教書的時候,給學生們佈置了一個任務,給你ed
的源代碼(大概1800行 c 代碼),給你一個星期的時間,寫一個grep
程序出來。
結果代表:None of them are Ken Thompson ~
視頻下面的這個評論也頗有意思:
若是你像我同樣真正熱愛計算機科學,喜歡研究底層邏輯,歡迎關注個人微信公衆號: