我的团队复活了一些旧的 Python 代码,并将其升级到版本 3。由于新规定禁止在源代码中混合使用制表符和空格,这个过程变得更糟。一个通过将制表符替换为空格来使代码能够执行的自动清理操作,对行末的注释造成了很大的破坏。为什么会有人创建一种空格如此重要的语言呢?
白色清除
亲爱的 White:
你编辑过 makefile 吗?尽管在编程语言中大量使用空格有着悠久的传统,但所有传统都需要改变。我们不再为了让打印机工作而献祭处女,或者至少 KV 最近没有献祭过。
在 Python 中,许多人对选择使用空格而不是花括号来表示代码块的界限提出了异议,但由于开发者们在 Python 3 版本中没有改变他们的想法,我怀疑我们都将不得不在相当长的时间内忍受它,而且我非常肯定,未来还会有其他大小语言,空格仍然很重要。
如果我可以改变所有编程语言设计者心中的一件事,那就是强烈地向他们强调,任何对程序的语法或结构意义至关重要的东西,都必须对人类读者来说是容易看到的,并且也容易被程序员编写代码的系统所理解。
让我们先处理最后一点。使工具能够轻松理解软件的结构是拥有能够帮助程序员为计算机准备正确程序的关键之一。自从软件开发的早期,程序员就一直试图构建工具来向他们展示——在不可避免的编辑-编译-测试-失败-编辑的无休止循环之前——程序文本中可能存在问题的地方。代码编辑器添加了颜色化、语法高亮、代码折叠以及许多其他功能,以一种绝望的,有些人可能会说是徒劳的方式,试图提高程序员的生产力。
当一种新语言出现时,代码中的这些标记符必须一致地使用;否则,你选择的编辑器几乎或根本没有能力部署这些有用的提示来提高生产力。例如,允许任何两个符号代表相同的概念,绝对是不允许的。想象一下,如果可以有两种类型的花括号来界定代码块,仅仅因为编程社区的不同部分想要它们,或者如果有多种语法方式来解引用一个变量。基本思想是,对于语言必须做的每一件事,都必须有一种清晰的方法,既为了人类的理解,也为了编辑器开发者的理智。因此,在代码中使用不可见或近乎不可见的标记,特别是制表符和空格,来指示结构或语法。
不可见和近乎不可见的标记将我们带到问题的“人”的部分——并不是说代码编辑器作者不是人,但我们大多数人不会编写新的编辑器,尽管我们所有人都会使用编辑器。我们都知道,曾经有一段时间,计算机的内存很小,一个制表符(一个字节)与相应数量的空格(8个)之间的差异可能是存储在宝贵的磁盘上的源代码大小,以及通过任何原始而缓慢的总线从存储器传输到内存中的重要差异。
将编码标准从八个空格更改为四个空格可能会有所改善,但让我们面对现实,这些在过去几十年里都无关紧要了。现在,使用这些隐形标记的唯一原因是清晰地表示一段代码相对于其周围代码的范围。
事实上,最好选择一个不是制表符、不是空格,并且通常不在程序中使用的单个字符——例如,Unicode 码位 U+1F4A9——并将其用作通用缩进字符。然后编辑器可以根据用户的偏好自由地以任何一致的方式缩进代码。用户可以为每个缩进字符使用任意数量的空白字符——8、4、2,某个质数,随便他们喜欢——程序员可以选择他们自己对范围的个人视图。在磁盘上,这种格式每个缩进只花费一个字符(两个字节),如果你想看到缩进字符,这是现代编辑器的常见功能,你拨动一个开关,瞧,它们都在那里。每个人都会很高兴,我们最终将解决由来已久的制表符与空格的难题。
KV
文件系统垃圾
快速有效地清理你的存储空间
Kode Vicious
https://queue.org.cn/detail.cfm?id=2003323
迷失在集市的一代
只有当有人负责时,质量才会发生。
Poul-Henning Kamp
https://queue.org.cn/detail.cfm?id=2349257
演示数据即代码
自动化有助于协作。
Thomas A. Limoncelli
https://queue.org.cn/detail.cfm?id=3355565
George V. Neville-Neil 为乐趣和盈利而从事网络和操作系统代码工作。他还教授各种与编程相关的科目课程。他的兴趣领域是代码探险、操作系统和重写你的烂代码(好吧,也许不是最后一个)。他在马萨诸塞州波士顿的东北大学获得计算机科学学士学位,并且是 、Usenix 协会和 IEEE 的成员。他是一位狂热的自行车爱好者和旅行家,目前居住在纽约市。
版权 © 2020 由所有者/作者持有。出版权已授权给 。
最初发表于 Queue 第 18 卷,第 3 期——
在 数字图书馆 中评论这篇文章