1.3 關于“梗”
本節介紹一些“看似奇怪”的小知識,可能讀者有所耳聞,一起來看看這些開玩笑的話中都蘊藏著哪些計算機技術。
1.PHP是最好的語言
“PHP是最好的語言”這個梗,出自PHP語言的函數名,雖然現在使用PHP做開發的人較多,用PHP語言開發的網站也數不勝數,但從本質上來看,PHP在有些方面十分令人費解,比如PHP的核心函數命名規則很不一致,有“strptime”這樣的類C函數的名字,有“xml_set_external_entity_ref_handler”這樣十分長卻規范的命名,還有“nl2br”這樣的簡寫方式命名,也有“stripcslashes”這樣奇怪的長名。后來有人發現,當PHP還是只有不到100個函數的小型語言的時候,其作者決定用函數名的字符數量來作為函數的hash。由于這個“神奇”的決定,PHP的函數名長度要盡可能地長短有致、均勻分布,這種影響也一直持續至今。
2.“錕斤拷”“燙燙燙”“屯屯屯”與“锘锘锘”
先來看一首小詩:
手持兩把錕斤拷,
口中疾呼燙燙燙。
腳踏千朵屯屯屯,
笑看萬物锘锘锘。
這首詩可能怪異、令人費解,從技術層面講,它的含義如下。
錕斤拷:這是一個GBK字符集和Unicode字符集之間的轉換問題,有一些字符用Unicode無法表示,Unicode就會用一個占位符來表示這些文字,即“U+FFFD REPLACEMENT CHARACTER”。那么U+FFFD用UTF-8編碼出來,多次重復,然后放到GBK等環境中顯示的話,一個漢字2個字節,最終的結果就是:錕(0xEFBF),斤(0xBDEF),拷(0xBFBD)。
錕斤拷也曾出現在新聞中:
神舟十號11日17時38分發射,三位航天員公布鏈接指向神奇的“錕斤拷錕斤拷錕”,零時51分,恢復正常。
“燙燙燙”“屯屯屯”與“锘锘锘”:這些其實都是輸出的亂碼,若想輸出一個字符串,卻又忘記在字符串后加上0,那么計算機在輸出時,就會超過字符串長度,而開發人員申請的內存后面經常被填充為“CCCCCCC…”,這樣輸出結果就成了著名的“燙燙燙”。