電腦科學(Computer Science)無疑是現在最熱門的學科之一,這領域的工作薪水優渥、工作時間彈性,而且科技業對工程師、開發者的需求至今有增無減,科技龍頭們隨時虎視眈眈著出色的程式開發者、創意工作者,也因此吸引了許多人開始學 Coding。
寫程式不只是一種工作技能,更是一個可以實行點子、實現夢想的好途徑,任何人都可能在學寫程式的過程中,因為一個靈感而創作出價值幾十億美元的「課堂作業」!
對於寫程式新手來說,也不必將 Coding 視作如此艱鉅的挑戰,其實「學寫程式」也能想做「學彈吉他」,沒學過樂理(電腦科學背景)沒關係,只要一開始有人為你指引個學習方向,先學基本和弦跟指法 (基本程式功能跟語法),很快你也可以彈出一首簡單的歌(Code 出第一個程式)。
雖然寫程式這種東西跟學樂器一樣,天份絕對有影響,有些人音感(邏輯)特別好,學起來特別快、沒障礙,但是多練習(多 Code)絕對是成功的關鍵!之後你能夠演奏多複雜的歌曲、技巧有多嫻熟,所謂師傅引進門,這些「修行」就看個人啦。等到你到達一定的程度,建立起自己的 樂理知識(程式邏輯跟思維),別說吉他,其他樂器(其他程式語言)相信也能信手捻來。
最重要的是,學寫程式應該和學玩樂器一樣是輕鬆、有趣的,是一個能夠發揮創意、自由創作的途徑,一旦有了靈感,你也可能寫出一首百萬暢銷歌曲、千萬價值 APP。
這篇文章參考 Code.org 聯合創辦人 Hadi Partovi 提供給寫程式新手的幾個建議,介紹學程式語言應該從何開始,如何快速上手 Coding,並推薦幾個熱門的程式語言,讓新手們用最快的速度進入狀況。Let's do this!
在學任何語言之前,先試試圖像式程式工具
圖像式程式工具(Visual Programming or "Drag and Drop" Programming)也算是一種程式語言,但不需要學專業的程式語法(Syntax)就能進行開發。這種語言通常是用「拖拉方塊」的方式來寫程式,不 同的方塊有著不同的功能,讓開發程式像是玩拼圖、堆積木一樣「組合」起來。
Hadi Partovi 認為,這樣的拖拉式程式工具,最能快速建立起初學者寫程式的邏輯思維。毫無程式開發經驗的新手可以藉此認識程式語言的基本功能,例如迴圈、判斷式等,避免 一開始先花費太多時間背記各種功能的語法,然後因為少一個分號、少一個括號、或是拼錯一個字,而造成程式錯誤訊息一堆,程式思維還沒建立起來就已經挫折連 連。
麻省理工學院開發的 Scratch 、Code.org 的 Code Studio、還有 Google 的 Blockly 都屬於這種圖像式、拖拉式程式語言,這樣簡單的工具開發出來的程式也能很複雜、很有創意呢。
Scratch 的使用跟介紹,可以參考 Inside 文章:MIT 為孩子量身打造的程式語言 – Scratch 貓爪。
入門的第一種程式語言:Python
根據 Hadi Partovi 的說法,Python 對於初學者來說相對的容易。主要是因為 Python 語法強調簡單易讀,比起其他程式語言較為寬鬆,像是句尾不用加分號、變數不用事先宣告類型等,開發者不需要耗費太多時間專注在語法的細節上。值得一提的是,Python 的設計哲學是優雅、明確與簡單,其格言是「There is only one way to do it.」,這句話是想表達,用 Python 寫程式,一個目的只有一種寫法可以達成(盡可能只有一種寫法),以符合「簡單」的設計哲學。
但說到入門的程式語言,一定會造成一點爭議。除了 Python 以外,通常會有另一派支持先學 C 語言1。 兩種語言主要的分別是,C 語言是系統式語言 (System Programming Language),主要是用來替代原有的低階語言,為了程式的撰寫與維護,語法上會較為嚴謹,程式需要編譯、連結才能執行,可以有效發揮程式的效能;然 而 Python 則被視為描述式語言(Scripting Language),主要以靈活度取勝,程式無需編譯(正確來說,是自動「半編譯」,只編譯成 bytecode,而不用再往下編譯成 machine code),對初學者來說開發工作比較單純,只要專注在程式的邏輯功能。曾聽工程師這樣說過:「系統式語言節省系統資源,而描述式語言節省的是『程式人員的時間』。」
無論如何,兩種語言當然各有各的好,要我說,我會告訴你厲害的 Programmer 都是精通好幾種語言的。所以隨便哪種都好,先學就對了。
JavaScript 學起來絕對不吃虧
JavaScript 學起來可能沒有 Python 簡單,不過最大的優點,也是其無人能比的強大之處,就是跨平台。JavaScript 可以運行在 Mac、Windows、iOS、Android 等裝置上,跟 Chrome、Safari、Firefox、IE、Opera 等各式各樣的瀏覽器,雖然支援度有高有低,但基本上都支援!就連新推出的裝置,像是智慧型手錶,都會一定程度的支援 JavaScript。
對於 JavaScript 的這個特點,Hadi Partovi 說:「當你達到這種程度的普及,是不可能被淘汰的。(Once you reach that level of critical mass, it's not going away.)」
知名部落客兼開發者 Jeff Atwood 提起 JavaScript 時,甚至提出了一條 「Atwood 定律」2:「所 有能用 JavaScript 編寫的程式,最終都會被寫成 JavaScript。(Any application that can be written in JavaScript, will eventually be written in JavaScript.)」
這種道理大概就跟英文是國際通用語言一樣,英文講得嚇嚇叫絕對是一個職業利器啊!
接著玩 Ruby 跟 Ruby on Rails
Ruby 跟 Ruby on Rails 雖然有著相似的名稱,但其實是兩個完全不同的東西。Ruby 是一種描述式語言(Scripting Language),如上述的 Python。Ruby on Rails (也簡稱 Rails)則是用 Ruby 語言寫的網頁開發框架(Web App Framework)。簡單來說,Ruby 是一個語言,Ruby on Rails 則是一個平台,讓開發者能夠更簡單的在上面用 Ruby 進行網頁開發。
Hadi Partovi 認為 Ruby on Rails 是一個讓大家學習後端開發的超好工具,其最吸引人的地方就是,開發者不需做太多的原型設計(Prototyping),Code 寫好,成品就呼之欲出了!其彈性大、維護性高,修改起來很無痛。即使你決定專注於前端開發,例如當名網頁設計師,會一點 Ruby 跟 Ruby on Rails 也可以幫助你跟後端開發人員有更好的合作。
想更深入了解 Ruby 跟 Ruby on Rails,可以參考 Inside 的文章:「學習 Ruby 與 Rails 的最佳時機就是現在!」
會一點 HTML 跟 CSS 超加分
不管是自己創業還是到別的公司工作,你都很可能會需要建立網站、或修改網站內容,這 HTML 跟 CSS 便是網頁的基礎了。
HTML 跟 CSS 都不算是程式語言,HTML 正確的講法是「標籤語言(Markup Language)」,用來描述網站的內容、資訊,而 CSS 則是一種「樣式表(Stylesheet)」,目的是控制網頁內容顯示的樣子,為網頁添加背景、字型、顏色等效果。有興趣的話,推薦到 w3school 上學習。
HTML 跟 CSS 學起來不難,但學起來實在好處多多3! 舉例來說,你可以為自己打造一個個人網站(Portfolio Site or Resume Site),用來記錄個人成就跟經歷,應徵工作的時候還可以拿來當履歷用,超級加分!或是替你的公司修改網頁(非常可能是建在 WordPress 上),展現你的額外價值;或是單純的製作一個精美的 E-mail 給你的客戶、廠商,讓你獨樹一格、從百封 E-mail 中脫穎而出!
以上這些建議希望能給寫程式新手們一個學習方向,如果能利用上述五大招好好學習,相信你也不再是新手了!Happy Coding!
想知道還有哪些熱門程式語言,可以參考 Inside 文章:挑戰年薪 300 萬,學這些程式語言就對了!
留言列表