寫程式疑惑

我大學的時候學了三種語言, pascal與fortran與組合語言,寫比較多的是pascal。進了研究所後,接觸了unix,改用C語言來做影像處理。念博士班的時候則是加上了matlab。工作的時候,做的是硬體,要用CPLD,所以又看了VHDL。來大學教書後,研究用了NS2 模擬器,又接觸了C++,了解了物件的概念與程式設計。現在,開始教學生Python。

有人說現在的學生很辛苦,要學很多語言,或是從另外一個角度來討論,應該學哪個語言好呢? 這真是大哉問啊。從結果來看,為何會有這麼多語言,原因很簡單,因為各有千秋嘛。那到底要學哪個語言才好呢?  

這個問題需要回到根本的關鍵,那就是對於程式設計於言,最重要的是甚麼? 我先舉兩個例子。

我是做網路protocol的,做一個無線TDMA的slotted 系統,幾個slot為一個週期,設備只要在需要工作的時候醒過來,其餘的時候就去睡覺。為了讓學生可以快上手,我說明了醒過來之後的流程架構,然後就讓他去開發。舉例來說,一個周期有10個slot,這個設備可能第 1, 3 slot需要醒過來做事情,其餘可以睡覺,其他的設備可能會有不同的排程。等到他開發完,必須一直問他最後程式怎麼寫的,好久之後我才發現,他是給的slot都醒過來,檢查需不需要做事情,比方說剛剛的例子,slot 4 ~ 10是不做事的,應該可以由slot 3做完事後,直接睡到 slot 1,但是他卻是每個slot醒過來,看看是否有事情需要執行,沒有事就回去睡覺。要避免這樣的困擾,就需要做review,但是問題是很多學生講不清楚他想怎麼寫,也不太想好好從頭講清楚,總是我問一點才說一點。雖然我要求要畫流程圖,但是總是做不到,因為流程圖都是寫論文的時候才畫上去,常常流程圖與程式還對不起來。

另外一個例子我認為最經典,有個學生直接跟我抱怨說,"老師,我會寫,但是不會說啊"。 這個學生很認真,並不是偷懶的學生,但是有一步就是卡在那裏。

不曉得這會讓你有甚麼想法呢? 可以再與我討論。