2017年2月14日 星期二

程式設計的第 00 堂課:學習寫程式的基礎

程式設計,李侑青,雞排
學程式不懂炸雞排也要吃到美味的雞排啊!
「程式設計」系列課程,目標是以國中生為對象所展開的程式設計教學。也許有人會質疑國中生學寫程式會不會太早,或者認定國中生只能學些程式的皮毛。我對此不以為然。由於身為資訊工程博士的我卻不知道路邊攤炸雞排的配方與製作流程,我明白,學程式與會炸雞排無關;反之,學了炸雞排就懂得炸雞排,學了寫程式就懂得寫程式。如果國中生可以學會炸出好吃的雞排,我相信國中生也可以學會寫出好用的程式。
我認為,以國中生或大學生為教學對象的程式課程,差別只在於能使用的數學工具而已。

基於小學的數學基礎,國中生大概懂得四則運算、有理數、一元一次方程式、形狀、單位。隨著國中三年數學課程,學生會逐步學習到二元一次方程式、三角形的幾何特性、認識統計圖表。高中生則會學到多項式、數列與級數、指數對數三角函數、機率與統計、代數與空間向量。大學生或許還會學到微積分、工程數學、線性代數、統計分析吧!以上列舉了這麼多冗長又有看沒有懂的數學名詞,似乎讓人對學習程式望之卻步。然而我要申明:這都與學習程式無關。學習程式,你不需要優秀的數學背景,你不需要背誦國文史地,你也不需要良好的運動能力;你只需要坐在電腦前,開始學習程式。

如果把寫程式比喻為炸雞排,是的,我相信數學理化基礎有助於研究雞排配方,我也相信文史表達能力有助於推廣雞排業務,但更重要的前提是,要有炸得出賣得出去的雞排配方,在此之上做雞排配方改良研究或業務推廣才有意義。否則,一堆懂得數學理化文史地理、卻連雞肉的好壞都分辨不出來的人,談何從零開始研發出第一塊炸雞排?相同的道理,學習程式所需要的基礎不是龐雜的數學文史地理知識,而是擁有確實的意圖,學習製作出一個自己用得著的程式,感受程式帶來的方便、成就與喜悅。

回想一下我們對於雞排的記憶:也許曾吃過家裡炸出好吃的雞排,配著汽水,品嚐家常的美味;也曾吃過巷弄裡的攤販所炸的香酥雞排;把視野放遠,也許曾看過許多雞排店使用著連鎖的品牌,雇用工讀生炸出品質一致的雞排;應該也從電視中看過,一些國際速食連鎖店的炸雞塊廣告。名為炸雞排(雞塊)的食物能從居家點心發展成全球連鎖企業的產品,美味只是基本條件,還需要持續地產品進化、行銷、經營、管理,才能在嚴酷的市場競爭中生存。我們明白經營雞排企業不僅是炸雞排,相同地理解,程式設計這個產業也不僅是寫程式。

懂得數學,程式可以協助執行紙筆無法比擬的高速、大量數學計算。再懂得物理,程式與數學可以協助科學研究數據分析。再懂得土木工程,程式、數學與物理可以協助建築工程設計及模擬。數學、物理、土木、建築,各自都是一門學問。當有程式之後,程式讓各個學問發揮出紙筆作業不可能獲得的成就。另一方面,即便程式本身是一門學問,若沒有與其他領域的知識結合,則程式的重要性將大打折扣。程式是一個幫助發揮的工具,學習程式雖然不需要特別的基礎知識,但唯有將程式應用於人們生活中的領域內,才發揮出程式的價值。換言之,程式不外乎對人的關懷。

舉例來說。數學家用紙筆計算,慢又容易計算錯誤;寫個程式幫助數學家計算,讓數學家感受到程式帶來的好處。會計師用紙筆記帳,對各項成本交易報表焦頭爛額;寫個進銷存記帳程式幫助會計師管理財務報表,程式讓會計師省下繁複的報表工作。從前的商人需要實體店面才能經營商店;現在透過程式,提供了網路商城線上購物服務,創業者與消費者透過程式在虛擬世界建立連結。更不用說 Facebook、Line 等等社交通訊程式,幾乎是現代人生活聯繫不可或缺的工具。所以,真要我為學習寫程式設定一個基礎,我會說是人文關懷吧!而這個基礎,不僅在學習寫程式前要存有關懷周遭家人朋友的心,在學習寫程式之後要持續擴大關心對象,嘗試理解他人的需求,然後思考如何使用程式來幫助他人、滿足需求、解決問題。

程式好比是畫家的筆、音樂家的琴,透過程式這個工具,實踐你心中那個幫助人的藍圖。如果你有一顆想幫助別人的心,歡迎你來學習程式設計。

作者資訊
李侑青
國立中央大學資訊工程博士
第七屆台灣省藥用植物學會理事長
田徑隊運動傷害防護教練
臉書:李阿青 (fcrdxesz@hotmail.com)

有著作權,侵害必究
本網站內所有資料之著作權、所有權與智慧財產權,包括內容、文字、圖片、聲音、影像、程式碼等均為李侑青所有或經作者同意合法使用。

沒有留言:

張貼留言