範例程式幾乎可以說是學習程式設計的過程中十分重要的一環。無論是學習新的程式語言、資料結構、演算法、學習新的技術、或是應用程式框架及程式庫,我們都習慣參考既有的範例程式,來幫助我們更快的掌握這些新的事物。我們可以看到坊間許多和程式設計相關的書籍,甚至都還會強調書中提供大量的範例。由此可見,對許多人而言,範例程式對於學習程式相關技術,究竟有多麼的重要了。

當我們在學習一個新的程式語言時,我們可能是透過閱讀一本書、或是一份教學文章,來學習該程式語言的語法及運作的特性。通常,我們會希望佐以範例程式碼,來了解抽象的語法陳述運用在實際的程式碼後,具體的形貌究竟為何。也會希望透過範例程式碼的實際運作,來體會程式語言的諸般行為特性。如果只憑書上或文章裡空泛抽象的說明及描述,其實是很難直接運用這些了解來實際寫下可用的程式碼。

Hello World!每個人都要學會寫的第一支應用程式
最簡單、但也廣為人知的一種範例程式的形式就是——HelloWorld。現在,幾乎所有教你特定程式語言的書或是文章,教你的第一個例子都是HelloWorld,也就是利用該語言印出或是呈現出「Hello World!」 的訊息。這也幾乎是一個不成文的傳統了。

HelloWorld程式通常沒有實際的內容(除了印出或呈現訊息之外),那為什麼大家都喜歡拿它來做為第一個範例呢?當然不是只是為遵守這個不成文的傳統,或者單純為了有趣。

做為一個範例,HelloWorld程式展示了特定程式語言最基本、最簡單的程式面貌及結構。在不涉及過多語法元素的情況下,讓每一個初學者,都可以明白這個最極致單純的形式。除此之外,每個語言的學習者,想要運用這個程式語言,不單只是需要搞懂語言的語法而已,還必須知道如何建立開發環境、編譯原始碼、以及執行。

有時候,有些語言的整合開發環境,就足以耗去學習者不少的時間及精神去建立及了解。HelloWorld這樣一個最簡單的程式,可以讓學習者在搞懂這些和語言本身關聯性較低、但在撰寫程式時又息息相關的操作之後,可以在不需要較深入了解該程式語言的情況下,直接以像這樣一個最不複雜的程式,來實際演練這些操作。

而當程式的執行結果順利出現HelloWorld之際,便代表在這些無關撰寫程式本身,卻又是基礎的功課上,可以算是到達了一個里程碑。

每一個程式範例,都應該有設計出來的目的及作用。好比,HelloWorld的目的是學習者了解一個程式語言最原始的形式及結構,以及,讓這些學習者能夠有一個最基本、最不複雜的材料,來試演撰寫程式時必備的基本技能。

透過程式碼內容,範例程式作者想要傳達的特殊意義
除了HelloWorld之外,我們還會讀到各種不同的範例程式,有的目的是讓我們了解如何運用特定的語法元素,有的則是讓我們明白語言的特有行為。除了透過程式範例來學習程式語言之外,我們也會透過程式範例來學習程式庫或是應用程式框架。

但是同樣的,撰寫範例程式的作者,也都會賦予每個範例它所存在的意義。而每個程式範例之所以存在,同樣都是為了要將某個(些)概念或想法傳達給讀者。

透過了解這些範例的內容及運作方式,讀者便可以藉以吸收這些概念及想法。

就像一篇想要介紹如何使用JDBC(Java連接資料庫的程式庫)來對資料庫進行操作的文章,其中可能會有一個特定範例,專門被設計用來示範如何建立對資料庫的連線。當然,也會有個別的範例,專門演示如何對資料庫進行查詢、進行資料的更新。

所以,好的程式範例應該具備那些條件呢?正如前段所提到的,每個範例都應該具備它所被賦予的存在意義,而它們也都應該被設計用來將某個或某些概念及想法傳達給讀者。有些程式範例缺乏明確的目的,讀者不太容易明白範例的撰寫者,究竟想透過該範例說明什麼觀念。也有些範例,在同一個程式中將太多的觀念和想法混在一塊,看起來程式內容似乎很龐大、很完整,但是在十分冗長的程式碼中混雜了太多的企圖,便失去了清晰有力的表達能力,使得讀者不容易消化、理解其中所含的眾多觀念。

通常,一個好的程式範例不會太長,適當的程式碼長度使得讀者在閱讀時,毋需面對一個過大的理解範圍。同時,好的範例也不會在單一個程式中試圖介紹、說明太多的觀念或技巧,因為那容易造成讀者混淆,同時也不容易聚集焦點。一個理想的範例,最好同時只打算說明一個觀念,而程式碼的撰寫方式,也很容易讓讀者明白究竟重點為何,並且容易理解。

此外,卓越的程式碼範例除了撰寫者特別賦予它的存在意義之外,同時也會在無形中展現一些撰寫者的氣質。

小到程式碼中各種命名的方式,大到程式碼的組織及結構,都是程式碼撰寫者除了特定的企圖之外,可以透過程式碼傳達給讀者的。
有人說,《The C Programming Language 2nd edition》一書,之所以能夠成為C語言的聖經本,不單只是因為它是C語言的兩位發明者所著。這本書中的程式範例,也是構築本書經典地位的重要關鍵。

在這本書的範例中,幾乎每個例子要傳達給讀者的概念都很單純、也很明確,程式碼的長度也都恰到好處,容易理解。而且,更重要的是,在書中的程式碼範例示範了何謂「C語言的風格」。不單只是運用C語言的語法來完成特定的程式任務,而是將C語言寫作的風範融入到範例程式碼中,讓讀者在探索C語言的語法元素及行為的同時,也能在無形中感染到C語言的發明者所創建的C語言風格。這些範例示範的不僅僅只是如何用C語言解決程式問題,更示範了要怎麼寫C程式,才是C程式該有的味道。有人說,這本書中的許多範例,一個就足以抵得過其他書中的多個範例,由此可見其經典性。

從範例程式中,你可以學到和表達的事
身為程式碼範例的閱讀者,你不見得可以一眼識出那些卓越範例程式碼中的隱含的氣質及風格,但是最基本的,在閱讀每個範例時,你一定要很清楚這個範例所希望帶給你的觀念、或者它想介紹的技巧究竟是什麼。

這麼一來,你閱讀起來,才會知道重心究竟在何處,而不是漫無目的亂讀一通。而關於那些氣質及風格,當你累積足夠多的耳濡目染之後,自然會心領神會的受到感染。

總有機會你會成為程式碼範例的撰寫者。當你在撰寫範例程式碼時,同樣必須符合好的程式範例的標準──簡短、單純、直接、目的專一,每個範例盡量只說一個故事、傳達一個觀念、教授一項技巧。如果可以,將你希望展現的風格和精神,也融入到你所寫下的範例中吧。
 

專欄作者

熱門新聞

Advertisement