首页
学习
活动
专区
工具
TVP
发布

编程语言中间令人无语的规则

我们都知道,软件开发人员每天都在做各种各样的决策:如何更好地实现功能、如何修复bug、如何改进应用程序性能等等。但是他们也在其他人的工作成果中继续自己的决定,例如:他们使用别人开发的编程语言,操作系统,以及各种各样的开发工具。前几代人在语言开发和系统设计上作出的一些以前的决定可能在当时是很重要的,但现在可能是不必要的。

例如,2009年,互联网的创始人蒂姆·伯纳斯-李(Tim berners- lee)承认互联网在HTTP:在两条对角线的背面,/ /没有必要,他为这一不便道歉。“我不知道他们浪费了多少时间,印刷油墨和纸张,”他在一个幽默的环境道歉中说道。

此外,对于每天编写代码的软件开发人员来说,他们的前辈的决定远远不止这些。让我们来看看一些过时的选择,让开发人员对编程语言和操作系统感到不舒服。

1 .工作Unix隐藏点文件("。“文件)

早期的Unix操作系统的设计是这样做的:当ls命令列出目录内容时,任何开始的文件或目录。默认情况下隐藏文件。

将当前(.)或根目录(.)方法隐藏在目录列表中,以有效地隐藏所有文件。从那以后,点文件常常被忽略,而且是提供恶意文件的一种简单方法。

“在过去的40年里,有多少错误是由这个小捷径引起的?”浪费了多少CPU周期?发生了多少人为错误?因此,我们应该记住,下次你想在代码中走捷径时,你必须考虑上一课。——罗伯•派克

2.JavaScript使用+字符串连接

大约20年前,当Netscape第一次开发JavaScript时,他决定使用+操作符来连接字符串,主要是在数字添加和字符串连接方面。

然而,在最后,由于JavaScript的弱类型,发现+操作符的使用通常会导致数值变量的连接,而不是值的加减。其他编程语言也可以选择不同的连接操作符,或者安排专门的程序员来严格地输入变量以避免混淆。

“当我第一次了解到JavaScript的时候,它真的会伤害我,因为不一致的输入行为使得在最终的检查中很难找到bug。””——克里斯Dutrow

3 .产品微软选择了反斜杠作为路径分隔符

1983年,微软发布了ms -dos 2.0,其中包括一个目录层次结构,如Unix。但是不同于Unix,Unix使用前斜杠(/)来拆分目录路径,微软使用反斜杠(\),原因是一个正斜杠被用来表示命令行选项,所以微软选择了反斜杠。

Unix和其他诸如Perl和C语言的反斜杠主要用于区分字符,在痛苦之后,它给程序员带来的痛苦通常是在斜杠和轴距之间来回切换,以避免错误。

“回想起来,我觉得这是个糟糕的决定,但实际上是我自己做的,也会做同样的事情。””——戴夫·林德伯格

4.Python使用缩进表示块

大多数编程语言都使用显式分隔符,例如,用花括号来表示语句的分组,但是Python不像这样,它使用领先的空白(空格和制表符)来指示哪个块属于哪一行代码。

事实上,只有那些有经验的Python程序员才会使用这个特性,而不是经常使用它给新手或程序员,更不用说如何愤怒,特别是剪切代码,粘贴代码,更改平台,或者是重构代码的时间。

在这两个平台之间的转换过程中,你会发现这是编程语言的终极目标!”——乔Zitzelberger

Tony Hoare发明了空引号

1965年,著名的英国计算机科学家Tony Hoare介绍了空引用ALGOL W语言的概念,以确保所有引用的引用都是安全的。直到现在,大多数编程语言都发现了这一发明。

编译器不会抱怨null指针,但是想要取消可能会导致运行时错误或系统崩溃引用,所以程序员必须尝试做一些防御措施或调试。

“我认为这是一个成本数十亿美元的错误。””——Tony Hoare

6.JavaScript会自动插入分号

JavaScript的分号结束了语句,但是JavaScript会自动插入一个它认为合适的分号。例如,在程序的末尾,或在新行返回语句之后。

在某些情况下,可能会有括号和新的代码块返回,在这种情况下,如果自动插入分号,就会导致语法错误。

这个特性使开发人员的工作变得有些混乱,特别是当你在压缩代码来生产环境的时候。”——迈克•尼尔森

如何表达日期

如何表示日期的问题上产生了许多更有效的选项,如只使用两个数字或数量不代表,可分为完全由四年是一个闰年,或类似Unix系统提供的基本服务是国际标准时间1月1日,公元1970年就是分钟已经过去的秒数time_t表示为一个数据类型。我们叫它们日历时间,日历时间包括时间和日期。

只有用两个数字或数字来表示年份将导致著名的Y2K问题,在闰年的过程中计算也会有很多的bug,所以一些系统将会是Y2K38问题。

在20世纪60年代,内存的价值约为1美元/字节。所以在60年代或80年代用两个数字来表达年份是有意义的。问题是,稳定和准确的软件已经没有时间去设计了。弗雷德- Krampe

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215A0F65Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券