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

編程語言中一些令人抓狂的規則

開發 開發工具 后端
程序員使用的是別人開發出來的編程語言和操作系統以及各種開發工具。一些語言開發和系統設計行業里的前輩以前所作出的決定在那個時候可能是很有意義的,不過在現在看來可能是多此一舉。

許多年前在編程語言設計和操作系統設計上的選擇可能當時看起來無關緊要。但是,這些遠古的決定至今仍然繼續困擾著軟件開發者。

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

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

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

1. Unix隱藏點文件

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

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

[[110258]] 

引用

“在之前的40年里,因為這一個小小的走捷徑而導致多少bug的出現?浪費了多少CPU循環?出現了多少人為失誤?所以我們應該記住:下次如果你還想在代碼里抄近路的話,一定要想想之前的教訓。”——Rob Pike

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

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

[[110259]]  

可是最后結合JavaScript的弱類型發現,使用+操作符通常會導致數值變量的連接,而不是數值的加減。其他的編程語言同樣選擇了不同的連接操作符,或者是安排專門的程序員嚴格輸入變量,以防混淆。

引用

“當我第一次學習JavaScript的時候,真的把我害慘了,因為前后不一致的的輸入行為使得很難在最后的檢查過程中發現bug。”——Chris Dutrow

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

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

 

[[110260]] 

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

引用

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

4. Python使用縮進表示塊

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

[[110261]] 

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

引用

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

#p#

5. Tony Hoare發明了空引用

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

[[110262]] 

編譯器是不會抱怨空指針的,但是想要廢棄一個可能會導致運行時錯誤或系統崩潰的引用的話,那么程序員必須設法做一些防御措施或者是調試工作。

引用

“我認為它是一個導致數十億美元損失的錯誤。”——Tony Hoare

6. JavaScript自動插入分號

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

[[110263]]  

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

引用

“這一功能著實讓開發者的工作出現了一點混亂,尤其是當你為一個生產環境壓縮代碼的時候。”——Mike Nelson

7. 如何表示日期

在如何表示日期這一問題上已經產生過很多比較有效地選擇方案了,例如只使用兩個數字或者是更少的數字來表示年份,可以被四整除的年份是閏年,或者是像Unix系統那樣提供的基本時間服務是國際標準時間公元1970年1月1日00:00:00以來經過的分秒,這種秒數是以數據類型time_t表示的。我們稱它們為日歷時間,日歷時間包括時間和日期。

[[110264]]  

只使用兩個數字或者是更少的數字來表示年份就會導致眾所周知的Y2K問題,計算閏年的過程中也是會出現很多bug,有些系統照樣會出現Y2K38 問題。

引用

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

英文原文:InfoWorld

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

責任編輯:林師授 來源: ITEYE
相關推薦

2018-03-15 09:23:24

編程語言程序員Java

2022-04-12 11:38:06

C語言全局變量

2020-02-27 21:37:33

物聯網IOT物聯網應用

2017-05-23 14:33:46

簡歷求職前端開發

2014-12-26 09:56:50

編程語言

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實用小代碼iOS開發

2011-07-19 18:11:09

iPhone 開發

2022-05-24 12:50:58

Pandas索引代碼

2014-08-08 09:14:43

Linux瀏覽器

2018-09-11 16:15:36

Vue高版本前端

2011-03-16 10:40:42

JavaEEJ2EE

2023-11-13 07:54:54

.NET Core開源框架

2020-11-09 16:00:26

LinuxLinux內核

2018-08-10 10:45:35

編程語言Python程序員

2020-10-12 08:03:51

Go語言編程

2023-07-11 08:22:09

2023-02-13 14:37:46

ChatGPT人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美在线观看 | 欧美日韩综合视频 | 96国产精品久久久久aⅴ四区 | 999精品视频 | 欧美在线一区二区三区 | av黄色在线观看 | 日韩在线播放视频 | 91看片网站 | 国产一区二区三区欧美 | 午夜精品一区二区三区在线观看 | 成人精品一区二区三区 | 六月色婷 | www.久久久久久久久 | 亚洲成人免费视频 | 久久中文字幕一区 | 欧美视频xxx| 日韩精品一二三区 | 亚洲精品一区二区 | 久久久久久久久久久久久久国产 | 中文字幕在线一 | 国产免费一区二区三区 | 成人国产精品色哟哟 | 欧美中文字幕一区 | 国产精品久久久久久久久动漫 | 精品一区二区在线观看 | 日韩三级 | 欧美日韩一区在线 | 久久r免费视频 | 伊人狠狠| 操操操av | 日本特黄a级高清免费大片 特黄色一级毛片 | 日本大片在线播放 | 成人黄色电影在线播放 | 久久久久国产 | 日本一区二区三区免费观看 | 天天操天天操 | 久久伊人亚洲 | 国产精品mv在线观看 | 老牛影视av一区二区在线观看 | 免费视频一区二区 | 日韩欧美三区 |