最近流行把舊的觀念升級,號稱是「2.0」,例如Web 2.0便是為Web注入新的精神,使網頁能呈現另一種面貌。我猜想,對於程式設計,應該也有不少人加上2.0的版本序號,各自詮釋自己想要賦予軟體開發的新精神。
本系列連載命名為「程式設計2.0」,或許有點「標題殺人法」的意味存在,但本質上,想表述的其實是在網路已經如此發達的今日,對軟體開發──尤其是程式撰寫所造成的一種型態移轉。
透過網路與全世界的程式人接軌
回想昔日網路尚未出現或尚未如此發達流通的年代,我們賦予程式人什麼樣的訓練呢?基本上,我們教導他如何從無至有地把程式完成。
比方說,我們教導程式人程式語言、資料結構、演算法、物件導向設計、軟體工程以及軟體測試等。這些是程式人的基礎訓練,但都是以單兵作業為核心的訓練。我們很少教導程式人如何利用合作的方式,彼此協力開發,也不會教導程式員如何分享程式碼及解決問題,以加快開發的速度。
以大學或研究所來說,重視這些本質上的訓練,方向上完全沒有問題。但是,對於有確切開發目標的開發工作來說,這些鍛鍊就顯得相當重要。對於既有、可用的程式碼開發,有了這些培養能夠壓縮撰寫程式碼的時程。
在遭遇難解的問題時,倘若能獲得旁人已知的問題解決方案,我們更能立即就能解決,省去極為大量嘗試問題、探索解答的時間浪費。在學習任何一種新的觀念或技術時,倘若身邊有人已經略知一二甚至十分熟悉時,給予入門的建議或指引,也能大幅的減少學習上手的時間。
而在現在,網路如此普及,各種資源在網路上垂手可得,每個程式人彷彿與全世界所有的程式人全都接軌了。透過網路,我們身邊的「旁人」數量可在「新技術學習」、「現成程式碼」、「問題解決」上,給我們遠較過去更多、更豐富的協助。
之所以命名為「程式設計2.0」,也就是因為想強調這種程式人能透過網路,各自貢獻程式碼、遭遇到的問題、解決問題的方法,甚至是對各種開發技巧或知識的介紹,利用網路加以整合或交流,進而讓所有的程式人都能藉此合作,獲得可觀的助益。
不僅免費,而且快速
在過去,我們要學習一項新的事物,多半憑藉著實體的書籍或雜誌,或參加專門的課程,以及交流分享的讀書會等途徑學習。一來成本太高,二來學習速度及多元性也受限,因為你能接觸到的題材及數量,都會因為實體的方式而受到限制。
但是,網路這個平臺的大趨勢,讓許多程式人樂於在網路上利用部落格(Blog)分享心得,許多論壇上也有熱烈且實用的討論。
建議程式人都應該透過網路提升學習的速度。我本身已經有許多年沒有買過任何的書籍或雜誌,因為透過網路學習新的技術或觀念,速度只有更快。
有什麼方式可以提供參考呢?首先,你可以利用坊間的RSS閱讀器,或像台灣funP網站上的「哈部落」服務,訂閱許多活躍的程式人部落格。這對收集新技術的資訊會很有幫助。此外,常常參與一些技術論壇的討論,也對吸收新知多有助益。甚至許多技術人員都有撰寫Twitter的習慣,訂閱他們的Twitter訊息,也能同步接收這些人所關注的消息。
官方網站和Google提供的資訊,價值可能勝於書籍
在新技術的學習上,許多網站上,尤其是特定技術的官方網站上,都提供相關完整的文件,從API文件到教學文件一應俱全。當你想要學習一項新技術,應該先從官方網站(如果有的話)著手。
舉例來說,在學習如何使用MINA時,(MINA是Jakarta Apache Project中的一個計畫,是一套協助你開發網路伺服器系統的程式庫),我的步驟是:一、閱讀其介紹文件了解其大體的架構;二、閱讀安裝文件,將MINA妥善的安裝及設置;三、閱讀其上的教學文件(Tutorial),試著編譯、並執行最小的一個範例;四、閱讀其API文件,嘗試擴充範例中的功能;五、嘗試多個範例並充分了解示範後,接著參照API文件,開始建構自己所需的功能。
大多數的新技術,倘若是程式庫或框架,幾乎都可以透過這種方式快速學習。這種方式既免費,效果也好。除了造訪官方網站之外,在這個網路知識的時代,善用Google搜尋,更能協助你找到許多技術高手所撰寫的入門或進階文章。許多文章本身的素質,甚至還勝過坊間找到的許多書籍。
而這也正是Web 2.0所衍生出來的「程式設計2.0」。因為Web 2.0所主張的「使用者製造內容(User Generate Content)」及「人際社交網絡(Social Network)」,讓程式人們樂於分享自己的心得及經驗,促進交流。
從這邊也可以觀察出另一個現象,在「程式設計2.0」的時代,懂得如何快速找到有用資源的程式人,將會比不懂得這麼做的程式人,能夠具備更有效率的學習力。就拿如何利用Google搜尋來說,懂得搜尋技巧的人,總是能比不懂搜尋技巧的人,更快、更準確地找到有價值的參考文章,自然也就能有更佳的學習品質。
整個程式設計的考驗,和大學課堂的考試不同,它已經是一種「Open Book」的考試,而且這本書的內容是浩瀚無涯,誰越有辦法知道如何在其中挖出寶物,就越能奪勝。
可惜的是,許多人過往在大學的訓練,對於如何搜尋所需資料的相關訓練、著力並不多。而在過去,資源並不多、而且不若今日能透過網路快速且準確彙整,而且當時這項能力對程式人來說,相對而言並沒有那麼重要。但是,現今大有不同,因為知識學習的模式改變了,自然也必須調整自己學習的方式,才能最佳化。
精選優質的開發網站,縮短學習的時間
除了上述提到的方式外,有些專門為程式人提供服務的網站,也能發揮極大的作用。例如,有個名為Code Project網站,就是個資源十分豐富、專為程式人量身打造的網站。
這個網站主要提供了各式各樣用各種程式語言撰寫而成的程式範例。它所提供的範例有以下優點:主題專一而且明確、皆搭配適合的教學文章、範例多半可以直接運用於開發中。其上的文章的主題專一,而且明確,這使得它的每篇文章幾乎都只介紹單一的特定技術,對於只想了解一個單一技術的程式人來說,不會有過多龐雜的資訊混於其中。
而且每個範例的作者,都會撰寫教學文章,不僅介紹相關技術的背景,同時也針對範例說明,能減少程式人入門的時間,同時明白範例的作用。而且,許多作者都會刻意將該範例包裝成為程式庫或直接可用的程式,使得其他的程式人很容易將範例運用在自己的開發專案中。Code Project本身也提供不錯的搜尋介面,大大減少程式人找到所需資源的時間。
像Code Project這樣的網站,網路上還有很多,供應的資源,不僅量多質優,而且還免費。透過範例來著手學習任何一項新的技術,向來都是最快的途徑。對程式人來說,懂得運用這樣的資源,在學習的立基點上,就有很大的不同。而這也正是「程式設計2.0」的一個很大的特性。
作者簡介:
王建興
清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是Internet應用系統的開發。曾參與過的開發專案性質十分廣泛而且不同,從ERP、PC Game到P2P網路電話都在他的涉獵範圍之內。
相關閱讀:
程式設計2.0 (2)強化網路搜尋力,迅速找到解答
程式設計2.0 (3)善用開放源碼,發揮槓桿效應
熱門新聞
2025-12-12
2025-12-16
2025-12-15
2025-12-15
2025-12-15
2025-12-15
2025-12-15
2025-12-16