打字猴:1.700436288e+09
1700436288 肯·汤普森原作的模式搜索程序grep启发了我们对“工具”而非仅止于“程序”的思考,堪称典范。肯在2019年谈及grep时说:
1700436289
1700436290 “我写了这个工具,但没有把它放在中央程序库里,因为我不想让人以为我专横独断。
1700436291
1700436292 “道格·麦基尔罗伊说,‘如果能在文件中寻找东西,那该多好。’我说,‘让我琢磨一晚上。’第二天早上,我给他看了我之前写的程序。他说,‘这正是我想要的。’
1700436293
1700436294 “从那时起,grep就变得既是名词又是动词,它甚至被OED[6]收录了。最难的是给它命名,最初名叫‘s’,代表搜索(search)。”
1700436295
1700436296 grep这个名字来自ed文本编辑器中的命令g/re/p,它列出所有符合正则表达式模式re的行,《牛津英语词典》中grep的条目(图4-2)释义正确。(鉴于OED已经赐予grep合法英语单词之地位,所以我既不使用特殊字体也不大写。)
1700436297
1700436298
1700436299
1700436300
1700436301 图4-2 OED中的grep词条
1700436302
1700436303 我个人最喜欢的grep往事是,1972年的一天,实验室有人给我打电话说:
1700436304
1700436305 “我注意到,把我的新袖珍计算器倒过来拿时,有些数字看起来会变成字母,如3变成E,7变成L。我知道你们的计算机上有一本字典。你们有没有办法告诉我,当我把计算器倒着拿的时候,可以在计算器上造出哪些词?”
1700436306
1700436307 图4-3展示了他看到的情形。
1700436308
1700436309
1700436310
1700436311
1700436312 图4-3 计算器屏幕上的BEHILOS字符
1700436313
1700436314 身在科研部门,能帮上真正遇到实际问题的人,感觉不错。于是,我问他倒着拿计算器能打出什么字母,他说“BEHILOS[7]”。我转身来到键盘前,输入以下命令:
1700436315
1700436316 grep ‘ˆ[behilos]*$’ /usr/dict/web2
1700436317
1700436318
1700436319
1700436320
1700436321
1700436322 文件/usr/dict/web2列出了Webster’s Second International Dictionary[8](韦氏国际词典(第2版))收录的单词——234 936个单词,每行一个——单引号之间的神秘字符串是一个正则表达式,或谓模式。在本例中,它指定了只包含这7个字母的任意组合的行,而不包含其他内容。
1700436323
1700436324 结果得到了263个单词的惊人列表,如图4-4所示。我的母语是英语,但词表中有相当多单词我从未见过。无论如何,我把它们打印出来,寄给了那个家伙。我想他一定很满意,因为他没再找我。我体验了一次绝妙的经历,而且grep等工具和正则表达式之类概念的价值也被精彩地展示出来了。
1700436325
1700436326
1700436327
1700436328
1700436329 图4-4 试试在倒拿的计算器上显示以上单词
1700436330
1700436331 随着时间的推移,grep这个词被用作名词、动词和动名词(grepping),并成为Unix社区日常用语。你有没有在你的公寓里翻找(grep)过你的车钥匙?有些保险杠贴纸和 T 恤衫上写着“Reach out and grep someone”(伸手搜检他人),这是对AT&T广告语“reach out and touch someone[9]”(伸手触碰他人)的戏仿。
1700436332
1700436333 诺贝尔奖得主阿尔诺·彭齐亚斯是研究中心副总裁,高我三级。有一天他打电话问我,他想在公开演讲中使用这个短语,不知是否妥当。
1700436334
1700436335
1700436336
1700436337
[ 上一页 ]  [ :1.700436288e+09 ]  [ 下一页 ]