2013年5月8日 星期三

[教學] 初學者學程式?


這篇本來是我在某 BBS 回應別人的文章的,不過自己看了看,覺得這樣的學習流程還挺連貫 、而且也算有趣,所以就轉貼到自己的 Blog 了。

學寫程式真的不難,它不用花大錢買器材,網路上的免錢資訊也多到不行,更重要的是它入門門坎低,有心的話國中生也能寫一手好程式,不過有二點要先勞記在心裏:



  1. 寫程式是一種技術,所有的技術需要大量且 "重覆" 的練習。
  2. 別去補習班! :p
以下是我建議的學習過程

Phase 1: 學習基本的 C 語言 (150小時 ~ 200小時)


[注意] 不要去買路邊書店 (金石X或誠X) 裏的 C 語言入門書!

這種打基礎的東西一定要大量的練習,要練習到矇著眼也能寫,路邊那種快快樂樂學 C 語言的大眾讀物極度的缺乏練習題。而且一本看完寫完哪需要 150 小時? 頂多 10 小時就結束了 = =a

請去台北重慶南路原文書局或網路上買大學用的二手原文書,那種原文書裏每章後面都會有幾十個練習題,一個好的教科書每個練習題都會將之前的章節套進習題中,通通把它作完吧!

書中不會教你怎麼安裝或設定免費的 C 語言開發環境,所以請先花個五到十個小時 google "free C compiler" 並學習安裝,如果 google 了十個小時還裝不起來,那大概就表示該放棄了...

(可以找人教啦,但寫程式這種工作要不斷的學新東西,沒有足夠的 google 能力,會做到去賣雞排的 :p)


Phase 2: 在 "特定平台" 學習 Java (100小時)


"特定平台" 我建議的是 Android 手機,原因
  1. 在自己手機上寫東西比較有成就感
  2. Android 開發環境不用錢,而且在 Windows 上可以很簡單就搞定
有了第一階段的基礎,學寫 Java 不會是什麼難事,但跟第一階段不同,不只是要寫 "基本" 的語法,而是要真的開始寫些可以給其他人玩的程式了。
  • 花個二三小時,Google "Android Development" 或是 "Android Eclipse" 把軟體裝好吧
  • 路上書店買本 "快快樂樂學 Android" 與 "Java 我也會" 之類的大眾讀物。
  • 把 Android 的前二章看完,然後把 Java 範例在 Android 全寫一次 (20 - 30 hours)
  • 把 Android 書中的範例全寫一次 (20-30 hours)
  • 寫個不需要用到網路功能的小遊戲吧! (40-60 hours) [建議] 畫面醜一點也沒關係的單機開心農場 XD 因為會用到 Timer/Thread/GUI/各種判斷... etc.,算是第一個大 project。
  • 覺得寫的好的話... 開個 Google Play 帳戶上架,給人罵看看吧 :p

Phase 3: Linux & Server (100 hours)


到第二階段結束時,已經算是一般人說的 "會寫程式" 了,但這年頭什麼東西都要扯到網路,所以 server 也是必學的。
  • Google "CentOS",下載免費的 Linux 環境,拿一台不要用的爛電腦重灌成最基本的 text-mode Linux。(10 hours) 如果不想重灌且對自己的能力有信心,可以 google "VM" 
  • Google "gcc",學習如何在 Linux 上寫 C 程式 (10 hours) 當然沒那麼簡單啦,從 Linux 基本操作、更新、text editor 使用法都要學,所以 10 小時差不多
  • Google "socket server" 或 "linux C socket server" 從零開始用 Phase 1 的 C 寫一個簡單的 socket server 吧! (30 hours) 搞懂 "網路" 或 "socket" 是什麼大概就要花個四五個小時了 :p
  • 結合 Phase 2 & Phase 3,完成你第一個手機的線上遊戲吧! (50 hours) 不用太難,像是線上圈圈叉叉或是聊天室就好了

Phase 4: Linux Server - Apache+Tomcat & MySQL (100 hours)


一個真正的線上服務 (遊戲啦、網站啦、公司管理啦) 很難不和資料庫扯上關係,所以 Phase 4 除了學習別人寫好的 Server (Apache+Tomcat) 外,也要學習資料庫的存取。
  • 在 Linux 上安裝 Apache+Tomcat
  • Google "Servlet Tomcat" 並用 Java 重寫 (3-4) 的 Server (Web Service 架構)
  • Google "MySQL Java" 學習用 Java 與資料庫溝通,將所有連線過的使用者存起來。
  • 在 Phase 3 的手機軟體加入 "使用者註冊" 的功能,並上傳 server 存在資料庫中。
  • "稍微" 學一下 HTML,做一個網頁,讓自己能隨時隨地看到使用統計資料。

Phase 5-1: (Option): HTML / PHP / JavaScript...


這些都是做網站相關的技術了,要不要學要看有沒有興趣與用不用的到,不過有了 Phase 1 ~ Phase 4 的基礎,學這些也花不了什麼時間,我就不估了。 =..=


Phase 5-2 (Option): AI / OS / Network...


這些是專業的資工課程,不過在 Phase 1 ~ Phase 4 中,應該已經遇到一些相關的問題,且應該用 Google 找過答案了,想精進再買書來讀吧!

就這樣,打完收工! 全部大概是 600 小時,一天十小時只要二個月就學成了。除了要買幾本書外和一台自己的電腦與手機外,不用花大錢,通通是 Google 就有的東西,整套學完還加上幾個作品,說找不到好工作我很難相信,不說別的,PTT 或外包網滿地都是可以接的 case 了。

沒有留言:

張貼留言