老顽固

  下载本文的PDF版本 PDF

用进废退

抽象的警句

斯坦·凯利-布特尔,作者

我的每日警句 让我可以在多个方向上自由漫步,我希望其中一些对于Queue的读者来说是及时且具有启发性的。我选择法语“aphorisme”是一种可以理解的精英主义的矫揉造作,向蒙田、伏尔泰、伯特兰·迈耶以及那群优雅的人致敬。如果你发音正确,法语喉音r(如在Brassens中)和崇高的长尾音节,与英语中含糊不清的二合元音序列:a-for-iz-um 相比,简直是天壤之别。(说英语的人也把单音节类型发音成 john-ruh。)我们倾向于将“aphorism”(警句)和“epigram”(隽语)视为“maxim”(格言)、“motto”(座右铭)甚至“saying”(谚语)的华丽同义词。它们的共同特点是试图将大量的智慧浓缩成简短、令人难忘的短语,例如,适合装饰我们的大学徽章、墓碑或汽车保险杠。

最初,aphorism 的意思是定义,这实际上与目前的用法恰恰相反。定义本质上必须详细阐明(定义项)被定义的事物(被定义项)的确切含义。用现代术语来说:zip(定义项) = 被定义项;unzip(被定义项) = 定义项。与 iTunes 的压缩不同,质量得以保留!一旦你对一个定义达成一致,它的使用肯定有助于减少未来讨论的冗长性。但是,正如伯特兰·罗素所说,定义只是可选的速记技巧,节省空间和时间,但对理论本身没有贡献任何本质性的东西。当然,在实践中,正如罗素承认的那样,我们已经挑选出一个值得被定义的复合实体这一事实,本身就可能对理论的发展和解释具有重要意义。因此,被定义项动量不仅比“质量 x 速度”更省力,而且还清楚地表明,这个奇怪的、非自然的乘积在力学中起着关键作用。与净工资类似,定义为“总额减去扣款”。

令人惊讶的是,最新版(第六版)牛津引语词典 避开了特定的警句类别,而是将其较短的、令人难忘的选择列在名为“谚语”的部分下。我想你可以责怪我剑桥式的吹毛求疵的偏见,但“谚语”这个臃肿的词语缺乏我们与警句及其隽语同胞相关的经典韵味。我想起了评论家评价杰克·凯鲁亚克时说的话,“那不是文学,那只是打字。” 这个阵营的愤世嫉俗者喜欢抨击博客圈,声称历史上第一次我们有更多的作者而不是读者。幸运的是,大多数博主没有意识到这种侮辱的严重性。Borland Paradox 数据库有一种非常模糊的数据类型,称为 blob,意思是二进制大对象。这可能影响了“blog”(博客)这个词的创造,将其视为 blob 生成器,但其他人将其解读为二进制的空话连篇。我赶紧补充一句,我最好的朋友中就有很多博主。称他们为 blogeurs 或 blogistas 有帮助吗? 真的没有。我征求您的建议。

费伯出版公司拥有完全致力于警句的竞争性选集,包括诗人唐·帕特森最近编纂的盲眼,他承认警句是最经济但最不令人满意的文学形式。根据 NB 的评论(泰晤士报文学副刊,2007 年 9 月 28 日),帕特森经常将平淡的真理与真正的警句混淆。NB 对盲眼警句提出了一个警句:“智慧和机智的问题在于你通常只能得到其中一个。”

牛津选集还收录了詹姆斯·芬顿的一句自指警句:“吹牛的人可能是对的。警句作家可能是错的。世界就是这么艰难!”

这个警告在诸如“人多力量大”和“厨师太多烧坏汤”这样的矛盾成对的谚语中得到了证实。我邀请大家提供类似的例子,最好是与 IT 相关的。

使用和失去什么?

回到我的警句标题“用进废退”,我们看到了另一个危险,即聪明的、看似悖论的说法伪装成公认的真理。对于那些该死的难以捉摸的“它”的一些语境可能会给我们带来谬误。如果我们把“它”看作是一种不可再生的化石燃料,我们的警句就简直是危险的。“使用煤炭,否则就失去它”只有作为中国的口号才有意义,其中“失去它”意味着在经济美国化的竞赛中落后于美国。其他变体可能吸引人,也可能不吸引人,这取决于你的愤世嫉俗程度。“使用 IT,否则就失去它”,偷偷地加入了信息技术的缩写,这是合理的,除非你试图统一英国国家医疗服务体系的患者记录系统。将“它”视为迷人的魅力因素也是有问题的:自 1920 年代克拉拉·鲍以来,“It”女郎们,唉,都因时间的摧残和/或过度使用而失去了“It”。

我们转向对我的标题更合理的解释。第一个解释对于目前正在享受或忍受世界杯刺激的所有橄榄球联盟球迷来说都很熟悉,世界杯像四年一度的不可言喻的球形球版本足球(或协会足球)一样每四年举行一次。橄榄球是流氓玩的绅士游戏;足球是绅士玩的流氓游戏。(在这里,我们看到了伪装成玩笑定义的警句。)

的读者如果回避体育生活,就会错过一些提升职业生涯的启示。在这里,我们有规则和仲裁的思想,算法理论的核心和灵魂,以血肉之躯的形式演绎出来。简而言之,橄榄球联盟有复杂的进攻策略,包括争球、支点和持球队员密集冲撞。在持球队员密集冲撞中,包括持球人在内的三名或更多名球员(是的,椭圆形形状是有道理的)以直立队形向前推进,保持球不落地,而对方球队则试图阻止前进。在如此明显的混乱对抗(“maul”这个名字本身!)中,实际上有许多规则定义了合法和非法行为:谁可以加入持球队员密集冲撞以及如何加入?持球队员密集冲撞何时结束?其中一条规则与图灵的停机问题相当:有什么可以阻止攻防势均力敌且球没有推进的无休止的持球队员密集冲撞?这取决于裁判来打破这种僵局。他(很少是她)喊道:“用进废退!”进攻队必须在五秒钟内推进或放弃球权。我们知道这一点是因为,在实地运动中很少见的情况是,裁判配备了有线麦克风,全世界实时听到他的呼叫和警告。

我们在教学和神经科学领域找到了“用进废退”的另一个语境。后者提供了基于神经元和突触的广泛持有的学习和记忆理论。某些神经连接似乎确实会因使用而加强,因忽视而减弱。尽管知觉和意识的奥秘仍然存在,但神经网络的总体思想已被证明在设计教育策略方面很有用。教育家之间仍然存在差异:我们可以在多大程度上“训练大脑”,就像运动员通过有规律的锻炼程序逐步提高他们的表现一样?我认为一些死记硬背,尽管在许多课程中不受欢迎,但却是必不可少的——让我们再说一遍,那些地方性的必要但不充分的条件之一。一旦乔姆斯基的预设线路浮出水面,空白石板就需要一些基本的启动涂鸦。开放性问题:如何点燃想象力并激发好奇心?

抽象的抽象

警句作家在寻求真理的过程中,在哪个点会受到诱惑,想要添加一些澄清条款,以冒着超过那个定义不明确的 sizeof(警句) <= sizeof(空话连篇) 的风险?

警句的概念本身,将整个智慧流浓缩成一个尖锐而简洁的爆发(试试在喝了大量 Jolt Cola1 后说这句话),与我们的公平交易非常相关。在编码层面,我们以避免冗长而自豪,喜欢用两行 APL 代码代替 Cobol 中等效的冗长章节。Unix 推广其神秘的、剪切过的命令名称,作为真正男子气概编程的关键。任何超过三四个字符的都是公然的溺爱。当然,你为每个字符分配的含义越多越好。如果你发现

   set verbose

太冗长和显而易见,你可以使用

   #!/bin/csh -v

所有这些神秘的压缩可能违反了最佳可维护性实践规则,但当然,首要任务是用我们的简洁和智慧让后代眼花缭乱。如果未来的程序员有胆量和胆量摆弄我们的代码珍珠,让他们像困惑的商博良努力破译罗塞塔石碑2一样,在不情愿的钦佩中汗流浃背。

在所谓的系统开发链的更高层级,架构师和其他寄生虫通过在大型方框中放置小型图例来警句式地夸夸其谈。然后,这些方框通过随机箭头的彩色线条相互连接,所有这些都是(对我而言)被称为 SE(结构化封装)3 的过程的一部分。这是数据隐藏的自然延伸。当你的真实意图、方法和策略可以巧妙地隐藏在令人印象深刻的方框标语和寻宝流程图之后时,为什么要止步于隐藏数据呢?

为这种“意义私有化”添加学术色彩的新兴(或者更确切地说,是重新兴起)的策略是杰夫·克莱默将抽象提升为计算的关键4。对于许多哲学家来说,这种说法是最确定的、稳操胜券的赌注,因为抽象是所有事物的关键。或者至少是可以使用共同语言在同意的智人之间有意义地讨论的一切的关键!对于无意义的交流,我们重新引用维特根斯坦

“我的语言的界限意味着我的世界的界限,”

我们可以补充一句威胁芭蕾舞、肢体语言和单口喜剧的结尾语

“……对于不可言说之物,必当沉默”(逻辑哲学论)。

我们使用的每个词,无论它看起来多么具体和特殊,都是从我们亲切地称之为“现实”的东西中多次抽象出来的。(回想一下纳博科夫的警告,即“现实”是唯一一个必须始终加引号的词?)词语与它们命名的事物之间的联系(在索绪尔的术语中,从能指到所指的联系)不仅在一般的、偶然的意义上是任意的,而且,唉,这种任意性在空间和时间上都非常不稳定。这并不是要退回到悲观的不交流的懒惰状态。我们在点啤酒、询问火车何时运行,甚至在就客户所说的“我们必须在下周五支付工资!”达成一致方面做得非常出色。

克莱默的论文认为,创建抽象的能力是 THE(定冠词)关键计算技能,这得到了广泛的认同,尽管许多人更愿意满足于将抽象意识作为 A(不定冠词)关键计算技能,必要但不充分。

冒着一些题外话的风险,我可以提到一些语言,即使是那些与我们共享印欧语系词根的语言,也缺乏定冠词和不定冠词。我最近与维克多·雅科夫列维奇·费特(移居国外的诗人兼蝎子学教授)度过了一段愉快的、伏特加友好的时光,讨论了俄罗斯语中“Я ключ”可以表示“我是钥匙”或“我是一把钥匙”的奥秘。然而,援引萨丕尔-沃夫假说(大致:语言决定思想)并得出结论,认为俄罗斯人在某种程度上缺乏名词的确定性和不确定性的概念,是一种谬误。当需要时,他们可以用其他方式表达这种区别。我们的the 来自盎格鲁-撒克逊语 thaet,即我们的指示代词“that”的中性单数形式,通过一个被称为语法化的漫长过程。顺便说一句,这个过程与我前面讨论的语言抽象有关。我们可以指着并命名一只猫。看,又有一只!不太一样,但肯定是一种猫。随着时间的推移,我们达成了一个公认的分类概括:抽象的猫,剥离了除其基本猫性之外的所有东西!更难揭示所有那些非具体词语的起源,例如 andifbut,即构成语法句子的句法粘合剂。你可以使用狄更斯式的硬名词叙事序列来应付,例如

“汽车。男孩。街道。撞击。鲜血。尖叫。”

“笔记本电脑。微软。Windows。启动。崩溃。蓝屏。尖叫。”

在这里,语境默默地、痛苦地潜伏在体面的分析之外。

迪克斯特拉、帕纳斯、克莱默等人赞扬了仔细抽象的优点。我们需要识别并删除那些被认为对建模和解决问题不重要的部分。在某种程度上,我们可以通过使用更精确的逻辑和数学语言来避免自然语言的歧义。我们在这里可以实现的是,我们的符号和标识符被固定下来,以防止语义漂移,但前提是我们必须事先就这些符号和标识符的确切含义达成一致。阿拉斯泰尔·爱德华兹将此称为“该过程中最困难的部分”:选择名称以捕捉抽象的本质,“以一种在未来的某个时间对其他程序员有意义的方式”( 通讯,2007 年 8 月,第 13 页)。具有讽刺意味的是,这与帕纳斯早期的论文相冲突,即应该避免助记符标识符。他想要 NL(自然语言)解释,而不是 NL 规范(参见本专栏,“通用语言”,2004/2005 年 12 月/1 月,第 80 页)。我们人类寻求定义手头问题以及建模所需的理想抽象的深思熟虑必须以 NL 进行。在某个时候,我们必须抛弃我们含糊不清的注释和伪代码,并在一种人为的、无情的编程语言中汗流浃背地编写规范。

然而(我能找到的最大的“然而”),仍然存在一些基本的循环性,即在抽象过程中可以安全地忽略“现实”的某些部分。似乎你需要一个解决方案才能确定你的模型是否确实包含了所有相关的要素。在讲堂外的严酷世界中,被告知“模型应该尽可能简单,但不能过于简单”几乎没有帮助。我们又回到了平衡警句的优雅和寻找有用但不明显的建议的问题上。 

参考文献

  1. 由 Wet Planet Beverages 制造,这种高咖啡因饮料是通宵程序员最喜欢的抗嗜睡辅助品。《Dr. Dobb’s Journal》举办年度软件开发 Jolt 产品卓越奖 (www.ddj.com/joltawards/)。多年来担任评委是一种喜忧参半的祝福:我不能提名自己的书,而且提供的贿赂低得令人发指!
  2. 这是一个故意误导性的参考文献,旨在逗弄我的讨厌批评的读者。我邀请他们解释为什么这里更好的参考文献应该是文特里斯和线性文字 B。
  3. 我意识到 SE 通常被认为是软件工程,但这个术语似乎正在失去光彩。皮特·麦克布林和其他人更喜欢 SC(软件工艺)或 SD(软件开发),认为这些术语尚不具备与“真正的”工程相关的严谨性或已建立的成熟流程。
  4. 克莱默,J. 2007。抽象是计算的关键吗? 通讯 50 (4): 36-42。

斯坦·凯利-布特尔 (http://www.feniks.com/skb/; http://www.sarcheck.com) 出生于英国利物浦,于 1950 年代在剑桥大学攻读纯数学,之后在先驱 EDSAC I 上挑战了计算机科学的杂质。他的众多著作包括《魔鬼的 DP 词典》(McGraw-Hill,1981 年)、《理解 Unix》(Sybex,1994 年)以及最近的电子书《计算机语言——斯坦·凯利-布特尔读者》。《Software Development Magazine》已将他评为首届年度斯坦·凯利-布特尔 Eclectech 奖的获得者,以表彰他在“技术和文学领域的终身成就”。诺贝尔奖和图灵奖都没有获得如此珍贵的同名认可。在他的艺名斯坦·凯利下,他还享受着作为歌手和词曲作者的平行职业生涯。

acmqueue

最初发表于 Queue 第 5 卷,第 7 期
数字图书馆 中评论本文








© 保留所有权利。

© . All rights reserved.