LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

编程语言中一些令人抓狂的规则

admin
2014年3月24日 23:39 本文热度 3297
  摘要:许多年前在编程语言设计和操作系统上的选择可能当时看起来无关紧要。但是,这些远古的决定至今仍然继续困扰着软件开发者。下面所介绍的就是一些在编程语言和操作系统里的那些让开发者头疼的过时的选择。
  众所周知,软件开发者每天都要做各种各样的决定:如何最好的实现功能、如何修复 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 个新行的 return 语句后面。
  在某些情况下,return 后面可能会有大括号和新的代码块,这种情况下,如果自动插入分号,就有可能导致语法错误。
  " 这一功能着实让开发者的工作出现了一点混乱,尤其是当你为一个生产环境压缩代码的时候。" ——Mike Nelson
  7. 如何表示日期
  在如何表示日期这一问题上已经产生过很多比较有效地选择方案了,例如只使用两个数字或者是更少的数字来表示年份,可以被四整除的年份是闰年,或者是像 Unix 系统那样提供的基本时间服务是国际标准时间公元 1970 年 1 月 1 日 00:00:00 以来经过的分秒,这种秒数是以数据类型 time_t 表示的。我们称它们为日历时间,日历时间包括时间和日期。
  只使用两个数字或者是更少的数字来表示年份就会导致众所周知的Y2K问题,计算闰年的过程中也是会出现很多 bug,有些系统照样会出现Y2K38 问题。
  " 在 20 世纪 60 年代的时候,内存的价值大约为 1 美元 / 字节。所以,在 60 年代或者是在 80 年代的时候使用 2 个数字来表达年份是很合理的。可问题就在于是稳定而精确的软件所运行的时间完全超出了其预期的设计时间。" ——Fred Krampe
  原文:InfoWorld

该文章在 2014/3/24 23:39:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved