魔扣论坛

魔扣源码论坛业务
查看: 1291|回复: 8

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

[复制链接]

该用户从未签到

32

主题

0

回帖

2

积分

魔扣新手

Rank: 1

魔扣币
2
贡献
2
威望
0
发表于 2018-8-12 22:43:13 | 显示全部楼层 |阅读模式
魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
许多年前在编程语言设计和操作系统设计上的选择可能当时看起来无关紧要。但是,这些远古的决定至今仍然继续困扰着软件开发者。

程序员使用的是别人开发出来的编程语言和操作系统以及各种开发工具。一些语言开发和系统设计行业里的前辈以前所作出的决定在那个时候可能是很有意义的,不过在现在看来可能是多此一举。

举例而言,在2009年的时候,互联网创始人蒂姆·伯纳斯-李就承认,互联网网址中http:后面的两条斜线//其实并无必要,他为这带来的不便致歉。蒂姆以幽默的环保角度道歉说:真不知道这两条斜线浪费了多少时间、打印墨水和纸张。

除此之外,对于每天都要写代码的软件开发者来说,前辈们当时做出的令后人觉得蛋疼的决定还远不止这些。接下来就介绍一下在编程语言和操作系统里的那些让开发者头疼的过时的选择。

1. Unix隐藏点文件

早期的Unix操作系统就这样设计过:当通过ls命令把目录内容列出来的时候,任何以 . 开始的文件或目录会在默认情况下被隐藏起来。

从那时起,点文件经常性的会被忽视掉,同时也成为恶意文件藏身的一种简单方法。






引用


“在之前的40年里,因为这一个小小的走捷径而导致多少bug的出现?浪费了多少CPU循环?出现了多少人为失误?所以我们应该记住:下次如果你还想在代码里抄近路的话,一定要想想之前的教训。”——Rob Pike




2. JavaScript使用“+”来连接字符串

大约在20年前,当Netscape首先开发JavaScript的时候,他决定大量使用+操作符来连接字符串,主要是用在数字加法运算和字符串连接这两方面上。





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


引用


“当我第一次学习JavaScript的时候,真的把我害惨了,因为前后不一致的的输入行为使得很难在最后的检查过程中发现bug。”——Chris Dutrow




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

在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




文章地址:http://www.iteye.com/news/28872-7-long-ago-decisions-still-haunt-developers-today
英文原文:http://origin-images.infoworld.com/slideshow/144245/7-long-ago-decisions-still-haunt-developers-today-238316


有人用微信聊天,有人却在微信中学习,成长。下面是2016最HOT公众号,赶快试试新的关注方法吧!


关注方式
★长按二维码,选择“识别图中二维码”进行关注。




iOS开发
微信号:iOSDevTip


▲长按二维码“识别.”关注
简介:每天学习一个小技巧,让学习iOS开发更简单!
[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]


猿圈
微信号:CodePush


▲长按二维码“识别.”关注
简介:为你揭秘地球上神秘的程序猿的生活圈!


[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]


Android开发精选
微信号:AndroidPush


▲长按二维码“识别.”关注
简介:定期翻译、发布国外Android优质的技术文章,开源库。
[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]


Swift开发
微信号:SwiftDev


▲长按二维码“识别.”关注
简介:Apple开源的最新官方语言Swift,更简单,更灵活,也更有趣!
[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]


APP开发者
微信号:aswifter


▲长按二维码“识别.”关注
简介:分享iOS开发、Swift开发、Android开发和移动互联网技术。

[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]


Python开发
微信号:PythonPush


▲长按二维码“识别.”关注
简介:人生苦短,我用Python。
[img=502px,29]https://bbs.morko.net/https://bbs.morko.net/source/plugin/csdn123_news/csdn123_showimg.php?url=http://mmbiz.qpic.cn/mmbiz/n9BCHWJuRJdzyh5Fp34xlCVWbiaUmtrN1yiceibLDdtNOVKXATXs54cHQU8qmuiaYKmddeRdECbALhP8UbNDBvhL8A/0?[/img]
                    
                        


来源链接: http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=404326327&idx=1&sn=4188e0b186dd917d88833d7c1de46d0f&3rd=MzA3MDU4NTYzMw==&scene=6#rd

该用户从未签到

3

主题

232

回帖

467

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
232
贡献
232
威望
0
发表于 2018-8-26 14:23:47 | 显示全部楼层
我也是坐沙发的

该用户从未签到

2

主题

242

回帖

486

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
242
贡献
242
威望
0
发表于 2018-12-13 12:15:36 | 显示全部楼层
我相信,爱可以排除万难。只是,万难之后,又有万难,这是我更相信的。',

该用户从未签到

0

主题

265

回帖

530

积分

高级魔扣

Rank: 4

魔扣币
265
贡献
265
威望
0
发表于 2018-12-17 21:41:14 | 显示全部楼层
“归属感”是你强烈地想和他在一起,“安全感”是你觉得他强烈地想和你在一起。',

该用户从未签到

2

主题

246

回帖

494

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
246
贡献
246
威望
0
发表于 2019-5-9 14:57:49 来自手机 | 显示全部楼层
月光很美,比不上朋友的安慰;星星很美,比不上朋友的点缀;夜空很美,比不上友情的珍贵。愿您天天有快乐相伴,夜夜有好梦相随。天气变凉,魔扣源码论坛愿您安康,;愿心情飞扬

该用户从未签到

0

主题

264

回帖

528

积分

高级魔扣

Rank: 4

魔扣币
264
贡献
264
威望
0
发表于 2019-9-16 13:47:44 | 显示全部楼层
大人,此事必有蹊跷!

该用户从未签到

1

主题

268

回帖

537

积分

高级魔扣

Rank: 4

魔扣币
268
贡献
268
威望
0
发表于 2019-11-10 16:34:34 来自手机 | 显示全部楼层
传说中的沙发???哇卡卡

该用户从未签到

2

主题

246

回帖

495

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
247
贡献
247
威望
0
发表于 2020-5-1 19:39:46 | 显示全部楼层
当一个人最看重的东西是面子,那他为此失去的一定很多。',

该用户从未签到

4

主题

259

回帖

524

积分

高级魔扣

Rank: 4

魔扣币
261
贡献
261
威望
0
发表于 2020-6-1 19:10:12 来自手机 | 显示全部楼层
生活真他妈好玩,魔扣源码论坛,因为生活老他妈玩我。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 联系我们
  • 新浪微博 :
  • 在线客服 :魔扣科技 
  • 源码QQ群 :魔扣源码论坛官方总群
  • 联系邮箱 :charlin#morko.net
  • 微信扫一扫
快速回复 返回顶部 返回列表