风格要素:作为文学的Unix

2020-11-06 07:10:53

如果Unix人没有什么不同,为什么这么多人是文科专业的?正是对文字的热爱让UNIX脱颖而出。

上世纪80年代末,我在硅谷地区电话公司的高级研发部门工作。我的实验室里住的大多是博士和有天赋的黑客。正如你所料,这是一家纯UNIX商店。

该集团的经理是个例外:没有高级学位,没有技术资质。他似乎对此刻意感到难为情。我们怀疑他(错误地,我们都同意)对自己的教育和智力缺乏信心。有一天,一个故事在该组织中流传,证实了我们的怀疑:这位经理曾透露,他确实被该组织的情报吓倒了,并正在采取措施补救这种情况。然而,他开出的药方出乎人们的意料:“我需要变得更像一个知识分子,”他说。“我要学习Unix。”

不用说,我们从中获得了不少乐趣。我的意思是,得了吧:就好像UNIX能把他变成一个策划者,就像《绿野仙踪》里恳求他的稻草人一样。我无情地想象了一种查尔斯·阿特拉斯(Charles Atlas)老式广告的变体:“那些高级工程师再也不会向我脸上扔沙子了。”

但我也有同情心:“老板不是完全错了,不是吗?”Unix的人有些不同,不是吗?“。在那之后的几年里,我逐渐意识到我以前的经理想要的是什么。我仍然认为他被误导了,但回想起来,我认为他的信念比我当时认识到的更准确。

可以肯定的是,UNIX社区有自己的技术狭隘和呆板的狭隘眼光,但根据我的经验,在UNIX商店里似乎出现了令人怀疑的多语种和文科人员过多的情况。我承认我的证据是粗略的和轶事的。例如,当我敲打出一排炮弹时,一位工程师同事在我身后盯着我,我可能会故意在文学上提到一个晦涩难懂的地方:

如果测试-z‘ps-fe|grem’那么回音^G,让我们看看钟声是为谁敲响的。

在我的咨询工作中,Unix的同事们更有可能以一种我在VMS商店、IBM的大型数据中心或DOS贫民窟从未预料到的方式认识和发挥作用。

作为一个文科类型的人(尽管我巧妙地在简历中隐藏了这一点),我想知道为什么这会是真的。我最初的解释是,多年来,UNIX与加州大学伯克利分校(UC Berkeley)等大学计算环境的历史联系并不成立;我遇到的许多UNIX爱好者都来自计算机系规模较小或缺乏的学校。这肯定是有联系的,但我没有可信的假设。

直到我开始经常询问拒绝接受UNIX的人他们不喜欢UNIX的什么,才有了更好的解释。

一些普遍存在的反感带有明显的民粹主义色彩--人们察觉到了一丝对Unix的势利,并以通常仅限于歌剧或芭蕾舞等高雅机构的无产阶级怨恨来看待它。他们说得有道理:直到最近,Unix还是计算机界的上流社会的通用语言。计算机界中更烦人、更实际、更弱势的人似乎反对这种特权的光环。从历史上看,Unix高手一直是一群娇生惯养的人,他们往往为自己来之不易的知识感到自豪。但在现代计算环境中,这些阶层差异正在迅速消失。现在,UNIX工程师变得更加普遍,低成本或免费的UNIX变体在廉价的硬件上运行。当然,在NT时代,UNIX用户并不那么娇生惯养。

有一长串标准的更具体的批评:Unix很难学,而且很耗时。要记住的事情太多了。它既神秘又不必要地复杂。

但最常见的抱怨是,它过于面向文本。人们真的很讨厌命令行,因为它有所有的实用程序、晦涩难懂的标志和他们必须记住的参数。他们讨厌所有的打字。一个角色放错了位置,你就得从头开始。有趣的是,这种抱怨大多来自搭载图形用户界面的Macintosh或Windows平台的用户。那些苦读DOS批处理脚本或整天在多用户非UNIX机器的基于字符的终端上工作的人不太可能表达同样的不满。

尽管我理解人们可能会因为不得不记住像cat和grep这样故意晦涩难懂的实用程序名称而感到厌烦,但我仍然对他们为什么讨厌打字感到困惑。然后我意识到,我可以将这一抱怨与Unix商店里的几十名“知识精英”(正如我的经理所说的那样)联系在一起。共同的主线是文字技巧;我的UNIX同事中有很大一部分人在以前的职业生涯中已经养成了熟练使用文本和印刷文字的习惯,这一比例高得令人怀疑。他们都是熟练的读者和编写者,而UNIX则很好地利用了这些优势。在某种意义上,Unix对他们来说就是文学。突然之间,UNIX社区中通晓多种语言、文科类型和如饥似渴的读者的过度代表似乎不那么神秘了,并指出了一个更深层次的问题:在一个日益被图像文化(电视、电影、.jpg文件)主导的世界里,UNIX仍然植根于世界文化。

UNIX程序员使用丰富的系统实用程序和命令行参数词汇表以及灵活多样的语法和句法来表达自己。对于UNIX爱好者来说,这门语言成了他们的第二天性。有一次,我无意中听到帕洛阿尔托一家餐馆里的一段对话:“这里曾经有一盘不到10美元的虾意大利面。让我想想..。猫咪菜单|GREP虾|测试-lt$10……“。虽然在句法上不正确(谈话也不那么有趣),但一位来自NT商店的用餐者可能不会像这样随意地表达自己的意思。

对于UNIX,命令行上的文本(STDIN、STDOUT、STDERR)是主要的接口机制:Unix系统实用程序是Word-Smith的一种乐高结构集。管道和过滤器将一个公用设施连接到另一个公用设施,文本在两者之间隐形流动。使用Shell、awk/lex派生工具或实用程序集实际上是一种单词跳跃。

在命令行上工作,双手放在按键上,不会被频繁地伸手拿鼠标打断,这是文字工匠(特别是曾经在电传打字机或电动打字机上工作的真正年长的人)所熟悉的一种姿势。它提出了一些和写文章一样的要求。两者都需要写作技巧。两者都需要对语法和句法有透彻的了解。两者都用有力、紧凑的表达来奖励掌握。

冒着疏远技术人员和作家的风险,我还建议UNIX提供一些其他文学珍视的东西:连贯一致的风格,作家称之为声音的东西。在你意识到UNIX核心是极少数同步思维的产物之前,你不会对UNIX有太多的了解。我从未见过丹尼斯·里奇(Dennis Ritchie)、布莱恩·科尼根(Brian Kernighan)或肯·汤普森(Ken Thompson),但在Unix工作了15年后,我想我可能会像朋友一样与他们打招呼,对他们的想法有所了解。

你可能会争辩说,UNIX和其他操作系统一样,都是以视觉为导向的。现代的UNIX产品当然也有相当一部分基于图形用户界面的操作系统界面。然而,在实践中,UNIX核心颠覆了它们;它们最终服务于UNIX的世界文化传统,而不是取代它。看看大多数UNIX工作站的控制台:您看到的窗口中有一半是带有命令行提示符或在其中运行vi作业的终端仿真器。

没有什么比Unix和NT之间的对比更能体现这种文字/图像文化的张力了。几年前,当大肆吹嘘的UNIX杀手到来时,在雷蒙德巨人的充分信任和信任的支持下,我以开放的心态接近了它。但是NT让我不寒而栗。这件事有一些令人非常不满意的地方。我有一种无法言喻的感觉(向格特鲁德·斯坦道歉),那里根本不存在。诚然,我在UNIX时代就已经知道了系统和网络管理的主要主题,我承认注册表入侵确实让我烦恼了几天,但在短暂地爬上学习曲线之后,我回首过去,感觉自己已经从挖掘机降为吹叶机了。NT只是没有提供移动的空间。一刀切、点击式、我们已经期待已久的、满足您所有需求的NT世界,让我向往那些鲜为人知的命令行标志和man-k。我想用我自己的工具箱制作我自己的解决方案,而不是把我的想法强加给视觉上同质的、预先打包的、苏联的微软基础类世界。

NT绝对太接近图像文化了,让我很不舒服:没完没了的点击式图形对话框,用鼠标在屏幕上搜寻,弹出一个又一个需要我注意的弹出窗口。这种体验几乎完全是被动的。每项任务都需要一个基于GUI的实用程序前端,该前端加载了关于如何可视化(从而概念化)操作的阴险假设。我无法“跳出盒子”去思考,因为一切都是一个盒子。没有机会特别考虑如何交替执行一项任务。

我承认在某些方面让我的生活更轻松了。我发现自己较少记住(实用程序的名称、命令参数、语法),而更多地识别(与复选框、单选按钮和下拉菜单相关的解决方案组件)。我花在打字上的时间要少得多。当然,我的右手花了更多的时间在桌面上移动鼠标。但几个月后,我开始感到疲惫、荒凉,就像我在过多地浏览频道或玩视频游戏后的疲惫:花在反应上的时间太多,花在积极分析和表达上的时间不够。简而言之,形象文化耗尽了。

我在NT环境中任职期间唯一的亮点是Perl的迅速流行。Perl似乎作为一种用于Web开发的CGI解决方案进入了NT商店,但人们很快意识到它的强大功能,并将其用于远远超出Web开发范围的用途:系统管理、修订控制、远程文件分发、网络管理。具有讽刺意味的是,Perl本身就是被浓缩成一种快速而肮脏的脚本语言的UNIX特性的子集。从文学的角度来看,如果说UNIX是伟大的小说,那么Perl就是悬崖笔记。

掌握UNIX就像掌握语言一样,提供了真正的自由。自由的代价总是高昂的,但这是无可替代的。就我个人而言,我宁愿为我的自由付出代价,也不愿生活在像NT这样的点阵地图、弹出快乐的地牢里。我希望,随着IT人员变得更加老练,不再那么在意以牺牲真正自由为代价的表面便利,他们将向往UNIX所允许的那种自由和责任。当他们这么做的时候,UNIX将会来满足他们的需求。

自1983年以来,Thomas Scoville一直在与Unix搏斗。他目前在Expert Support Inc.工作。加州山景城