中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

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

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

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

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

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

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

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

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

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

  引用

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

  2. JavaScript使用“+”來連接字符串

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

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

  引用

  “當(dāng)我第一次學(xué)習(xí)JavaScript的時候,真的把我害慘了,因為前后不一致的的輸入行為使得很難在最后的檢查過程中發(fā)現(xiàn)bug。”——Chris Dutrow

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

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

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

  引用

  “回想起來,我覺得這是一個可怕的決定,但是換成是我的話,當(dāng)時可能會做出同樣的舉動。”——Dave Lindbergh

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

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

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

  引用

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

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

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

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

  引用

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

  6. JavaScript自動插入分號

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

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

  引用

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

  7. 如何表示日期

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

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

  引用

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

  英文原文:InfoWorld

標(biāo)簽: 安全 代碼 互聯(lián)網(wǎng) 開發(fā)者

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:當(dāng)編程語言都變成女孩子(二)

下一篇:世界上的程序語言已這么豐富 為什么還不夠?