# 自學程式，你應該知道的四件事情（一）我該學什麼程式語言？

> 在這個「全民學寫程式」的年代，寫程式變得越來越容易，很多人開始前，都會想「我該學什麼程式語言？」，這篇文章，我將帶你透過系統性的思考，來破解「該學什麼程式語言？」的迷思。

Published: 2019-07-19
URL: https://kaochenlong.com/how-to-choose-a-programming-languge

---

在這「全民學寫程式」的年代，寫程式的門檻逐漸降低，無論你是打算成為軟體工程師、還是希望透過「自學寫程式」來提升自己的職場競爭力，我都想跟各位分享四件事情；這四件事情是我過去寫程式二十多年以及教學十年經驗來所累積的心得，目的很簡單：

「協助你縮短程式語言的學習時間，並達到更好的成效」

我們現在開始吧！

&lt;!--more--&gt;

1. [我該學什麼程式語言？](/2019/07/19/how-to-choose-a-programming-languge/)
2. [對新手來說，如何「喜歡上寫程式」？](/2020/03/06/enjoy-programming/)
3. [程式的學習曲線與大魔王「絕望沙漠」](/2020/03/07/despite-of-desert/)
4. [設定容易評量且具體的學習目標](/2020/04/28/set-your-learning-goal/)
5. [學習程式到轉職工程師](/2020/05/13/become-a-developer/)

## 其實選哪個程式語言並不重要，重點是你學不學得起來

常有很多新手朋友問到該怎麼選擇第一個程式語言，甚至是許多新手在學程式的「第一道關卡」（因為大家都想選擇學習 CP 值高的技能）。關於這個問題，有以下幾種常見的選擇：

1. 看程式語言排行榜，挑選最多人用的程式語言，例如 Java、C、Python。
2. 挑選看起來好像比較有「錢途」的程式語言，例如可以做人工智慧或是深度學習的 Python 或 R 語言。
3. 挑選看得順眼的程式語言，例如 Python 或是 Ruby，因為這兩個語言比較像英文，語法簡潔，對新手來說相對的較友善。
4. 挑選泛用性高的程式語言，例如 Java 或 JavaScript，因為前者可以跨平台（桌面應用程式、手機 App、網站後端...），後者可以在 Web 領域前後端通吃（前端、後端），甚至現在連手機 App 或是桌面應用程式也都能寫了。
5. 以後想做什麼、就選什麼！想做 App 就學 Swift（iOS）、Java / Kotlin（Android)，想做網站可以學 PHP、Python、Ruby、JavaScript，想做資料分析可以學 Python 或 R 語言...。
6. 不想跟其它人一樣，就是想選冷門的程式語言...

以上幾種選擇方式都沒什麼問題，我通常也會依照不同的情境與脈絡或是發問者的背景給予以上不同的回答，但，如果對一個「完全新手」來說，我會給予的建議是：

&gt; 「哪一種程式語言不重要，重要的是找到讓你學會第一個程式語言的方法」

什麼意思？這句話的背後有三個脈絡：

1. 每個人的學習習慣不同。
2. 每個人所擁有的資源不同。
3. 程式語言的邏輯基礎是相通的。

首先，每個人的學習習慣不同，有些人喜歡看影片、有些人喜歡看文字；同理，有些人喜歡理論、有些人喜歡比較多的實作練習，每個人的習慣不同；你必須要找到自己喜歡的學習方法，以及「適合自己的教材」。

其次，每個人所擁有的資源不同。如果你身邊有工程師好朋友，對你來說學習第一個程式語言最快速的方式，就是跟你朋友學一樣的語言！對新手來說，先不要考慮你朋友寫的這個程式語言有沒有前（錢）途或多不多人用，因為對新手最常卡關也最容易放棄的環境安裝問題，對工程師朋友來說應該都只是幼幼班等級的問題，但因此而放棄真的非常可惜。另外，英文也是學習程式的路上很重要的資源，畢竟許多第一手的資料都是英文的，所以如果你的英文能力不錯，許多不錯的國外網站或線上課程也是很棒的學習資源。

最後，程式語言的基礎邏輯是相通的，例如變數、迴圈、物件導向、繼承...。大部分比較常聽過名字的程式語言例如 Java、PHP、JavaScript、Python、Ruby...等等，除了少數程式語言特屬的設計之外，大部份要學習的概念幾乎都是一樣的。所以一但當你學會了其中一種程式語言，要再轉換到另一個程式語言就會輕鬆許多而已。

因此，當你在挑選「第一個程式語言」時，我會建議是「不用去思考哪個語言最好學、哪個語言最多人用、我將來要做...」，而是去思考：

「我該怎麼找到合適的教材？我適合文字學習？還是影片學習？」

「當我在學這個語言遇到障礙時，我有多少資源？朋友？社群？」

如果你對於第一個程式語言沒有想法，我推薦你一些網路的資源：

### Python：

* https://zh-tw.coursera.org/specializations/python
* https://www.codecademy.com/catalog/language/python

### Ruby：

* https://www.codecademy.com/catalog/language/ruby
* https://railsbook.tw/chapters/05-ruby-basic-1.html
* https://www.facebook.com/rubymokumokukai/  (Ruby 默默會)

特別是上面提到的「Ruby 默默會」，是我們每週二在我們公司（台北 228 公園旁）舉辦的線下實體社群活動，只要你有任何程式方面的學習問題，都歡迎帶著問題來找我們聊聊喔！

![默默會](/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBYUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--4ab484c4f5eda361cf8ea5357381684e2acdc739/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2RkhKbGMybDZaVjkwYjE5c2FXMXBkRnNIYVFJQUJXa0NBQVE9IiwiZXhwIjpudWxsLCJwdXIiOiJ2YXJpYXRpb24ifX0=--c7384179b79b360ce488e92f67a9c0795f833455/mokumokukai.jpg)

### 那，怎麼樣知道自己算是學會？

其實這很難有一個標準或認證來證明自己「學會」程式語言，但你可以試試 [Codewars](https://www.codewars.com/) 這個網站，基本上只要能輕鬆完成 Codewars 第八等級的題目，應該就算符合「會使用基本程式語言」的最低門檻。過了這個門檻，如果你還想繼續更深入，就可以開始思考下一個議題「我打算用程式來做些什麼？」，我會在下個議題「[對新手來說，如何喜歡上寫程式](/2020/03/06/enjoy-programming/)」一起討論。

--待續--


