Kaie"s Blog 2.0 beta!
Back to "Top"

My Secret Notebook
 Show "Table of Contents"
Contact Me
Subscribe to my Posts feed
Subscribe to my Comments feed
My Flickr
Back to "Top"
My Secret Notebook
 Show "Table of Contents"
Contact Me
Subscribe to my Posts feed
Subscribe to my Comments feed
My Flickr

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。如果具備了追蹤程式碼的能力,除了可以透過現成的程式碼學習新的技術之外,也可以做為拆解程式碼的基礎設施。而要拆解程式碼的第一步,自然是看懂程式碼,看懂之外,要進一步判斷那些是自己要的,那些不是,同時評估怎麼調整這些程式碼的架構,可以去除掉自己不要的部份,保留自己要的部份,又毋需對現有程式碼做過大幅度的更動。

具備了上述的兩項能力,程式撰寫就不再只像是重新建構,或適度組裝自己已有的元件。而像是找尋和自己所需元件相像的元件,經過適當的理解之後,施以最小幅度的裁切,將其介面修繕成自己所需的介面,淘汰掉其內容中多餘的組成,最後將重新賦予生命的元件與其他無論是自己既有的,或是同樣回收自開放原始碼元件的元件組裝在一塊,就得到自己想要的東西。

重新思考這整個過程,倘若沒有開放原始碼的幫助,程式員得先花上一段時間學習新技術,然後重新撰寫全新的程式,但在這個時代一切可都不同了。

無論是追蹤原始碼或拆解程式碼都需要特別的一套技巧。有時間我想分享一下。但我的確認識一些人,有程式撰寫的老手也有新手,彷彿都有這兩項技巧的天份,這實在是一件很神奇的事情。