文档详情

编程语言中一些令人抓狂的规则-懒人程序.PDF

发布:2019-08-15约2.55千字共3页下载文档
文本预览下载声明
编程语言中一些令人抓狂的规则  英文原文:7 long-ago decisions that still haunt developers today   众所周知,软件开发者每天都要做各种各样的决定:如何最好的实现功能、如何修复bug 、如何提升应用程序的性能等等。但是他们同样是在别人的劳动成果下面继续做自己的决定的,比如说:他们使用的是别 人开发出来的编程语言、操作系统以及各种开发工具。一些语言开发和系统设计行业里的前辈以前所作出的决定在那个时 候可能是很有意义的,不过在现在看来可能是多此一举。   举例而言,在2009年的时候,互联网创始人蒂姆·伯纳斯-李就承认,互联网网址中http :后面的两条斜线// 其实并无必要,他为这带来的不便致歉。蒂姆以幽默的环保角度道歉说:真不知道这两条斜线浪费了多少时间、打印墨水 和纸张。   除此之外,对于每天都要写代码的软件开发者来说,前辈们当时做出的令后人觉得蛋疼的决定还远不止这些。接下来 就介绍一下在编程语言和操作系统里的那些让开发者头疼的过时的选择。   1. Unix隐藏dot文件(. 文件)   早期的Unix操作系统就这样设计过:当通过ls命令把目录内容列出来的时候,任何以 . 开始的文件或目录会在默认情况下被隐藏起来。   从目录列表里隐藏当前(.)或者是根目录(. .)的方法将所有带 . 的文件有效地隐藏起来了。从那时起,点文件经常性的会被忽视掉,同时也成为一种提供恶意文件的简单方法。 在之前的40年里,因为这一个小小的走捷径而导致多少bug的出现?浪费了多少CPU 循环?出现了多少人为失误?所以我们应该记住:下次如果你还想在代码里抄近路的话,一定要想想之前的教训。 Rob Pike   2. JavaScript使用+字符串连接   大约在20年前,当Netscape首先开发JavaScript 的时候,他决定大量使用+操作符来连接字符串,主要是用在数字加法运算和字符串连接这两方面上。   可是最后结合JavaScript 的弱类型发现使用+操作符通常会 导致数值变量的连接 ,而不是数值的加减。其他的编程语言同样选择了不同的连接操作符,或者是安排专门的程序员严格输入变量,以防混淆。 当我第一次学习JavaScript 的时候,真的把我害惨了,因为前后不一致的的输入行为使得很难在最后的检查过程中发现bug。 Chris Dutrow   3. Microsoft选择反斜杠作为路径分隔符   在1983年的时候,微软发布了MS-DOS 2.0,它包括了一个目录层次结构,就像Unix。但是和Unix有所不同,Unix使用正斜杠(/ )来分割目录路径,微软使用了反斜杠(\),原因是,正斜杠已经被用于表示命令行选项,所以微软选择了反斜杠。   反斜杠在Unix和其他的例如Perl和C 语言中主要是用来区分后后面紧跟着的字符,所以这给程序员带来的痛苦就是要经常在正斜杠和反斜杠之间来来回回的兜 圈子,以免出错。 回想起来,我觉得这是一个可怕的决定,但是换成是我的话,当时可能会做出同样的举动。 Dave Lindbergh   4. Python使用缩进表示块   绝大多数编程语言使用明确的分隔符,例如用大括号来表示语句的分组,而Python却不是这样的,它使用 前导空白(空格和制表符)来表示哪一个块属于哪一行代码。   事实上,只有那些经验丰富的Python程序员比较倾向于使用这个功能 ,而对于那些新手或者是不常使用它的程序员来说,别提有多恼怒了,尤其是剪切代码、粘贴代码、改变平台,或者是重 构代码的时候。 在两个平台之间转换的过程中,你会发现这真是编程语言里的极品功能啊! Joe Zitzelberger   5. Tony Hoare发明了空引用   在1965的时候,英国著名计算机科学家Tony Hoare将空引用概念引入到ALGOL W语言里,以确保所有使用的引用内容都是安全的。一直到现在,这一发明都存在于大部分编程语言里。   编译器是不会抱怨空指针的,但是想要废弃一个可能会导致运行时错误或系统崩溃的引用的话,那么程序员必须设法 做一些防御措施或者是调试工作。 我认为它是一个导致数十亿美元损失的错误。 Tony Hoare   6. JavaScript 自动插入分号   JavaScript 中分号表示语句结束,但JavaScript会 自动的在它认为合适的地方插入分号。例如在程序结尾,或者在紧接1 个新行的retu
显示全部
相似文档