偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

另類趣味:令程序員費解的10個編程語言特性

移動開發(fā)
每種語言都有自己的獨到之處,或奇特的語法,或不常見的函數(shù),或非標準的執(zhí)行方式。因此,不論新丁還是老手,看著某個特性會突然醉了。文中總結(jié)了10個經(jīng)常被提及的“奇異”特性。

每種語言都有自己的獨到之處,或奇特的語法,或不常見的函數(shù),或非標準的執(zhí)行方式。因此,不論新丁還是老手,看著某個特性會突然醉了。文中總結(jié)了10個經(jīng)常被提及的“奇異”特性。

1. Javascript: + 是一個連接符

問題描述:

在JS中,+ 號用在數(shù)字間,可以用作常規(guī)加法;但如果遇上字符,又可作為字符連接符。例如:’1’+ 1的結(jié)果是11。

成因分析:

根本性原因是JS屬于弱類型語言。比方說Python,同樣地使用+ 號作為字符連接符,但由于它是強類型語言,一旦發(fā)現(xiàn)一個字符與一個整數(shù)進行相加,它會提示這是個錯誤操作。

網(wǎng)友們的看法:

“問題在于這是個無法預(yù)料的強制性靜默轉(zhuǎn)換,很容易就忽略了。”匿名

“JS應(yīng)該就該情況作異常拋出處理。” crgwbr

“用+來進行字符連接簡直是個噩夢。” Matteo Riva

2. Perl:模塊必須返回TRUE值

問題描述:

絕大多數(shù)情況下,Perl模塊在結(jié)束時候,都必須以1;語句來結(jié)尾,否則,如果最后一條語句的返回值不是TRUE,系統(tǒng)就會報錯了。

成因分析:

Perl模塊中包含了初始代碼和子程序。當模塊文件被載入時,Perl會根據(jù)是否返回TRUE來判斷代碼是否成功執(zhí)行。即使沒有初始代碼,Perl仍然期望最后的語句需返回TRUE,否則會報錯。

網(wǎng)友們的看法:

“這個通常讓我有不安的感覺。” Drew Hall

“這是最無實用價值的用法了。”Schwern

3. C/C++:三字母詞用法

問題描述:

舉例來說,系統(tǒng)看到??!會把它自動轉(zhuǎn)為|,看到??(會轉(zhuǎn)為[。這很容會引起造成意想不到的結(jié)果,并且會大大降低代碼的可讀性。

成因分析:

早期進行編程時,鍵盤上還不能直接打出某些特殊字符,例如大括號。因此用了這種間接的方法。

網(wǎng)友們的看法:

“博學(xué)如谷歌,也一定看不懂什么是??!??!” Isaac

“自1977年有了三字母詞,C就變得晦澀難懂了。”Martin Beckett

4. PHP:大小寫敏感處理

問題描述:

PHP對大小寫處理比較混亂,有些地方區(qū)分,有些地方不區(qū)分。例如:變量名,常量名區(qū)分;函數(shù)名,方法名,類名不區(qū)分。

成因分析:

很可能是PHP從CGI腳本集發(fā)展成成熟編程語言過程中出現(xiàn)的人工產(chǎn)品。

網(wǎng)友們的看法:

“這是為什么PHP程序員習(xí)慣用下劃線進行函數(shù)命名,而不是采取駝峰命名法的原因。”paperstreet7

“在PHP中,一切皆有可能!”Grzechooo

5. Ruby:0作為真值

問題描述:

在Ruby中,0值等同于TRUE值。這對有C,Python基礎(chǔ)的程序員來說不可不謂是一場噩夢。

成因分析:

只有布爾值FALSE和nil等價于FALSE,其余的都等同于TRUE。0與1,2,3等都會被相同對待。

網(wǎng)友們的看法:

“這簡直是讓人抓狂,雖然初衷是善意的。”Chris Lutz

“0==true!我這個C語言腦袋都快崩潰了!”Kenny

6. Python:以空格數(shù)進行層次劃分

問題描述:

不同于采用關(guān)鍵字或標點符,PY中采用縮進層級來進行層次劃分,以明確每一行代碼的位置。不正確的空格數(shù)(或空格和換位符數(shù)不一致)都可能造成程序報錯。

成因分析:

PY作者的意圖是希望代碼更為可讀,減少不必要的輸入,并希望程序員本身應(yīng)該承擔(dān)起維護代碼清晰度的責(zé)任。

網(wǎng)友們的看法:

“由衷地說,這是使我對PY敬而遠之的根本原因。”wazoox

“如果我們真的需要類似的強制機制,我們是不是真的太懶了!”Joris Meys

7. C:數(shù)組索引工作模式等同于指針

問題描述:

在C中,a[i]和i[a]是可以互換的,兩個寫法都能得出一樣的結(jié)果。

成因分析:

在C中,對內(nèi)存塊而言,數(shù)組與指針是無差別的,就是說:

a[i] = *(a + i) = *(i + a) =i[a]。

網(wǎng)友們的看法:

“在C語言混亂代碼比賽中,這毫無價值可言。”Confusion

“我想這正正揭露了C語言的核心,指針和更直接地與內(nèi)存打交道。”Michael Neale

8. Perl’s:預(yù)定義變量

問題描述:

Perl有一份很長很長的特殊變量列表,里面的名字都是十分繁雜的(盡管有對應(yīng)的長英文單詞)。因此,除非是Perl資深開發(fā)人員,否則反復(fù)翻閱Perl文檔是常有的事。

成因分析:

這些變量都有不同的含義,例如:進程ID($$),錯誤信息($@),正則表達式匹配($^R)。

網(wǎng)友們的看法:

“十分令人懊惱!”MatrixFrog

“對精簡型開發(fā)者可能是福音。”niXar

“這些變量的問題是:無法通過谷歌查找得到!” malvim

9. JavaScript:自動分號插入

問題描述:

JS使用分號作為語句結(jié)束的標志,并且會自行插入,即使是代碼斷行的情況。因此會常常導(dǎo)致錯誤的出現(xiàn)。

成因分析:

自動化的本意是為了帶來便利,特別是對新手來說。

網(wǎng)友們的看法:

“如果我們設(shè)計語言的特性時,老把用戶看成是傻瓜,那是會出問題的。”Rob Van Dam

“自動分號插入是JS最讓人頭疼的地方之一。” fennec

10. Java:自動裝箱(autoboxing)與Integer緩存

問題描述:

Java會自動把基礎(chǔ)類型數(shù)據(jù)轉(zhuǎn)為對象(自動裝箱),例如把int轉(zhuǎn)為一個Integer對象。同時默認地,緩存Integer對象的取值為 -128到127。這樣的話,在使用==來比較兩個相同取值Integer對象時會出現(xiàn)問題(在-128和127之內(nèi)是TRUE,其余的是FALSE)

成因分析:

自動裝箱機制減少了代碼輸入量,同時Integer緩存提升了處理速度。

網(wǎng)友們的看法:

“還好我只是一名C#程序員。” Will

“這不算什么錯誤,反而給了我們一個使用原始類型(如:booleans)進行數(shù)字處理的理由。”RaviWallau

責(zé)任編輯:閆佳明 來源: techug
相關(guān)推薦

2015-11-12 10:23:26

老程序員編程策略

2015-10-28 09:33:31

程序員崩潰編程語言

2015-06-12 11:22:52

程序員程序員跳槽

2019-07-25 07:42:35

程序員編程語言Python

2014-03-06 11:08:40

自學(xué)編程程序員

2020-10-05 21:13:37

程序員技能開發(fā)者

2009-02-27 09:25:28

編程語言程序員C#

2009-07-28 08:28:15

2014-10-30 09:38:37

程序員萬圣節(jié)

2015-01-14 10:17:28

高級程序員

2012-01-11 13:37:37

程序員

2015-06-10 10:43:07

2013-08-23 11:06:34

編程語言

2013-12-30 10:08:13

2021-10-26 16:25:25

編程語言JavaPython

2009-08-31 15:34:30

Java虛擬機

2014-03-03 15:32:32

程序員資源

2014-12-22 09:59:05

程序員

2012-03-08 09:17:14

程序員

2014-05-13 13:09:23

Python程序員
點贊
收藏

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