中小學電腦科,應該點樣教?

中小學電腦科,應該點樣教?

莫乃光議員最近撰文表示香港中小學 ICT 教育落後,修課人數不斷下跌,希望 ICT 可以成為必修課。

講起呢個問題,牽連好多相關議題,諗起都好沉重,好唏噓,好無力。講到老本行嘅嘢,要寫幾千字都得,不過早排忙,而家回緊血,唔長篇大論喇。

我會考(’02)同高考(’04)都有考電腦科,兩次都係「自修」,基本上就係考天才。你問我嗰啲嘢有冇用?我唔敢講冇。不過,作為中學生有冇需要知? 我會話學 F=ma 會比較抵玩。

電腦呢個學科最特別嘅係,幾乎所有「入門」嘢都係好無聊嘅。你知道 8 bits = 1 byte, 1024 bytes = 1 kilobyte 有冇用?有,梗係有。你知道 C language 用 printf(), Pascal 用 writeln 又有冇用?有掛。

但個問題係,一般學生學完呢堆嘢,係唔會覺得學到嘢,更加唔會覺得自己識得應用。個感覺就好似,你教學生中文,淨係背默生字,但唔教佢欣賞文學作品,唔教佢自己造句作文。咁佢就會覺得,嗚呀,學中文真係冇x用。

電腦科另外一個範疇,就係咩「電腦應用」。即係「電腦常識」。嗰種問題嘅無聊程度,就好似「以下邊幾個地方可以買菜呀? (1) 墳場 (2) 街市 (3) 超市 (4) 書店」。你以為我講笑?睇下張圖先講。

用家手冊
http://www.hkeaa.edu.hk/DocLibrary/HKDSE/Subject_Information/ict/PP-ict-E.pdf

其實中學電腦科教育曾幾何時都會考學生點樣「作文」(即係寫program),但係據講近年編程嘅比重減少 (太「深」嘛,嘿嘿),教你「茴字有四種寫法」、「買菜就去街市」、「半斤即係八兩」嘅內容就比較多。

咁呢啲問題應該點樣解決?我都唔知。出電腦科嘅試卷係極難,所以啲問題先會問得咁奇怪。點解呢?咁就要探究下「電腦」係乜家伙。

「電腦」呢個概念,一般上溯至 Charles Babbage 個 difference engine,但現代嘅電腦嘅始祖係 Von Neumann,而 Von Neumann architecture 其中一個重要元素就係佢係一個 Universal Turing Machine。上面嗰堆名你未聽過唔緊要,總之電腦就係一種「Universal Machine」,即係你叫佢 **做乜都得**。

正正因為「做乜都得」,所以先至難學。你學歷史,本書上面寫住「秦始皇滅六國」,咁你就唔可以講「齊桓公滅六國」;你學化學,實驗結果話你聽強酸強鹼中和係放熱反應,你唔可以話佢係吸熱反應;基本上大部份學科都有明確嘅現實世界嘅限制, 唔係「做乜都得」。

但電腦真係「做乜都得」。所有所謂電腦「常識」,全部都只不過係「慣例」,全部都有可能不斷咁變化。你以為唔可以用 word processor 去聽歌咩?其實係得架;你以為 browser 太慢唔可以用 Javascript 嚟行 virtual machine?你以為 Windows 系統行唔到 Unix 嘅軟件?你以為 User Manual 一定冇 source code?少年你真係太年輕。咁如果真係有條問題問「聽歌應該用咩軟件?」,咁我梗係答「music player」啦,唔通真係答「word processor」咩。不過,咁樣嘅問題咪好鳩戇囉。

咁電腦係咪真係「做乜都得」先?咁其實又唔係嘅。第一,硬件上嘅限制係有嘅,不過硬件變得好快,例如廿年前你唔會相信手機可以 video chat,但而家已經係智能電話嘅基本功能,所以如果你太著重硬件嘅皮毛嘢,咁呢啲知識喺學生畢業過幾年就可能過時;第二,有形而上嘅限制,但呢種限制,幾近係「哲學」。講緊 Halting Problem ,或者係 NP-Hard 呢種。(不過一講呢啲,又俾人話我鳩噏,其實好傷心der)

除咗硬件同邏輯上嘅限制,一部電腦真係「做乜都得」。咁即係點呢?即係本身個電腦真係做乜都得,你要出試卷,理論上只可以問「點樣做 XXX?」,但唔可以問「有咩唔做得」或者「有咩係錯」。

其實又唔係唔可以問「有咩唔做得」,但要先做假設。例如,先假設 A=1,再假設 A 只可以有一個數值,咁當然 A ≠ 2 啦。即係話,如果阿媽係女人,再假設女人唔係男人,咁阿媽就唔係男人喇。

呢個情況係非常搞笑嘅,因為最後出卷為咗簡潔,好多時會省略前設,直接要求考生答「阿媽唔係男人」。咁當然就係出卷唔嚴謹,因為阿媽可以係變性人,雙性人 (乜都得嘛)。相反,到你真係寫晒啲前設出嚟,咁條問題就變成閱讀理解,考你「邏輯」,唔係考你電腦。

咁可以點做呢?一係就只問「點樣做 XXX?」嘅問題。即係考編程 (programming)。即係「好有邏輯咁作文」。即係起碼九成 Homosapiens 都冇能力做得好嘅事情。即係「好深」。即係冇人肯揀呢科。即係唔可以太多出呢類問題。

另一個方法,就係根據一堆現有嘅國際標準去問問題。你話「database 可以做啲乜」呢種問題唔嚴僅?冇問題,咁可以改成「SQL-92 可以做啲乜」架嘛。你話「whitespace 同 comments 唔會影響程式嘅邏輯」唔嚴僅?唔緊要,你可以改成「會 whitespace 同 comments 唔影響 C++14 程式嘅邏輯」架嘛。

但個問題係,除非你日後從事電腦行業,兼且你專攻呢範,否則你識 SQL-92 、C++14 嘅細節真係冇x用的。[1]

好喇,我諗我已經講晒所有電腦科可以教同可以考嘅內容類別。簡單講就係,一係就係啲十年後會唔同晒嘅知識,一係就係啲非常形而上嘅嘢,一係就係啲極專門冇x用嘅嘢,一係就絕大部份考生冇可能學得識嘅嘢。

點解啲人會覺得電腦科冇用?其實都係咁解。大家坊間見識嘅電腦人,絕大部份都係識埋一大堆「茴字四種寫法」呢類知識嘅人。(十年後,茴字變咗有三十種寫法。) 所以成日有人呻,咩 IT 嘢要係咁追技術。

至於我喺中學時期學嘅電腦嘢,斷唔只係「十年後會唔同晒嘅知識」咁簡單,而係一大堆解難思維同常用嘅解難方法。呢啲嘢,唔係每星期上兩個小時課堂就可以學識,而係一定要好專心咁每日花幾個鐘,每個周末再花十幾個鐘,走去學嘅嘢。我唔相信有中間路線。況且,呢啲思維有一半係天生嘅,唔係人人都學得識。(當然啦,「唔係人人都學得識」唔代表唔考得。不過會否違反「訓練學生思維」呢個本意? )

可能有人會話,喂唔係喎,所有學科都係要下苦功架啦!但問題係,我從來冇一日操幾個小時 physics,但而家我都識得計 F=ma,我而家都識得點計拋物線 (不過可能要少少熱身),而呢類知識,由牛頓到今日,幾百年嚟都冇乜點變過,一樣咁實用。相反,有幾多人讀完 ICT 十年之後寫得出一個完整嘅程式?[2] 可以用到嗰啲知識作最基本嘅應用?如果唔計工作上需要識編程嗰啲人,我估應該接近零。而,你淨係寫得出 hello world,有x用咩。如果真係要計數, Excel 會實用好多。[3]

所以我成日都覺得,電腦野,一係唔學,一學,就要精,起碼要去到可以自己做啲小型創作嘅地步。中間根本冇任何走棧嘅餘地。箇中嘅分別,大概就類似,一個系統,一係 Turing Complete, 一係唔係。中間亦都冇任何走棧餘地。

所以,電腦科應該點樣教先有用?我真係唔知。係咪個個人花十年八載光陰去學,就係一件好事呢?我都唔知。

Further reading: Programming is Better Philosophy than Philosophy

—-
[1] 如果真係要由中學開始學好一套 standard,我極力推薦 POSIX… 背得出 POSIX 嘅人,真係一定唔會餓死…
[2] 順帶一題,需然話 C language 係 1970 年已經存在,但 1970 年嘅 C, 同今日業內接受嘅 C,無論 syntax 同 style (風格) 都係有少少分別架。
[3] 不過,用 Excel,又係呢個問題。十年後,Excel 個介面會唔會唔同晒?甚至,微軟仲會唔會存在?仲會唔會有人用 Excel?冇人知。

Photo Credit: CC BY 2.0 Nate Grigg https://www.flickr.com/photos/nateone/3792232737/

啱睇就Like埋我地個Facebook專頁
全職文字工作者、應用哲學家。對「邏輯一致性」、「系統複雜度」之類的偏門學問獨有心得。在美利堅合眾帝國邪惡資本主義集團的領導下,嘗試改變世界。

Leave a Comment

Your email address will not be published. Required fields are marked *