Monday, September 24, 2018

編程語言的洗禮

這個 blog 的一個內容,是想說一下寫程序的事。那既為第一篇,先寫少少回憶好了。

是中二,中三的時候,家裡有了個人電腦。當然還沒裝 Windows,只是跑 DOS,首先是 5.0 版。如果你足夠老,當知這第5版 dos 是很重要的版本。它附帶了一些調整記憶體的程式,非常適合擁有很多時間的中學生。關於這方面我另外講述。另外還帶了一個 QBASIC。這是著名的 BASIC 語言直譯器的一個改良簡化版。你當然可能知道 BASIC 和微軟的關係,那麼這個應該是他們想推廣 basic。所以,除了全屏editor,還附送了幾個帶源碼的basic程序,比如大猩猩丟香蕉,還有貪食蛇。其實我也是靠一本台灣出的dos 5的書,摸到了這裡。被程序碼吸引,就試著閱讀那些很像英文的程序。試著改動一些變數,看看發生了什麼。這當然很有趣。原來可以這樣命令電腦做事。

然後就買了幾本書,跟著範例,慢慢寫起來。順道一提當時黃金商場的書攤,是我們這些電腦痴的勝地。大部分的零用錢還有課餘時間,都花在這裡。

除了QBASIC,還有倚天中文。在DOS下,要處理中文字,當然是要繪圖。所以整個中文系統要在所謂的繪圖模式下運作。倚天提供給應用程式的繪圖API,是以 Assembly 語言或者另一個所謂 Escape sequence 的方式提供。那個 escape sequence 其實有點像 Unix 下顯示彩色文字的方法,但它加了顯示中文字能力和繪圖功能,比如畫圓,畫線。這也使我花掉了無數的時間。

明白什麼叫寫程序之後,也對電腦運作原理徹底了解。因為對電腦了解,自然是深深沉迷。這時候就升了中四,自然選擇讀電腦科。接觸到 Pascal 語言。

Pascal 其實沒有比 Quick Basic 更高級。但我也是樂此不疲,還了解到原來有 object oriented 的特性。這應該是 Borland Pascal 引入的吧。而且,它的 editor 有了語法彩色顯示。記得當時有了 Windows 95,因為很喜歡按扭的形狀,就自己寫了程序,把元素週期表用立體凸起的樣子畫出來。那可是把元素data存在array中,再用迴圈讀出繪畫的。

也會寫些小遊戲,大多是移動數字之類,放在電腦室的486電腦之中,給大家娛樂一下。不過,我們更喜歡在那裡玩DOOM。這是另一個topic了。

預科時,老師叫我玩下CGI。他那時想為學校網頁加入訪客留言功能。這個逼得我提前學習了網絡程序的運作。留言板也成了我熟習的練手程式,凡新學語言,必先實作一個。連後來大學班網裡的留言板,也是我寫了。因為大家但求方便易用,所以只用了 Perl就完成,還只是一個file,所謂單file程序。在學校的unix上,非常穩定,撐了三年多完全沒倒下。

到了大學,自然是選讀Computing了,沒有懸念。那是 Java的年代了。很新,連教授都在一邊學,一邊教我們。中間的功課,做 web apps,我們選用 PHP。貪它快靚正。沒有想到,後來的 Facebook,也是用 php寫成。為什麼我們當時沒想到要做一個?哈哈。

Year 1 識左個同學仔。他提前教我學了 database,去做 free lance。為一間模型店做了個收銀出單的app。非常成功。因為是先實作,year 2 才上課學習數據庫,這是完全不同的上課感受。如果你要掌握一樣技能,先實作,再學理論,有時候也很有效。

2000年,是實習的一年。當然係去做programmer。公司用的是 ASP,因為同事用 VB Script 來寫,與多年前的 BASIC很像。現在大概也沒人用這個來做 web app了吧!

畢業後首先也是用 Visual BASIC寫東西。那時候試用了 Active X,感覺它還不錯,可以在 Internet Explorer 中用。當然它現在已經過時了。但與COM interface的戰鬥中,深刻了解了何謂 interface。這個概念非常重要,日後再談。

日後在工作之中,還使用了 Java。大公司的 Architect 當然有他的理論。指示了我們用一堆 frameworks。比如 Spring。然而,framework成功,不等於你也成功。我個人認為,如果它不能簡化你的工作,就不要用。最後,我們並沒有用太多frameworks,卻做出一個個成功的apps。

業餘projects,也試過 Python,甚至 Ruby。這兩種在西方國家常見,但在香港較少見到。受限於打工搵食,我也沒有太多時間深究,希望日後有機會!

經歷了多種編程語言的洗禮,我發現,每一種都代表一種哲學觀。對機器和計算的不同理解,孕育出不同的語言。要精通多種語言,非常困難。好在,你並不需要精通全部。但是,精通一兩種是有必要的。觸類旁通,你可以在必要時,快速學好一門新的。比如,在 iPhone App Store 帶來的機會席捲編程界之時,你用了多少時間掌握 Objective C 這門看去怪異無倫的語言?

下次再談。