開課資訊:Unix 系統程式設計
本學期,應 [
修平技術學院] 資訊網路技術系系主任高國峰博士的邀請,合開「Unix 系統程式設計」的課程,小弟負責除錯與程式開發技巧的部份,從十一月中旬到十二月中旬的每週一 (11/16, 11/23, 12/7, 12/14, 12/21) 10:00-14:00,為該系學生介紹 GNU/Linux 平台下,GNU toolchain 與 gdb 的操作,希望能貫徹 John Dewey (1938) 的「做中學」理論,落實於 Unix 系統程式設計。
John Dewey 注重「做中學」的教育方法,教育才要注重實際經驗,要從做中學習。而在 GNU/Linux 的環境,寫程式本身是相當幸運的事,只要能掌握方法,從系統開發工具到上層的軟體,都唾手可得,有了 apt-get / yum 後,就好像電腦裝了超級市場一般,隨時隨地都可取得這些豐富的資源。第一週上課前,在教室外觀察學生十分鐘,發現不少學生在「種田」、「開餐廳」(開心農場用語),於是乾脆把課程專題目標設定為「打造山寨開心農場」,具體的目標如下:
- 從一個具體而微的 Embedded AJAX 系統出發,透過 gdb 去追蹤分析,進而作擴充
- 掌握 UNIX 系統程式開發的技巧
- 擴充給定簡單的系統,實做出部份「開心農場」的功能
當然,既然已聲明是「山寨」版本,自然功能有限,但重點是享受親手打造與掌握度,所以,我們會從 web server, CGI, AJAX (前端) 都自己慢慢刻,使用 C 語言及 HTML/JavaScript,以下是初期的系統運作畫面:

由上圖可見,我們將實做簡單的 web server + CGI,以 AJAX 作為立即資料的呈現,並且提供 login / logging 等功能。那,為什麼不選定 Perl, Python, Ruby, PHP 等成熟的開發環境,反而堅持「
慣 C」來作這樣的功能呢?筆者的考量點有三個:
- 使用 C 語言撰寫系統,較能掌握系統運行的狀況,而不會迷失在程式語言 / framework 的特性中
- 可隨時用 gdb 追蹤與除錯整個系統 (web server + CGI)
- 向學生證明,只要短短幾百行,還是能做出符合期望的系統出來 (Just Work)
坊間有頗多 Unix 系統程式設計的教材,往往都是 API 導向,就是詳盡的探討 system call 的使用,卻鮮少一個案例可貫通系統程式,而本系列的課程,希望作些改變。感謝系主任高國峰博士給筆者這個機會,未來幾周我們將會繼續進行。
由 jserv 發表於 November 29, 2009 01:10 AM