記得有句豪氣干雲話是這麼講的:「給我一個支點,我就能舉起全世界!」然而在軟體工程師之間,流傳著另一句相似的話:「給我sample code,我就給你全世界!」

  牛奶為了更快找到可用的sample code(範例程式),就使用Google Custom Search Engine弄了一個專門找sample code的搜尋引擎,網址是:

  http://www.google.com.tw/coop/cse?cx=011338480416250620479:tuknidsuu64

  目前設定可以找C/C++/C#/Java/VB/PHP/SQL/Linux方面的東西。基於「好東西要與好朋友分享」的心情,既然做出來了,就大家一起來用吧!有錯誤或是有改善的建議都要跟我說唷!


  其實上面「給你全世界」那句話還算是客氣了呢!牛奶就曾講過更囂張的話:「即使是沒學過的程式語言,也還是能夠完成debug工作」。為什麼牛奶有自信講出這麼誇大的話呢?這不是牛奶囂張,而是這句話有它的道理在,這是我們老祖宗的智慧呀。

  孫子兵法作戰篇提到:「善用兵者,役不再籍,糧不三載;取用於國,因糧於敵,故軍食可足也」。意思是武器裝備由國內供應,糧草則應設法從敵人那裡奪取,這樣軍隊的糧草就可以足夠了。持久且長途運送糧草,會使國內經濟困乏,不利於戰爭。即使打勝了戰爭,國家人民也得不到實質的利益。

  而debug的工作也是一樣的道理。程式語言那麼多,怎麼可能每一種都花時間去學,只要用心學一兩種,達到精通的程度就足夠了。當遇到自己不會的程式語言時,則要有辦法從現成的別人寫出的該語言的程式中,擷取出有用的片段來兜出自己的程式。


  有時原本的工作才進行到一半還尚未完成,就從天上掉下了一沱「屎」,要接別人的爛攤子,進行程式維護的工作。

  通常遇到這種情形時,老闆一定會說:「這個case很趕,有多趕?比趕羚羊還趕!」更慘的是,這種爛攤子會有很高的機率在你打開程式檔的那一刻愣住,赫然發現它所用的程式語言是自己所「沒學過」的!

  在這種情況下要提醒自己一件事:老闆並不是要自己去學新的程式語言,只是要debug找出問題、修正問題,而debug並不見得需要學會那種語言呢。想要學習一種程式語言,非得花上三個月、半年,甚至更久,但是這個比趕羚羊還趕的case可沒有那麼多的時間可做。這時若為了這突然冒出來的爛攤子去學習一種新的語言,不但爛攤子無法收拾,連自己原本做到一半的case也會完蛋的!

  牛奶就完成過不少這樣的任務,還包含組合語言的程式呢。只不過工作雖然完成了,到現在牛奶還是不會寫組合語言呀!


  不同程式語言的「語法」、「函式庫」雖然都不一樣,但是原理都是相通的。優秀的工程師需要有兩種能力:首先,要能夠從「看不懂卻一再重複」的語法和函式名稱中,猜出程式大致的架構、行為,並從99%不斷重複卻看不懂的程式碼中,找出那1%仍然看不懂但是卻和其他99%程式碼長得不一樣的地方,這可能就是那一粒壞了一鍋粥的老鼠屎。

  第二種能力在於:發現那1%搞怪的程式碼之後,要有辦法從99%正確的程式碼中,找到可以直接搬過來應用的程式片段。這是因為爛攤子雖然爛,其實有99%都是沒問題的,要用這99%不爛的程式碼之中和作怪的1%老鼠屎比較像的部份當範本,依樣畫葫蘆把有問題的老鼠屎修正掉。

  所以最後很可能還是沒學會那種程式語言,可是bug老早就修掉了。只是這過程也不輕鬆就是了。

  由此也可以知道,程式設計師並沒有多了不起,就是和水電工一樣是精通某一項技術作業員罷了!不過話說回來,即便是教授也同樣只是精通某一項技術的專家啊!只不過各人的專業領域不同有所區別。


更多「程式設計」文章:

  最具殺傷力的小BUG

  最尷尬的『不恰當』,程式設計經驗談

  門面佈置的學問-UI開發

  寫程式會從哪邊下手? (問券調查)

  寫程式到底需不需要懂數學?

更多「物件導向」文章:

  繼承是父子關係?才怪! 物件導向初學者應該要知道的事情(四)

  到底誰該去繼承誰? 物件導向初學者應該要知道的事情(三)

  為什麼我找出來的物件都是UI物件? 物件導向初學者應該要知道的事情(二)

  要如何找出物件呢? 物件導向初學者應該要知道的事情(一)

  [預告]: 物件導向初學者應該要知道的事情

arrow
arrow

    牛奶 發表在 痞客邦 留言(0) 人氣()