記得中學時期,學校開設了電腦課。那時電腦還是稀罕物,全校僅十幾台,專門佔用一間鋪著厚地毯、拉著厚窗簾的大廳作為機房。上課前一天,我們得沐浴更衣、修剪指甲;上課時穿鞋套、排隊進場。在老師指揮下,我們取出裝有 DOS 系統的 5.25 吋軟碟,插入 A 槽,依序開啟螢幕與主機電源,伴隨著「吱吱」的讀碟聲,等待進入那個充滿想像的神奇世界。
就是在那時,我寫下了人生第一行程式碼。課程教的是 GW-BASIC,一種 BASIC 方言。程式碼每行都要編行號(10、20、30…),預留空間方便日後插入修改。輸入完畢輸入 RUN,直譯器便按行號順序執行。這種編程方式極簡單,記住幾個流程控制與輸入輸出關鍵字,就能寫出小程式。課後我常在紙上構思:解多元方程、猜數字遊戲、繪製三角函數曲線… 上機時再敲入、除錯,除錯手段只是用 PRINT 把數值印到螢幕上觀察。寫完存檔到軟碟,滿心歡喜。
中學時期思維最靈活,之後經驗雖豐,學習新知能力卻在走下坡路。除非刻意培養,許多知識停留在中學水平。當時我瘋狂寫程式,最大願望是家裡有一台裝 GW-BASIC 的電腦,讓我關在屋裡寫出《超級瑪利》或《坦克大戰》這樣的遊戲。
GW-BASIC 用極原始的 GOTO 做流程控制;函數其實也是 GOSUB 跳過去、RETURN 跳回來。當時公認 GOTO 無不妥,是實現條件迴圈的正常方式。例如:
50 LET I = 0 60 I = I + 2 70 PRINT I 80 IF I < 100 THEN GOTO 60
下面是我當時寫的猜數字遊戲,全靠 GOTO 兜圈子,像進了迷宮,好在規模小,還能看懂邏輯。這段碼能保存至今,是因為隨手記在書的空白頁,沒存軟碟:
10 PRINT "Guess a number" 20 INPUT A 30 IF A > 5 THEN GOTO 60 40 IF A < 5 THEN GOTO 80 50 IF A = 5 THEN GOTO 100 60 PRINT "Too big" 70 GOTO 20 80 PRINT "Too small" 90 GOTO 20 100 PRINT "Right" 110 END
回望這段歷程,從行號、GOTO、軟碟機聲,到如今的 .NET 架構設計,或許每一行代碼都在見證著成長。Hello World 的年代,不只是語法的起點,更是邏輯思維萌芽的時刻。