vgod's blog
66 min readFeb 15, 2022

--

追求神乎其技的程式設計之道 — 2022重編版

在2022回顧「 追求神乎其技的程式設計之道」

「追求神乎其技的程式設計之道」是我從2008年開始在我的個人blog上連載的一系列文章。當初只是因為想回答一位讀者問到關於如何學習寫程式的方法和經驗才開始撰寫的,沒想到後來就一連寫了三年,共有十二篇文章。

現在已經2022了,我決定開始一個新系列的文章「軟體工程師的修煉與成長」,所以就順便把舊文章從雜草叢生的舊blog整理一下搬來Medium,讓想要回顧舊系列的讀者可以有比較一致的閱讀體驗。在這個版本中,我把十二篇文章都合併起來,做了一點刪減,也加上了一些2022的註解。

寫這系列文章的過程中,我一邊回憶高中時期的成長,一面深深感受到過去的每一個經歷都在十幾年後慢慢顯露出它的意義。就像Steve Jobs在2005年Stanford大學的畢業典禮上說的一樣,過去的故事乍看之下是毫無關係的單一事件,但到了二十幾年後的今天,這些「點」就慢慢的被連起來變成了一條很清晰的線,指引我走到了現在。而這系列的文章就在這個適當的時機,記錄下我當時最純粹的想法和心情。

從我國中時用Visual Basic寫出第一個遊戲「黑白棋」時,我就完全迷上了電腦的力量和寫程式的快感。雖然我現在是全職的軟體工程師,但變得資深的壞處是寫程式的時間越來越少。但即使如此,我還是會留時間給自己寫程式,因為我還是非常樂在其中,可以專心寫程式不用開會反而是一種休息和調劑。寫程式是一條無止境的道路,不只是科學和工程,更是一種藝術。即使這系列文章已經結束,但我還是在追求「神乎其技」的半路上。雖然還有很多要學的,但我也希望能讓初學者更容易看清楚這條路的面貌,避免陷入盲目追求新技術的死巷中。

一切的開始

如果是從DOS時代開始玩電腦的玩家,應該都知道當初DOS有兩個內建的QBASIC小遊戲:貪食蛇和猩猩丟香蕉。這兩個小遊戲是許多人兒時共同的回憶,我還記得我國小時曾有幾堂電腦課,當時老師在台上嘰哩瓜啦的不知道在教什麼,而台下每台電腦都是貪食蛇或丟香蕉的畫面。(老師對不起,其實我就是帶頭做亂的罪魁禍首…)。

微軟把這兩個QBASIC遊戲附在DOS內對我產生了莫大的影響,那是我第一次發現到原來QBASIC和不只是像PE2能打打字而已,QBASIC竟然能把一堆看起來像咒語的文字變成遊戲!幸運的是我家剛好有本第三波的QBASIC入門書,沒事我就自己拿起來翻著看,雖然當時太小,即使把整本都看完了還是搞不懂貪食蛇是怎麼寫出來的,但也誤打誤撞知道了原來這就是程式設計,原來我能直接把貪食蛇檔案內的一個數字改掉就能有幾百條命可以死,原來學寫程式就能做出電腦遊戲…。對小孩子而言,知道這些事就像告訴他魔術師袖子裡的秘密一樣,我一天到晚興奮地要老爸帶我去書局看電腦書,彷彿真的可以搞懂電腦螢幕背後的一切魔法一樣,我也夢想著有一天能寫出自己的遊戲。但當時我沒想到的是,我還真的花了十幾年的時間在探索電腦的魔法…。

MUD與黑白棋

升上國中後,家裡裝了一台28.8kbps的modem,當時的internet還沒完全成形,在沒有Google的時代internet是沒什麼價值的。當時的modem最常被我拿來上一些撥接式的BBS,那時候的撥接BBS站台還不少,最棒的是還能從站上抓到很多軟體和各式各樣的教學文章,像是如何用組合語言寫電腦病毒,如何破解大富翁2之類的文章。這些文章對當時的我就像武林密籍一樣,雖然沒辦法完全看懂,但我也是從中得到很多零碎的概念,像是16進位的換算、組合語言、中斷向量、常駐程式….。

在國二時,我還不小心迷上當時一個超熱門的MUD — 萬王之王(KK),每天放學回家都急著連上線,讓家裡電話整晚都忙線中,玩到每個月電話費都是上千元,搞得我媽數次警告要把modem收起來再也不讓我上網了。(還好她沒真的這麼做,不然我現在就沒辦法寫這篇文章了。)

MUD是現在MMORPG的純文字版,整個虛擬世界都用文字描述,並且只要用telnet就可以連上去玩了。但內行的玩家都知道,玩MUD應該要用 zMud或是UNIX下的tintin++,因為這兩個軟體可以設定所謂的trigger,偵測到某些事件的發生,就能自動採取事先指定好的動作。因為一切的訊息都是由文字呈現,所以偵測事件非常簡單,只要看看有沒有特定字串出現就可以了;而要做特定的動作也很簡單,就是送出文字指令而已。(眼尖的人一定會發現,這其實就是現在MMORPG外掛的最原始形式。)嚴格說起來,zMud是我首次寫「實用程式」的平台,我學會透過trigger在MUD的世界中 寫自動化的機器人,自動在迷宮中遊走,自動換裝備打怪練功..。這時的我突然體會到,會寫程式真是太棒了,我在MUD中簡直跟神一樣。其實當時我也不過只會用最基本的變數、if、迴圈而已,但透過在虛擬世界中寫機器人的練習,讓我的邏輯思考概念有飛快的進步,也給我了非常強烈的動力想好好學一個正統的程式語言。

升上國三後,很幸運的透過推薦甄試提早上了台中一中,升學壓力解除後,老師和父母就完全不管我要幹麻了。這時我終於有了一段完整的時間可以好好的再把BASIC重新學過,無奈的是在我國三時QBASIC已…

--

--