本文作者 Nick 是加州州立大學電腦碩士,畢業後在矽谷工作,至今軟體經驗超過三十年。Nick 在十四歲時自學程式設計,當中遇到很多問題與困難點,因此非常了解初學者的痛點,在此與大家分享學習程式語言的訣竅與方法。
很多人會想,那先挑一種程式語言學看看,於是就會看到一些網站介紹各種語言的特性:
- C 語言很強大,可以用於內嵌式系統,也可開發服務器級的應用
- Python 語法容易上手而且應用廣泛
- Swift 是蘋果新推出的程式語言取代 Objective-C
- Java 是跨平台的程式語言,很多人使用
這個 list 可以繼續說下去,也可以講解得更仔細,但是我不這麼做,因為很多初學者會覺得,你跟我講這些我就聽不懂啊,而且聽得霧煞煞,是要我怎樣?
所以,你可以忘記這些東西,因為你的確是聽不懂,更別說做出判斷。
程式語言相關的領域需要時間的累積才能越懂越多,初學者一開始就接觸這些東西,並不能加快學習程式,反而會覺得怎麼那麼多東西,學都學不完,有一種「排山倒海」被淹沒的感覺。
初學者要學習的,是一個核心,這個核心其實跟這些知識無關。你不懂這些知識,也可以學會這個核心。然而學會了這個核心,你就可以自己開始寫一些程式,透過「做中學、學中做」,你就會自然而然學習到其他相關知識。
所以重點是這個「核心」!你要學的是各種程式語言之間的共通道理,你先透過任何一個程式語言學會這個共通道理之後,其他只是一些語法的不同而已。舉例來說,你看看下面從左到右有三個程式語言,每個程式語言各有兩行的程式碼:
你先從最左邊的程式語言 (1) 來看,大概可以看出來:
- 第一行:變數 `a` 等於 `10`
- 第二行:變數 `b` 等於 `a` 加上 `5`
至於程式語言 (2) 和程式語言 (3) 也是第一行將 `a` 等於 `10`, 第二行將 `b` 等於 `a` 加上 `5`。
你現在看不懂程式碼沒關係,或者不知道什麼是變數也沒關係,主要先看看這三個程式語言是不是都有點類似?根本就看起來差不多啊?甚至程式語言 (2) 和程式語言 (3) 根本就是一模一樣的兩行啊!
沒錯!他們看起來都差不多,甚至 (2) 和 (3) 根本一樣,而這三個程式語言分別是:
- 程式語言 (1) 就是 Swift
- 程式語言 (2) 就是 C 語言
- 程式語言 (3) 就是 Java
所以說,先學哪一個有差嗎?重點是要學會裡面共通的道理(例如變數、流程控制、迴圈、函數等等),再學另一個程式語言是不過是語法換一下而已,有一種「一通百通」的概念。
總要選一個程式語言開始吧?
如果你並沒有什麼想法,希望我建議的話,首先我不建議從「標記語言」(Markup Language)開始,例如網頁的 HTML/CSS 就是屬於標記語言,與一般的程式語言是不太一樣的。例如你學會了 HTML 再去學 C 語言,你會發現根本是不一樣的東西,並沒有我之前講的程式語言間「共通的道理」。如果你就是對網頁有興趣,那除了 HTML/CSS 以外還要學 Javascript 或者 PHP,這兩個語言跟其他程式語言就相通了。
至於從哪種程式語言開始,我是很建議從蘋果的 Swift 開始,原因如下:
- Swift 可以開發 iPhone/iPad/Mac 的 App,而且已經開源,以後會有更多平台使用 Swift。
- Swift 的開發環境我用過整合最好的開發環境,非常簡單上手,同時又很強大。
- Swift 語言完整性夠,學會 Swift 再學其他程式語言都很順理成章。
- 手機 App 的應用廣泛,與生活結合,很有實用性。你寫出的程式可以直接在實際生活中使用,會增加學習的興趣與動力。
- App 開發在職場上仍是搶手的職缺,只要你有一定的能力,有很多薪資不錯的工作根本探囊取物。
看清未來趨勢,成為科技搶手人才
從種種的跡象顯示,軟體的確已經成為下個世代的產業主流,例如 AI 人工智慧、App、大數據、物聯網等等的重要趨勢都是建立在軟體設計上面的應用。由於台灣這幾年面臨轉型危機,無論是傳產還是新創公司,對於軟體能力的需求越來越大,薪資福利也都開得很不錯,目前呈現粥多僧少的現象可以好好利用。最後這裡附上三小時線上課程(四選一),可以透過我們合作夥伴聯成電腦的獨家優點來提升自己的軟體能力:
- 深耕教育超過 25 餘年,推動國人的電腦專業不遺餘力,培育上萬人進入電腦軟體產業。
- 首創 168 安心學習服務,透過符合政府評核的一貫式教學,讓學習與就業緊密結合。
- 超過十個就業機會、全國徵才見面會、大型廠商聯合徵才讓結訓學員挑選。