2021年9月13日 星期一

我的電腦程式語言學習歷程 (上)

https://4rdp.blogspot.com/2021/09/blog-post.html

近日在 FB 看到哈爸一篇貼文關於他的電腦程式語言學習歷程,讓我也回想自己 35 年來碰了那些電腦程式語言以及開發了甚麼。

從小第一次知道電腦這種東西,差不多在四十幾年前,因為家裡出租宿舍給大學生,見過程式打卡,一切都懵懂中。

我的第一個學習的程式語言是 BASIC,專科一年級寒假同學找我一起報名真理大學為校外人士開設的電腦課程,在計算機中心上課,比較偏商業應用,記得當時學習寫九九乘法表、泡沫排序法等基本練習題,此時家裡沒有電腦,沒辦法進一步學習。

專二上學期,母親去日本旅遊帶回一台 CASIO FX-700P 可程式計算機,可以寫 BASIC 程式,RAM 2 kBytes,對程式初學者而言綽綽有餘,雖然說明書是全日文,但是從程式碼範例依舊可以了解程式邏輯如何解算數學問題,例如直角坐標與極座標轉換、解聯立方程式等,這台 FX-700P 計算機讓我對 BASIC 的使用發揮到淋漓盡致,程式指令就是那幾個,看你怎樣組合它們,所以我寫過電玩金撲克以及橋牌叫牌模擬程式,程式碼行數約在 200 行左右,寫到計算機程式記憶體極限範圍了。

專三開始學 6502 微處理器,當時學 Assembly 組合語言,還真搞不清楚電腦的運作原理,最難懂的是 PUSH、POP Stack 堆疊以及 Interrupt 中斷的使用,剛學完還不知道怎麼應用它,直到 CASIO 計算機隨身玩了兩年,專四終於買了一台 Apple IIe,除了有電玩消磨時間外,也開始從 BASIC 應用程式研究到 Apple II 系統程式,才開始有數位系統的全貌概念。

專四學習系統模擬,用 FORTRAN 程式寫一個感應電動機啟動瞬間電壓、電流各項參數模擬,這算是整合了電機機械專業知識,因為我已經很熟 BASIC,轉換到 FORTRAN 不是太困難,也許不小心用 BASIC 語法寫程式,但是 Compiler 編譯時會提醒你語法錯誤改正。再者學校專題研究,我自選了 PLC 模擬器,也就是自己寫一個 PLC 編譯器,用 Apple II 模擬 PLC 工業控制,可以輸入階梯指令碼能模擬控制器 Relay、Timer 等運作,這些程式都是獨立完成,我想應該是從小習慣自己設計桌遊的關係。

專五最瘋狂了,即將期考卻沒有放心思在功課上,那時自己搞馬達轉速測速控制,這時已經會運用 Apple II 硬體,透過 Relay 控制玩具馬達啟動,然後用 Optocoupler 光耦合器擷取訊號來計數馬達轉速,因為轉速極快,非得用組合語言來寫,差不多花一週時間寫完一千多行程式,然後用三個禮拜的時間除錯,雖然最後完成專案很有成就,但是當時發誓以後再也不要再碰組合語言!

畢業後透過學校輔導室找了一家衛浴五金工廠工作,當時經理希望建立工廠的資訊系統,含括訂單處理、建立材料清單、各工作站加工生產管理、品質管理、庫存管理、出貨管理,這些項目我從未在學校學過,就邊做邊學了解整個工廠運作,大約一年後,設計薪資系統的大姊姊離職就由我接手,財會系統以 BASIC 設計,但是並不適合大型資料庫處理,所以我透過電腦雜誌了解最新電腦硬體已變成 IBM PC,資料庫可用 Lotus 123 / dBASE 等軟體工具,電腦間網路可用 Novell 相連接,這些東西都是從無到有獨自建立,感謝老闆們充分授權以及同事們的協助陸續順利把系統建置起來。

這樣一邊工作一邊準備插班大學,考到大學後又學了兩種程式語言 Pascal 和 C,Pascal 程式語法太過嚴謹,只能結構化設計程式,所有的東西都要定義,致使它不受多數人喜愛,而 C 語言是我職涯中使用最多的語言,因為它很適合低階系統開發,當時用它讀取英文課文拆解出英文單字方便查單字,另外,大學期間曾以 dBASE 設計一個英文字典系統獲得程式設計比賽冠軍,也曾在畢業旅行前夕受前工廠經理邀請,去彰化以十天時間開發生產管理系統。

在研究所又學了 MATLAB、ExSys,ExSys 是專家系統,我設計個三國志遊戲當期末作業,教授給了我不錯的分數。畢業論文則以 MATLAB + FORTRAN 混和設計操船模擬系統,使用 FORTRAN 語言是因為海洋大學的操船模擬機是由西德工程師設計,相關船舶運動方程式以 FORTRAN 撰寫,在時間有限下,先讓關鍵程式在 Intel 386 電腦可以編譯執行為首要,然後快速計算船體流力係數微分方程,最後由 MATLAB 呈現分析數據,這樣的混搭軟體架構,指導教授是完全授權由我自己處理,口試教授也驚訝我能夠及時完成這麼複雜的畢業論文成果,另外研二期間,還幫教授架設 Workstation 和網路知道有 UNIX OS。

續下文 ‧‧‧‧‧

沒有留言:

張貼留言