奇易雲端車牌辨識 - 程設之道

程設之道



幾年前在一個網站上看到一篇文章,標題是:「程式的"道"到底是怎樣?我想認識比我更強的人」 發文日期:3/17/2004 1:09:09 PM。這篇文章的發文者,點出自己「最強」的地方,很以為傲的燃起戰火,然後消聲匿跡。很多看到這篇文章的人跳出來批判他。我也很想,但我沒他那麼厲害, 所以後來還是不敢貼文。我很佩服那位挑起戰火的人,因為他拿了一個幼稚園的技能來炫燿自己的偉大,難怪有一百多篇留言攻擊他。

我也是一個程式設計人員,為什麼我說他炫燿的成就,是幼稚園的技能?因為,在美國,很多年以前的電腦科系,就已經從「電腦」轉變為「資科」再轉變為「應 用」科系了。也就是說,很多人引以為傲的電腦程設技術,在美國早就列入「低階工人」的工作,排除於科學之外,已經很落伍。因為電腦科技的進步,技術已經很 容易取得、容易達成。在十年前就已經被拋棄的技術,竟然有人還拿出來炫燿?

電腦因為CPU的進步,很多早期超難的技術,變得很不重要。例如「排序」。以前記憶體不足,處理大量資料時很費工夫,排序方法影響效率至鉅,因此早期資工 的課程裡,排序佔據非常重要的課程。但現在CPU快速、記憶體很大、硬碟又快容量又大,資料處理已經在討論幾十億筆的處理速度,此時如果有人提出一個排序 一百萬筆的理論,真的很難引起共鳴。

組合語言在早期是一種很艱難的語言,但現在因為編譯器的進步,學習組合語言已經沒有挑戰性。現在強調自己會組合語言,頂多指會被成為瘋子加笨蛋,能寫編譯 器,也只能說他撿了別人不要的工作而已,實在沒有什麼值得高興的。台灣很多程式高手,但卻沒有一個像樣的操作系統;很多電腦公司,卻少有原創軟體揚名國 際。究其原因,正是因為台灣這些聰明人太容易滿足,缺乏遠見、缺乏國際觀。當別人已經跑到前方遠離視線之外,都追不上了,還要強調自己是跑最快的,其實是 落後前面的人太遠了,所以誤認為自己才是第一。

我們所說的程設技術是「編碼」,但十幾年前,印度發展軟體工廠時就已經把編碼歸類為「工人」,由一群不懂編碼的人負責領導這些編碼工人。而那篇發文者自認 很厲害的「編碼工作」,在印度其實很不值錢,他卻很自豪的發起論戰。這不是很好笑嗎?真正的軟體程式,很難由一個人完成。如果可以由一個人完成,必然是很 簡單的工作,除非他做了很久、很多年。為什麼?道理很簡單,一個大型程式的編碼輸入就要花掉很多時間,幾百萬行的程式,一個人要花多久才能輸入完成?何況 還要規劃?那位發文者所炫耀的工作內容,都是不需規劃、不需思考,程式碼也很少。這樣怎能算是成就?

舉例來說,3D繪圖。很多人自認很懂3D。但所謂懂,有很多程度上的差異。例如,會操作3D軟體?還是會寫3D演算法?還是會玩3D遊戲?或是會規劃3D 動畫?或是會寫3D腳本?如果有一個人宣稱對3D很專業,我也一樣會笑他是幼稚園的技能。因為,3D真的很籠統、很龐大的應用體系,到目前為止,全世界還 沒有一個人敢宣稱「懂」3D。例如,「史瑞克」動畫電影,使用3D電腦繪製。但3D軟體、角色規劃、故事、剪接...非常多的整合,才創造出一齣精彩的卡 通動畫電影。這些整合過程,才是現在最先進的電腦「技術」,被成為「電腦應用」,而非那些懂得組合語言的幼稚園小班所炫燿的基本舞步。

國際網路的普及,電腦技術已經很容易經由搜尋引擎找到。就連source code都有。但是,資料太多就是垃圾,懂得從垃圾堆裡找到黃金,才是真技術。程設技術,現在已經論落為「技巧」而已。所以印度可以由一群不懂程設的人來 領導程設工人。因為程設需要很多關卡的整合才能成就一件大案子,而這些關卡,需要整合不同領域的知能(know-how),例如開發一個會計軟體,需要會 計的知識;開發一個船運軟體,需要貨櫃排放技術等等。大型專案的領導人員,負責整合不同領域的專業人員,負責將不同的知識彙編成可以溝通的文件,到最後變 成可以由編程工人達成編碼任務,對編碼人員來說,只是堆磚塊而已,這面牆要堆多高、放幾塊磚,都是別人給的指令。也就是說,那位很得意的發文者,只是達成 別人給的指令而已,這跟別人叫他立正站好的意思一樣,只不過他站的比較直,所以比較專業!

網際網路的盛行,造就很多宅男。有人從網路上賺到錢,有人因為網路喪命。電腦應用科系,教你如何利用工具創造商機,而非教你使用工具賺錢。例如要架設一個 聊天網站,電腦應用的觀點,是從網路找到資源,買入、借用或租用亦可;而資工的技術觀點,則是教你如何開發一套聊天軟體。別人從構想到開跑,可能只花了幾 天,而那些很厲害的程設人員,可能要花幾個月開發一套軟體,而這些軟體在使用階段還會帶來麻煩(不穩定)。因此,現在的投資者,寧願相信一個電腦應用者提 出的計畫書,而不願相信一個程設人員提出的計畫書。可見,就現實面來說,程設技術,很難體現價值,這也就是我認為那位發文者拿著幼稚園的技術炫燿的主要原 因。

我自己就是一個程設人員,我也不想停留在幼稚園的「疊積木」遊戲當中,因此在十幾年前就一直研究智慧型輸入法。因為智慧型輸入法「沒有」完成的一天,沒有 標準、沒有結論。光是整理同音辭,就花掉好幾年的時間,也絕非如那位發文者所言「這是我遇到過目前最難的問題」,因為,沒人出題,何來問題?沒有問題,哪 有難題?我也在追求程式之道,套句那位發文者的用辭,證明我的話不是亂講的,我當過APPLE 台灣的榮譽技術顧問、英業達上海技術顧問、接過APPLE FarEast、凌陽、ALi、系微、創惟、MacSense等很多家上市公司的程設專案,但我仍然覺得自己是個疊磚塊的工人,實在沒有那位發文者的勇氣 與實力。


2008/07/15







分享此篇文章: