許多同學對於 C 語言可以說是又愛又恨, 看起來文法不多, 用起來卻千變萬化, 其實說穿了 C 語言的變化都圍繞著資料的表示法、 硬體系統的架構、與系統軟體 (作業系統) 提供的環境三者打轉, 運氣好又肯努力的同學撥雲見日看穿了這些變化, 回到隱藏著的原點, C 語言不過只提供了算術邏輯運算、 資料搬移、 和控制移轉這三大類敘述, 輔以資料結構的設計, 如此而已, 你還是可以運用 C 語言來練習如何將實際世界裡的問題抽象地表達出來, 怕什麼呢?
學習 C 語言其實是一個很好的起點, 可以由應用程式的角度深入地暸解電腦的運作方式、 切入系統軟體的操作, 太急於成效的同學往往想跳過 C 語言, 趕快去看看 Basic, Visual Basic, Pascal, Delphi, C++, C++ Builder, 或是 Java 等等語言的威力, 可是這些語言總是技巧地把系統相關的問題都包裝起來, 不讓你看到, 可是沒有問題好嗎? 如果我們的目標是賺 $$$, 沒有問題當然是最好的, 可是各位的目標要放在深入地暸解電腦系統, 未來當電腦系統慢慢地演進時, 你才能以紮實的基礎看清電腦系統演進的方向, 暸解電腦系統的特長與限制。 在這個階段裡, 看不到問題才是最大的問題, 各位資訊系的同學目標要放在系統軟體與應用軟體的設計之上, 需要兩者兼顧, 才能夠看得比較遠, 走得比較快。
現在在學校裡你大可不必怕學不會而受到打擊, 不會的, 學校裡能有什麼打擊呢? 逃避到了最後, 進了社會後才會受到真正的打擊呀! 這種學習困難的東西就好像金庸武俠小說中要練習的內功心法一樣, 開始時慢、 不易進入、 但是一旦清楚了、領悟了, 保證你對相關的東西都能夠觸類旁通。 計算機的硬體微觀地來看的話, 有 CPU 可以聽命令來執行動作, 有記憶體可以牢靠地記錄資料, 有輸出輸入裝置乖乖地聽命令來執行動作, 所以很明顯地是程序式的架構, 要操作這些元件基本上就是程序化的程式, 如果你寫驅動程式層級的程式, 必然是使用程序式的程式設計方法。 雖然由高階抽象的角度來看, 任何硬體/軟體都可以看成一個物件, 可以運用物件導向式的操作來刻劃, 但是物件化的環境為了考慮程式的重用性與擴充性, 終究效率比較差, 雖然在製作較大規模的軟體時物件導向方法比較適合, 但是你也不需要太擔心物件導向的程式設計會吃掉程序式的程式設計, 各有所長, 正確地應用會增進效率的。