我的位置:首頁 >   > 

    Let’s do this!寫程式新手的入門指南

    發表時間:
    Jewel 一月 8, 2015 

    電腦科學(Computer Science)無疑是現在最熱門的學科之一,這領域的工作薪水優渥、工作時間彈性,而且科技業對工程師、開發者的需求至今有增無減,科技龍頭們隨時虎視眈眈著出色的程式開發者、創意工作者,也因此吸引了許多人開始學 Coding。

    寫程式不只是一種工作技能,更是一個可以實行點子、實現夢想的好途徑,任何人都可能在學寫程式的過程中,因為一個靈感而創作出價值幾十億美元的「課堂作業」!

    對於寫程式新手來說,也不必將 Coding 視作如此艱鉅的挑戰,其實「學寫程式」也能想做「學彈吉他」,沒學過樂理(電腦科學背景)沒關係,只要一開始有人為你指引個學習方向,先學基本和弦跟指法(基本程式功能跟語法),很快你也可以彈出一首簡單的歌(Code 出第一個程式)。

    雖然寫程式這種東西跟學樂器一樣,天份絕對有影響,有些人音感(邏輯)特別好,學起來特別快、沒障礙,但是多練習(多 Code)絕對是成功的關鍵!之後你能夠演奏多複雜的歌曲、技巧有多嫻熟,所謂師傅引進門,這些「修行」就看個人啦。等到你到達一定的程度,建立起自己的樂理知識(程式邏輯跟思維),別說吉他,其他樂器(其他程式語言)相信也能信手捻來。

    最重要的是,學寫程式應該和學玩樂器一樣是輕鬆、有趣的,是一個能夠發揮創意、自由創作的途徑,一旦有了靈感,你也可能寫出一首百萬暢銷歌曲、千萬價值 APP。

    這篇文章參考 Code.org 聯合創辦人 Hadi Partovi 提供給寫程式新手的幾個建議,介紹學程式語言應該從何開始,如何快速上手 Coding,並推薦幾個熱門的程式語言,讓新手們用最快的速度進入狀況。Let's do this!

    Step 1) 在學任何語言之前,先試試圖像式程式工具

    圖像式程式工具(Visual Programming or "Drag and Drop" Programming)也算是一種程式語言,但不需要學專業的程式語法(Syntax)就能進行開發。這種語言通常是用「拖拉方塊」的方式來寫程式,不同的方塊有著不同的功能,讓開發程式像是玩拼圖、堆積木一樣「組合」起來。

    Hadi Partovi 認為,這樣的拖拉式程式工具,最能快速建立起初學者寫程式的邏輯思維。毫無程式開發經驗的新手可以藉此認識程式語言的基本功能,例如迴圈、判斷式等,避免一開始先花費太多時間背記各種功能的語法,然後因為少一個分號、少一個括號、或是拼錯一個字,而造成程式錯誤訊息一堆,程式思維還沒建立起來就已經挫折連連。

    麻省理工學院開發的 Scratch 、Code.org 的 Code Studio、還有 Google 的 Blockly 都屬於這種圖像式、拖拉式程式語言,這樣簡單的工具開發出來的程式也能很複雜、很有創意呢。

    Scratch 的使用跟介紹,可以參考 Inside 文章:MIT 為孩子量身打造的程式語言 – Scratch 貓爪

    Step 2) 入門的第一種程式語言: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),對初學者來說開發工作比較單純,只要專注在程式的邏輯功能。曾聽工程師這樣說過:「系統式語言節省系統資源,而描述式語言節省的是『程式人員的時間』。」

    考考你,在 C 跟 Python 裡,如何在沒有第三個變數的情況下,將兩個變數賦值對換?

    無論如何,兩種語言當然各有各的好,要我說,我會告訴你厲害的 Programmer 都是精通好幾種語言的。所以隨便哪種都好,先學就對了。

    Step 3) 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.)」

    這種道理大概就跟英文是國際通用語言一樣,英文講得嚇嚇叫絕對是一個職業利器啊!

    Step 4) 接著玩 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 的最佳時機就是現在!」

    Step 5) 會一點 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!