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

盤點編程語言中的十大奇怪特征

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

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

 每一種編程語言都有它獨自的“怪癖”,比如奇怪的語法、與眾不同的功能或是不符標準的實現(xiàn)方法。程序員也都有著自己的習(xí)慣,這就會使得很多程序員,甚至是一些經(jīng)驗豐富的開發(fā)者,在面對一門新的語言時都會感到抓狂。這些語言的特征有時會成為程序員的絆腳石,也有的時候程序員會慢慢理解這些特點,逐漸適應(yīng)和喜歡上它們。雖然所有語言的特征不計其數(shù),但程序員總是在討論的就沒有那么多了,我們在這篇文章中列出了最讓程序員瘋狂的編程語言中的10大奇怪特征。
 

1. JavaScript中‘+’是一個連接運算符

奇怪特征:在JavaScript中,‘+’是被重載的運算符,既是數(shù)字間的加號(+),又是字符串間的連接符。如果在一個‘+’運算中,其中一個操作數(shù)是字符串,JavaScript就會把另一個操作數(shù)轉(zhuǎn)換為字符串,此時‘+’是一個連接運算符,所以‘1’+ 1的結(jié)果就是‘11’。 
 

原因分析:這個問題的根本原因還是在于JavaScript是弱類型語言。但是像Python,雖然‘+’也是字符串間的連接運算符,但Python是強類型語言,當(dāng)程序員想要把字符串和整數(shù)加在一起時,程序是會報錯的。
 

 

2. Perl中一個類必須要返回TRUE

奇怪特征:Perl語言中的類很多時候都是以return 1語句結(jié)束的,因為如果類中最后的語句不返回一個TURE值,就會產(chǎn)生錯誤。
原因分析:Perl中的類可以包含一些初始化的工作和子程序。當(dāng)文件加載完畢,Perl通過尋找一個TRUE的返回值,開始檢查程序是否成功執(zhí)行。即使類中沒有初始化代碼部分,Perl也預(yù)期類的最后會返回TRUE值,否則拋出異常。
 

3. C和C++中的三字符組


\

奇怪特征:C和C++支持9個三字符組,它會在后續(xù)的處理前把三字符組轉(zhuǎn)換為一個單一的字符,比如‘??!’會被轉(zhuǎn)為/,這樣的結(jié)果就會使源代碼更加難讀,有時還會出現(xiàn)意外的問題。
原因分析:三字符組起初是用來幫助早期的C程序員打出一些在鍵盤中沒有的字符,比如花括號。
 

4. PHP中大小寫不敏感

奇怪特征:在很多編程語言中的標識符都是大小寫敏感的,但在PHP的函數(shù)和類名中,大小寫是不敏感的。這還好,但最讓程序員困惑的是PHP的變量名、常量和類屬性卻是大小寫敏感的。
原因分析:最有可能的是,PHP是由CGI腳本逐步發(fā)展成熟的編程語言。
 

5. Ruby中的0表示TURE

奇怪特征:在Ruby中,0值代表TRUE,這和C、Python等其他語言是完全相反的,在這些語言中0代表的是FALSE,這也讓很多新學(xué)習(xí)Ruby的開發(fā)者大為困惑。
原因分析:Ruby當(dāng)中只有bool值FALSE和nil等于FALSE,其它所有的都是TRUE,0就和其他的數(shù)字是一樣的。
 

6. 在Python中用空格來分“塊”

奇怪特征:既不使用標點符號,也不使用關(guān)鍵字,Python使用獨特的縮進級別來判斷某一行代碼是屬于哪部分的。錯誤數(shù)量的空格或混用了空格和Tab鍵,都會產(chǎn)生錯誤。
原因分析:這可能和Python為了產(chǎn)生可讀性更好的代碼,減少打字有關(guān),而且現(xiàn)在很多的代碼編輯器都是支持自動縮進的。
 

7. C語言中數(shù)組下標就像是在做指針運算

奇怪特征:C語言中的指針,除了把i當(dāng)做數(shù)組a中的下標,表示為a[i],C還允許把同樣的元素表示為i[a]。
原因分析:C語言中,數(shù)組就像是內(nèi)存中的指針,所以有a[i] = *(a+i) = *(i+a) = i[a]。
 

8. Perl中預(yù)先定義的變量

奇怪特征:Perl有著一長串的特殊變量,它們都有著容易混淆的名字。對于那些非Perl專家,他們都需要常常查詢Perl文檔才能明白這些代碼的含義。
原因分析:這些變量通常都是在提供一些程序執(zhí)行方面的信息,比如進程ID($$),錯誤消息([email protected]),正則表達式的匹配($^R)。
 

9. JavaScript自動插入分號

\
奇怪特征:
JavaScript中把使用分號作為一個語句的結(jié)束只是當(dāng)做一種選擇,是因為它會自動插入分號,比如在換行符后。但這通常會在沒有異常拋出時產(chǎn)生錯誤。


原因分析:插入分號是為了方便,讓程序員,尤其是新手程序員覺得JavaScript的語法非常容易。
 

10. Java中有Integer參與的類型轉(zhuǎn)換

奇怪特征:Java會自動把原始類型轉(zhuǎn)換為對象,比如把int類型轉(zhuǎn)為Integer對象,默認Integer對象的值是從-128到127。這在使用‘==’比較兩個有相同值的Integer時會產(chǎn)生問題(只有在-128-127時返回TRUE,其余返回FALSE)。
原因分析:這樣轉(zhuǎn)換會減少程序員的代碼量,提高性能。


原文:http://www.itworld.com/article/2823746/cloud-computing/163234-Head-scratchers-10-confounding-programming-language-features.html
譯文:http://www.php100.com/html/dujia/2014/1230/8220.html
(翻譯:PHP100_Zeroing)

標簽: 代碼 腳本 開發(fā)者

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

上一篇:TIOBE 2015年1月編程語言排行榜:JavaScript成大贏家

下一篇:著名黑客雷蒙評價最重要的幾種編程語言