一定要理解程序員 程序員的壞習(xí)慣
如果你是一個(gè)程序員,或者你就讀計(jì)算機(jī)相關(guān)專業(yè),那么你應(yīng)該能理解下面這些詭異的小習(xí)慣是怎么養(yǎng)成的,或者你本身就有著其中的某些習(xí)慣:
0.程序員數(shù)數(shù)會(huì)從0開始數(shù)起.
例:程序員吵架的時(shí)候會(huì)說:“我數(shù)三下,你再不閉嘴我就不客氣了!零!一!二!”或者列清單的時(shí)候編號會(huì)從0.開始寫.
因:array[0]是數(shù)組的***個(gè)元素.
評:這個(gè)習(xí)慣的養(yǎng)成是一個(gè)艱難的過程.多少次的越界,多少次的循環(huán)次數(shù)錯(cuò)誤讓我們深深的記住了從0開始.
1.程序員用肯定和否定回答選擇性的問題.
例:問“您想喝咖啡還是喝茶?”程序員答:“嗯.”
因:當(dāng)條件或||有一個(gè)子句值為真,則整個(gè)語句值為真.
評:這個(gè)習(xí)慣夸張了一點(diǎn),但這的確是程序員思維方式的通病,用計(jì)算機(jī)的處理邏輯處理人類問題.當(dāng)然這樣的回答顯然是存在編程錯(cuò)誤的,因?yàn)閷τ谶@個(gè)問題他錯(cuò)誤的返回了布爾型的值.雖然高度懷疑有沒有人關(guān)心這種回答的結(jié)果是怎樣,還是給出一個(gè)答案.如果真的在程序的世界里,服務(wù)員會(huì)優(yōu)先考慮給你咖啡,如果沒有咖啡了,才會(huì)端茶給你.
2.程序員普遍患有或曾經(jīng)患有分號結(jié)尾綜合癥;
例:比如這幾行;
因:大部分程序,特別是多數(shù)程序員的啟蒙編程語言C語言是用分號結(jié)尾語句的;
評:換行之前習(xí)慣用分號結(jié)尾,這是程序員專屬的壞習(xí)慣.還記得編譯報(bào)的各種詭異的錯(cuò)***原因總是少了那一個(gè)小小的”;”嗎?這就是這個(gè)壞習(xí)慣的成因.據(jù)說分號結(jié)尾是有典故的,因?yàn)殒I盤上的分號正好在右手小拇指的位置,比起句號之類有著得天獨(dú)厚的地理優(yōu)勢.當(dāng)然也有不需要分號結(jié)尾的編程語言(比如Ruby還有Python),剛用起來會(huì)因?yàn)闆]有分號結(jié)尾而格外糾結(jié).
3.程序員對”語言”的概念和普通人有差.
例:問:“你都會(huì)哪些語言?”普通人:“我會(huì)漢語和英語,還會(huì)一點(diǎn)點(diǎn)法語.”程序員:“我會(huì)C語言,C++和Java,還會(huì)一點(diǎn)點(diǎn)Ruby.”
因:程序員的世界里沒有母語和外語,只有編程語言.
評:說真的,程序語言的語法學(xué)起來比外語更容易,拿到一個(gè)用沒學(xué)過的語言寫的程序,你多少可以看懂部分程序.程序語言沒有國界,是各國程序員交流***的橋梁.
4.程序員格格外外的厭惡括號/引號不配對的情形.
例:看到這樣的內(nèi)容(舉個(gè)簡單的例子(我知道你懂的),你能表示”我很淡定我不抓狂嗎?
因:各種不配對問題會(huì)導(dǎo)致編譯錯(cuò)誤.
評:掃視代碼,對不配對的情況異常敏感,瞥一眼就能發(fā)現(xiàn)哪里少了個(gè)右括號.這種癥狀在使用那些帶自動(dòng)補(bǔ)全功能的開發(fā)環(huán)境時(shí)變得更為糾結(jié).
5.程序員認(rèn)為千(k)==1024.
例:程序員換算表:1km==1024m,1kg==1024g.
因:成因很曲折計(jì)算機(jī)是二進(jìn)制的世界->1024是2的10次方->英語里用kilo一詞來表示->kilo翻譯成中文是”千”,比如千米,千克.
評:也許一般人會(huì)認(rèn)為500,1000是很整的數(shù),但程序員會(huì)覺得512,1024是很整的數(shù).不要奇怪,如果128,256,512這種形式看著不夠整,幫你轉(zhuǎn)換成二進(jìn)制:10000000,100000000,1000000000…
6.程序員慣用==來表示相等的意思.
例:見5.
因:在程序語言中,“=”是賦值,“==”才用來判斷二者是否相等.
評:單等和雙等的區(qū)別是程序入門必修課,也是老師愛考的考點(diǎn).如果在C語言if語句的判定條件里寫了個(gè)單等,編譯能通過,結(jié)果卻往往不對,夠一個(gè)新手查上一陣子的.當(dāng)然目前的語言大都考慮到這一點(diǎn),防止了這類的誤寫,但是單等和雙等的差異已經(jīng)深入每個(gè)程序員的內(nèi)心.
7.程序員使用”//”表示”請無視這一行文字”.
例:餐廳中.程序員A:“我吃魚香肉絲蓋飯,你吃什么?”
程序員B:“宮保雞丁蓋飯.”
程序員A在點(diǎn)菜單寫上:
魚香肉絲蓋飯1
宮保雞丁蓋飯1
程序員B:“我還是要牛肉面吧!”
程序員A更正點(diǎn)菜單:
魚香肉絲蓋飯1
//宮保雞丁蓋飯1
牛肉面1
因:程序中用”//”為代碼加上注釋,程序運(yùn)行時(shí)會(huì)無視掉”//”開頭的代碼行.
評:如果和一伙程序員在一起時(shí)被冷落了,可以抱怨一句”喂喂喂我是被注釋掉了嗎?”相信一向以幽默感豐富又有愛心著稱的程序員們會(huì)關(guān)注你的.
8.程序員有中文標(biāo)點(diǎn)恐懼癥.
例:如果你注意到了,這篇文章自始至終都在使用英文標(biāo)點(diǎn),這就是***的例子.
因:程序中的全部符號都嚴(yán)格需要是英文半角標(biāo)點(diǎn).
評:這個(gè)壞習(xí)慣是有中國特色的,中國程序員特有的.任何一名優(yōu)秀的我國程序員都應(yīng)該可以作到區(qū)別中文標(biāo)點(diǎn)和英文標(biāo)點(diǎn).比如,和,還有’和‘.真的,當(dāng)年初學(xué)編程的時(shí)候,諸如“error C2018:unknown character’0xa3′”的錯(cuò)誤看得還不夠多嗎!
就是這樣一群人,如果你慢吞吞的用電腦他們會(huì)急躁的搶過鍵盤熟練的使用各種快捷鍵,他們會(huì)對著小孩子講計(jì)算機(jī)的三原色是紅綠藍(lán)而不是紅黃藍(lán),他們描述大小距離更偏向于以像素作單位,陪女朋友看電影看到電影院座位上稀稀落落的人就想做磁盤碎片整理…抱怨歸抱怨,這不也正是他們的可愛之處嗎!
【編輯推薦】