Wednesday, April 19, 2006
[Programming] Coding 新趨勢?
轉錄自「一個程式者的胡言亂語 」,值得思考的一篇文章。也許就目前來說「善長於Tracing Code的能力」會是Coding的必備技能,很多時候許多程式都並非由你一人親自從頭到腳打造 Key 出來的,常常會有從某一個別人提供的Prototype,再下去修改,增加一些功能而已。
像是目前接過的兩個建教合作計劃,也都是拿別人的Prototype,先Trace過後,再加上一些廠商需求的功能而已。而且這也是初次用VC的經驗,之前都習慣用BCB,所以有些Error Message也不太清楚是怎麼錯,果然這都是要經驗累積的,透過Google就可以很快的找到和你出同樣狀況的人,自然問題就迎刃而解了。 ^_^
最近愈來愈覺得網路時代的程式撰寫工作變得極端的快速多了。原先想將這個題目訂為「網路時代的程式撰寫」,但稍加想想,似乎少了Google這個威力無窮的搜尋引擎,這樣子的速度提昇又辦不到,故以此題為名。
Google時代的程式撰寫,在那些面向上能帶來速度的提昇呢?首先是學習的速度的提昇。過去我們接觸新的程式撰寫知識,除了同儕之間的交流外,最主要的途徑還是透過書籍或是雜誌。可能遇到的問題是,不知道是否能找到自己所關心主題的書籍或雜誌;找到相關的主題後,不知道是否能找到自己所需的項目。有了網路的存在,發表的型式變得極端簡化,無數的論壇或個人的blog,充滿著和各種主題相關的文章,而透過Google的搜尋,可以輕易又準確的搜尋到這些散落在世界各地的文章。此外,專門的教學網站也提供各種不同的教學文章與範例程式,都大大的助益了新的技術的學習。例如我常造訪的http://www.codeproject.com就是一個很好的例子。
再來是錯誤排除的速度也大大的提昇了。最簡單的錯誤形式就是compiler error message,像Microsoft的IDE時常會給出一些令人難以理解的compiler error message。而我最常使用的解決方法,就是把message直接複製丟給Google,通常在前一兩個頁面,就會得到自己想要的解答,因為世界如此之大,你會犯下的錯誤,通常在世界各地的論壇上,往往就會出現解決該問題的答案。除了compiler error之外,程式或程式庫所得到的各種錯誤代碼或錯誤情況,直接丟給Google,通常也都會有令人滿意的結果。相較起來,在過去一個簡單的錯誤,很有可能阻礙程式撰寫十分漫長的時間,在這個過程中,可能充斥著不斷的錯誤嘗試、遍覽群書或偏詢同儕而不可得等等的活動。提昇錯誤排除的時間,自然大大的加快了程式撰寫的腳步。而類似MSN Messenger之類通訊軟體的普及,與朋友或伙伴之間建立綿密的人際溝通網絡,彼此交換心得或詢問錯誤排除方法的速度也變快許多。
除了文章的取得變得多樣化又快速之外,另一個很大的型態轉變,是基於開放原始碼的精神普遍而生的。由於原始碼開放的程度日益普及,網路上散佈著解決各種問題的原始碼。但除了介面定義良好的原始碼程式庫之外,即使是以開放的型式存在,能直接重複利用的程度並不高。但經過適當的拆解與重組,這類的程式碼還是可堪重用。於是,程式員開發的型態,就起了很大的轉變。在過去,程式員可能大量的自己重新撰寫所有自己所需要的程式碼,頂多倚靠自己或團體中已經建構良善的程式庫。但是現在,以隨手可得的程式碼為基礎,許多心力都可以節省下來,但程式員需要的技能卻改變了!在過去,也許程式員不需要太多讀懂程式碼,拆解程式碼的能力,但在現在,一名具備良好追蹤原始程式碼、拆解原始程式碼能力的程式員,卻極有可能在撰寫速度上勝過撰寫程式碼能力相同的程式員。
在過去,對程式員的訓練也許不甚重視追蹤原始碼以及拆解原始碼。大家重視的是如何撰寫可讀性高的程式,以及設計出具彈性、重用性高的程式。但在開放原始碼的世界中,有太多的程式不僅可讀性低,而且不具彈性、重用性也不高-往往只是為了專門的需要而hack。如果具備了追蹤程式碼的能力,除了可以透過現成的程式碼學習新的技術之外,也可以做為拆解程式碼的基礎設施。而要拆解程式碼的第一步,自然是看懂程式碼,看懂之外,要進一步判斷那些是自己要的,那些不是,同時評估怎麼調整這些程式碼的架構,可以去除掉自己不要的部份,保留自己要的部份,又毋需對現有程式碼做過大幅度的更動。
具備了上述的兩項能力,程式撰寫就不再只像是重新建構,或適度組裝自己已有的元件。而像是找尋和自己所需元件相像的元件,經過適當的理解之後,施以最小幅度的裁切,將其介面修繕成自己所需的介面,淘汰掉其內容中多餘的組成,最後將重新賦予生命的元件與其他無論是自己既有的,或是同樣回收自開放原始碼元件的元件組裝在一塊,就得到自己想要的東西。
重新思考這整個過程,倘若沒有開放原始碼的幫助,程式員得先花上一段時間學習新技術,然後重新撰寫全新的程式,但在這個時代一切可都不同了。
無論是追蹤原始碼或拆解程式碼都需要特別的一套技巧。有時間我想分享一下。但我的確認識一些人,有程式撰寫的老手也有新手,彷彿都有這兩項技巧的天份,這實在是一件很神奇的事情。
0 Comments:
Plz Post a Comment / 拜託你留個言啦...^^"