除非你像我一樣學程式語言只是為了到處獻寶,否則你在學一套程式語言前,應該先仔細評估到底要學哪一套。每個程式語言的用途都有很大的差異,走了冤枉路可能會耽誤到計畫實作的進程。

我大致上把程式語言分成五類,分述如下:

Web Page Script Languages
用來做網頁的語言,可以對網頁做控制。如果你希望設計出很炫的網頁,光靠 HTML 是不夠的,你還得學一套 Web Page Script Language,比方說 JavaScript(ECMAScript)和微軟的 JScript。不過兩者都是系出同門,所以差不多。WML Script(WAP 手機的 script)也是襲自 JavaScript。

許多人知道我不會 JavaScript 之後,都會大吃一驚地反問:「可是你不是會 Java,怎麼不順便學 JavaScript,兩個語言不是差不多」。如果依照此推理,我看我差不多每個語言都要學了,因為除了 REBOL 和組合語言比較特殊之外,我覺得其它語言的語法都差不多(但用途差很多)。

不過我最近的確是有打算開始學 JavaScript,因為我發現用到它的機會還不少。除了網頁會用到之外,我最近所接觸的 SVG(Scalable Vector Graphics)就使用 JavaScript 來達到動畫效果。

Interpreted Languages(直譯式語言)
這類直譯式的語言包括了 Perl、Python、REBOL、Ruby… 等,也常被稱為 script 語言,通常是用來取代批次檔和 shell script 以便和底下的作業系統溝通。基本上,每個人至少都應該要會一套這類的語言,當你需要做某件簡單的工作,你可以透過直譯式的語言來輕易地辦到,這麼一來,你就可以不必大張旗鼓地使用 Java 和 C++ 等工具了。

直譯式的語言通常比較高階,程式比較好寫,往往簡短地幾行程式就抵得過 Java 或 C++ 的一堆程式碼。因為不用編譯而且高階,所以這類語言的程式效率通常很差,又因為原始程式碼暴露在外,所以拿它來寫寫工具程式自己用可以,但是拿來開發軟體產品比較不恰當(除非你不在乎原始碼外流)。目前這類語言最常被用來開發網頁伺服器端的程式,或者是設計軟體的 prototype。

Python 有一些不錯的語言特性,目前在國外算是滿熱門的;Ruby 是日本一位教授設計的,但是這語言太新了,目前好像只有 Addison Wesley 的一本英文書和 O’Reilly 的一本日文書可供參考;REBOL 則是我近期最喜歡的程式語言,非常特別,REBOL 語言的思維和別的語言差異非常大,許多時候很接近英文句子。至於 Perl,我就沒有研究了,台灣歐萊禮公司已經有 Perl 的專家了,如果我現在去學 Perl 的話,短期內是不可能超越他的,所以我看算了 :(

Hybrid Languages(混合式語言)
Java,C# 都是混合式語言,介於直譯式語言和編譯式語言之間(不管是在執行效能上或程式簡單性上)。

C# 的語言有許多奇怪的特色,但也有一些不錯的特色。C# 的學習使用上的難度介於 Java 和 C/C++ 之間。C# 是 Microsoft .NET 平台上最重要的語言,值得我們持續觀察其後續發展。至於 Java 我就不用多說了,相信 Sleepless in Java 的讀者們應該都知道 Java 是怎麼一回事。

至於 Visual Basic,在 .NET 平台主推 C# 語言,而 VisualBasic .NET 的語言又比以前複雜許多的情況下, Visual Basic 的前途似乎很不看好。

Compiling Languages(編譯式語言)
C/C++,Delphi(Object Pascal)都是編譯式語言。這幾年來,C++ 已經變得越來越龐大了,大多數的 C++ 程式員只用到(也只懂)C++ 功能的一小部份。想成為 C++ 語言真正的高手,沒有耗上三五年是不可能的。雖然 C++ 很複雜,但是真正想成為程式高手的人應該都要懂 C/C++,重要的 API 都會有 C/C++ 的版本,由此可見 C/C++ 的重要性。至於 Delphi,在 Microsoft .NET 推出之後會對 Delphi 造成一些打擊(Microsoft .NET 的語言名單中連 Scheme、Eiffel 和 Mercury 這種少用的語言都出現了,獨缺 Delphi),但是 Delphi 能透過 Kylix 來跨越 Windows 和 Linux,又是一個很大的吸引力,如果你想要跨 Linux 和 Windows 平台的 RAD 工具(語言),目前 Delphi 似乎是最好的選擇。

Assembly Languages(組合語言)
使用組合語言,你將嘗試到一磚一瓦堆砌出程式的樂趣(或痛苦)。組合語言可以說是最接近硬體的語言,學會組合語言,就可以對電腦的運作有相當程度的了解。不過,目前連開發驅動程式都不太需要用到組合語言了。恐怕只有做 DSP 和 OS 等極少部份的人需要用到組合語言。我也好久沒寫組合語言程式了,以前 DOS 時代,我還用組合語言寫過一個 PE 2。

程式語言學習順序的建議
通常 Web Script 最簡單,直譯式語言其次,接著是混合式語言,和編譯式語言,最麻煩的是組合語言。如果你完全沒有程式經驗,想開始學程式設計的話,你可以從 JavaScript 著手,等到程式基礎觀念建立得差不多了,再往下學習直譯式語言,然後再學習混合式語言 …,以此類推。

希望這篇文章能解決讀者們選擇程式語言的困擾。

本文作者:蔡學鏞
張貼日期:2/14/01(The First Valentine’s Day in the 21st Century