各程式語言都有獨特甚至反直覺的特性。IEEE 評選的 10 大「奇異」語言特性,讓新手驚呼、老手嘆息。
'1' + 1 === '11'。弱類型導致隱式轉換,Python 同樣用 + 連接字串但強類型會報錯。
模組結尾必須 1;,否則載入失敗。Perl 檢查回傳值判斷執行是否成功。
??! → |,??( → [。早期鍵盤缺特殊符號的歷史遺留,極大降低可讀性。
變數、常數區分大小寫;函數、方法、類名不區分。CGI 演變產物,導致命名風格分歧。
只有 false 和 nil 為假,0、""、[] 皆為真。C/Python 程式員最易踩坑。
以空白字元層級劃分程式區塊,錯誤縮進直接報錯。設計初衷是強制可讀性,爭議極大。
a[i] == i[a] 因 a[i] = *(a+i) = *(i+a) = i[a]。揭示 C 語言指標與記憶體本質。
$$ (PID)、$@ (錯誤)、$^R (正則匹配)... 符號晦澀,難搜尋,資深開發者福音、新手噩夢。
換行處自動補分號,常導致難以預期的行為。設計為照顧新手,實則成經典坑點。
Integer a = 127; Integer b = 127; a == b → true
Integer c = 128; Integer d = 128; c == d → false
快取範圍 -128~127,== 比較引用而非值,須用 .equals()。
理解這些特性背後的歷史與權衡,能寫出更健壯的跨語言程式碼。