成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編程語(yǔ)言中一些令人抓狂的規(guī)則

開(kāi)發(fā) 開(kāi)發(fā)工具 后端
程序員使用的是別人開(kāi)發(fā)出來(lái)的編程語(yǔ)言和操作系統(tǒng)以及各種開(kāi)發(fā)工具。一些語(yǔ)言開(kāi)發(fā)和系統(tǒng)設(shè)計(jì)行業(yè)里的前輩以前所作出的決定在那個(gè)時(shí)候可能是很有意義的,不過(guò)在現(xiàn)在看來(lái)可能是多此一舉。

許多年前在編程語(yǔ)言設(shè)計(jì)和操作系統(tǒng)設(shè)計(jì)上的選擇可能當(dāng)時(shí)看起來(lái)無(wú)關(guān)緊要。但是,這些遠(yuǎn)古的決定至今仍然繼續(xù)困擾著軟件開(kāi)發(fā)者。

程序員使用的是別人開(kāi)發(fā)出來(lái)的編程語(yǔ)言和操作系統(tǒng)以及各種開(kāi)發(fā)工具。一些語(yǔ)言開(kāi)發(fā)和系統(tǒng)設(shè)計(jì)行業(yè)里的前輩以前所作出的決定在那個(gè)時(shí)候可能是很有意義的,不過(guò)在現(xiàn)在看來(lái)可能是多此一舉。

舉例而言,在2009年的時(shí)候,互聯(lián)網(wǎng)創(chuàng)始人蒂姆·伯納斯-李就承認(rèn),互聯(lián)網(wǎng)網(wǎng)址中http:后面的兩條斜線//其實(shí)并無(wú)必要,他為這帶來(lái)的不便致歉。蒂姆以幽默的環(huán)保角度道歉說(shuō):真不知道這兩條斜線浪費(fèi)了多少時(shí)間、打印墨水和紙張。

除此之外,對(duì)于每天都要寫(xiě)代碼的軟件開(kāi)發(fā)者來(lái)說(shuō),前輩們當(dāng)時(shí)做出的令后人覺(jué)得蛋疼的決定還遠(yuǎn)不止這些。接下來(lái)就介紹一下在編程語(yǔ)言和操作系統(tǒng)里的那些讓開(kāi)發(fā)者頭疼的過(guò)時(shí)的選擇。

1. Unix隱藏點(diǎn)文件

早期的Unix操作系統(tǒng)就這樣設(shè)計(jì)過(guò):當(dāng)通過(guò)ls命令把目錄內(nèi)容列出來(lái)的時(shí)候,任何以 . 開(kāi)始的文件或目錄會(huì)在默認(rèn)情況下被隱藏起來(lái)。

從那時(shí)起,點(diǎn)文件經(jīng)常性的會(huì)被忽視掉,同時(shí)也成為惡意文件藏身的一種簡(jiǎn)單方法。

[[110258]] 

引用

“在之前的40年里,因?yàn)檫@一個(gè)小小的走捷徑而導(dǎo)致多少bug的出現(xiàn)?浪費(fèi)了多少CPU循環(huán)?出現(xiàn)了多少人為失誤?所以我們應(yīng)該記住:下次如果你還想在代碼里抄近路的話,一定要想想之前的教訓(xùn)。”——Rob Pike

2. JavaScript使用“+”來(lái)連接字符串

大約在20年前,當(dāng)Netscape首先開(kāi)發(fā)JavaScript的時(shí)候,他決定大量使用+操作符來(lái)連接字符串,主要是用在數(shù)字加法運(yùn)算和字符串連接這兩方面上。

[[110259]]  

可是最后結(jié)合JavaScript的弱類(lèi)型發(fā)現(xiàn),使用+操作符通常會(huì)導(dǎo)致數(shù)值變量的連接,而不是數(shù)值的加減。其他的編程語(yǔ)言同樣選擇了不同的連接操作符,或者是安排專(zhuān)門(mén)的程序員嚴(yán)格輸入變量,以防混淆。

引用

“當(dāng)我第一次學(xué)習(xí)JavaScript的時(shí)候,真的把我害慘了,因?yàn)榍昂蟛灰恢碌牡妮斎胄袨槭沟煤茈y在最后的檢查過(guò)程中發(fā)現(xiàn)bug。”——Chris Dutrow

3. 微軟選擇反斜杠作為路徑分隔符

在1983年的時(shí)候,微軟發(fā)布了MS-DOS 2.0,它包括了一個(gè)目錄層次結(jié)構(gòu),就像Unix。但是和Unix有所不同,Unix使用正斜杠(/)來(lái)分割目錄路徑,微軟使用了反斜杠(\),原因是,正斜杠已經(jīng)被用于表示命令行選項(xiàng),所以微軟選擇了反斜杠。
 

 

[[110260]] 

反斜杠在Unix和其他的例如 Perl 和 C 語(yǔ)言中主要是用來(lái)區(qū)分后后面緊跟著的字符,所以這給程序員帶來(lái)的痛苦就是要經(jīng)常在正斜杠和反斜杠之間來(lái)來(lái)回回的仔細(xì)的檢查,以免出錯(cuò)。

引用

“回想起來(lái),我覺(jué)得這是一個(gè)可怕的決定,但是換成是我的話,當(dāng)時(shí)可能會(huì)做出同樣的舉動(dòng)。”——Dave Lindbergh

4. Python使用縮進(jìn)表示塊

絕大多數(shù)編程語(yǔ)言使用明確的分隔符,例如用大括號(hào)來(lái)表示語(yǔ)句的分組,而 Python卻不是這樣的,它使用前導(dǎo)空白(空格和制表符)來(lái)表示哪一個(gè)塊屬于哪一行代碼。

[[110261]] 

事實(shí)上,只有那些經(jīng)驗(yàn)豐富的Python程序員比較傾向于使用這個(gè)功能,而對(duì)于那些新手或者是不常使用它的程序員來(lái)說(shuō),別提有多惱怒了,尤其是剪切代碼、粘貼代碼、改變平臺(tái),或者是重構(gòu)代碼的時(shí)候。

引用

“在兩個(gè)平臺(tái)之間轉(zhuǎn)換的過(guò)程中,你會(huì)發(fā)現(xiàn)這真是編程語(yǔ)言里的極品功能啊!”——Joe Zitzelberger

#p#

5. Tony Hoare發(fā)明了空引用

在1965的時(shí)候,英國(guó)著名計(jì)算機(jī)科學(xué)家Tony Hoare將空引用概念引入到ALGOL W語(yǔ)言里,以確保所有使用的引用內(nèi)容都是安全的。一直到現(xiàn)在,這一發(fā)明都存在于大部分編程語(yǔ)言里。

[[110262]] 

編譯器是不會(huì)抱怨空指針的,但是想要廢棄一個(gè)可能會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤或系統(tǒng)崩潰的引用的話,那么程序員必須設(shè)法做一些防御措施或者是調(diào)試工作。

引用

“我認(rèn)為它是一個(gè)導(dǎo)致數(shù)十億美元損失的錯(cuò)誤。”——Tony Hoare

6. JavaScript自動(dòng)插入分號(hào)

JavaScript中分號(hào)表示語(yǔ)句結(jié)束,但JavaScript會(huì)自動(dòng)的在它認(rèn)為合適的地方插入分號(hào)。例如在程序結(jié)尾,或者在緊接1個(gè)新行的return語(yǔ)句后面。

[[110263]]  

在某些情況下,return后面可能會(huì)有大括號(hào)和新的代碼塊,這種情況下,如果自動(dòng)插入分號(hào),就有可能導(dǎo)致語(yǔ)法錯(cuò)誤

引用

“這一功能著實(shí)讓開(kāi)發(fā)者的工作出現(xiàn)了一點(diǎn)混亂,尤其是當(dāng)你為一個(gè)生產(chǎn)環(huán)境壓縮代碼的時(shí)候。”——Mike Nelson

7. 如何表示日期

在如何表示日期這一問(wèn)題上已經(jīng)產(chǎn)生過(guò)很多比較有效地選擇方案了,例如只使用兩個(gè)數(shù)字或者是更少的數(shù)字來(lái)表示年份,可以被四整除的年份是閏年,或者是像Unix系統(tǒng)那樣提供的基本時(shí)間服務(wù)是國(guó)際標(biāo)準(zhǔn)時(shí)間公元1970年1月1日00:00:00以來(lái)經(jīng)過(guò)的分秒,這種秒數(shù)是以數(shù)據(jù)類(lèi)型time_t表示的。我們稱(chēng)它們?yōu)槿諝v時(shí)間,日歷時(shí)間包括時(shí)間和日期。

[[110264]]  

只使用兩個(gè)數(shù)字或者是更少的數(shù)字來(lái)表示年份就會(huì)導(dǎo)致眾所周知的Y2K問(wèn)題,計(jì)算閏年的過(guò)程中也是會(huì)出現(xiàn)很多bug,有些系統(tǒng)照樣會(huì)出現(xiàn)Y2K38 問(wèn)題。

引用

“在20世紀(jì)60年代的時(shí)候,內(nèi)存的價(jià)值大約為1美元/字節(jié)。所以,在60年代或者是在80年代的時(shí)候使用2個(gè)數(shù)字來(lái)表達(dá)年份是很合理的。可問(wèn)題就在于是穩(wěn)定而精確的軟件所運(yùn)行的時(shí)間完全超出了其預(yù)期設(shè)計(jì)的壽命時(shí)間。”——Fred Krampe

英文原文:InfoWorld

譯文鏈接:http://www.iteye.com/news/28872-7-long-ago-decisions-still-haunt-developers-today

責(zé)任編輯:林師授 來(lái)源: ITEYE
相關(guān)推薦

2018-03-15 09:23:24

編程語(yǔ)言程序員Java

2022-04-12 11:38:06

C語(yǔ)言全局變量

2020-02-27 21:37:33

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)應(yīng)用

2017-05-23 14:33:46

簡(jiǎn)歷求職前端開(kāi)發(fā)

2014-12-26 09:56:50

編程語(yǔ)言

2013-07-02 09:43:02

編程策略

2013-07-02 10:18:20

編程編程策略

2012-12-24 14:51:02

iOS

2013-03-29 09:03:59

iOS實(shí)用小代碼iOS開(kāi)發(fā)

2011-07-19 18:11:09

iPhone 開(kāi)發(fā)

2022-05-24 12:50:58

Pandas索引代碼

2018-09-11 16:15:36

Vue高版本前端

2014-08-08 09:14:43

Linux瀏覽器

2020-11-09 16:00:26

LinuxLinux內(nèi)核

2011-03-16 10:40:42

JavaEEJ2EE

2023-11-13 07:54:54

.NET Core開(kāi)源框架

2018-08-10 10:45:35

編程語(yǔ)言Python程序員

2020-10-12 08:03:51

Go語(yǔ)言編程

2023-07-11 08:22:09

2023-02-13 14:37:46

ChatGPT人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人精品一区 | 国产一区二区三区免费观看视频 | 91操操操 | 男女羞羞视频免费 | 亚洲精品美女视频 | 亚洲国产午夜 | 日本国产精品视频 | 国产在线www | 日韩欧美国产成人一区二区 | 亚洲一区二区三区在线 | 亚洲国产精品久久人人爱 | 欧美成人一区二区三区 | 91麻豆精品国产91久久久久久 | 精品一区二区三区不卡 | 成人免费大片黄在线播放 | 国产精品久久久久久久久久三级 | 日韩av免费在线观看 | 色偷偷噜噜噜亚洲男人 | 精品视频在线观看 | 第四色播日韩第一页 | 手机看片1 | 久久久久久久网 | 国产成人精品一区二区 | 一区二区视频在线 | 欧美日韩一区二区三区在线观看 | 日一日操一操 | 午夜精品一区二区三区在线播放 | 国产美女黄色片 | 91久久精品一区二区三区 | 香蕉大人久久国产成人av | 亚洲国产精品久久久久婷婷老年 | 日韩欧美在线观看 | 久草精品视频 | 久久精品国产99国产 | 国产乱码高清区二区三区在线 | 在线观看亚 | 精品国产欧美一区二区 | 国产综合视频 | 99久久精品免费看国产四区 | 亚洲一二三区在线观看 | 欧美精品一区二区三区视频 |