學程式(二):我該選什麼程式語言
OK,如果你想好你為什麼要寫程式,接著就來選一門語言吧。
OK,如果你想好你為什麼要寫程式,接著就來選一門語言吧。
開始之前,可以看看這篇好文:工程師的缺德行為:叫朋友去學C/C++。
我同意作者的看法,如果對程式沒什麼熱忱,就跳下去洗演算法題目,或是下去用 C 寫什麼迴圈,真的是很痛苦。
還是先來看看 Stack Overflow (可以理解成國際型、程式工程師專用的新手友善討論平臺)對於 2018 的調查,程式語言的排行如何:
主要比較有名的大概就是 JS、前端(HTML、CSS)、Java、Python、C#、PHP、C/C++ 這幾個程式語言了吧?
JavaScript、前端
JavaScript 和前端應該是比較最快可以得到成就感的東西,寫個幾行 Code 馬上可以在瀏覽器上看到自己寫的東西。近幾年前端發展很快,各種教學都一大堆,我也曾經寫過一兩篇 視覺化 的教學,想要快速上手的話,前端是個好選擇。
不過 JavaScript 也可以用來撰寫搭配 Node.js 來撰寫後端就是了,寫起來差不多,是個可以一舉多用的語言。不過雷也很多,建議新手還是從前端下手會比較開心一點......
未來會再介紹 JS 發展有趣和惹人厭的地方。
Python
Python 則是最近爆紅的程式語言,有很多跟機器學習有關的東西都是用 Python 寫的,像是之前的 手寫辨識。而學 Python 有一個優點,因為這個語言強制縮排,不縮排的會影響程式的語意,所以算是新手練語言的好選擇。
Java、C#
Java 和 C# (念做西夏普,不是西井)則是物件導向的好選擇,我覺得這兩個語言有點像,畢竟微軟當初出 C# 就是為了和 Java 競爭。Java 也是可以寫蠻多東西的,可以寫跨平台的桌面應用程式、後端可以寫 JSP,也能拿來寫嵌入式系統的樣子;C# 可以用來開發桌面應用程式,最近比較有名的應該是可以在 Unity 裡面拿來寫遊戲。
這兩個都是物件導向味很重的語言,可以看看 我要學會 Java (二):物件導向其實很簡單。
PHP
PHP 是個被鄙視的語言(先別難過,後面會講到為什麼 XD),但他還是很好用。
全世界最大的部落格平臺(WordPress)是用 PHP 寫的、全世界最大的社群網站(Facebook)也是用 PHP 寫的,PHP 曾經佔有舉足輕重的地位,到現在還是有很多人拿 PHP 在寫後端,所以還是有很多職缺。
C/C++
如果你覺得你未來會繼續走程式語言,想要從底子就打好的話,可以學個 C\C++,甚至可以去打演算法競賽,刷個經歷之後可以用;而且隨著 WebAssembly 的崛起,未來可能會有更多把 C/C++ 程式放在前端執行的應用。
我也曾經寫過 C 語言的教學:我要學會 C 語言(一):Hello World!。
沒提到的 Bash/Shell Script 是你要碰 Linux 或伺服器比較會用到的語言;SQL 則是資料庫會用到的語言,我個人覺得剛開始不會碰到。
還是不知道要選什麼語言?
如果你還是不知道要學什麼語言?沒關係,先找一個語言開始吧!挑篇喜歡的教學,或是上 Google 搜尋有興趣的題目,看看有什麼好玩的。
同時,和朋友討論最近寫的東西,或一起學程式語言會讓你更有熱情,但絕對不要被同儕噓你寫這什麼糞語言就放棄。程式語言的圈子,或者說工程師的圈子本來就是互相鄙視,大家都覺得自己寫的語言是最好的、甚至大家都覺得自己用的編輯器(IDE)是最好的。不相信的話可以看看 軟體工程師的鄙視鏈 的最後一句:
所有的工程師都鄙視 PHP 工程師。
所以我說程式語言真的沒有什麼一定好、什麼一定差,除了 JavaScript 真的很棒以外。
延伸閱讀
- 工程師的缺德行為
- 軟體工程師的鄙視鏈
- Web 視覺化(一):使用 Chart.js 輕鬆建立圖表
- Web 視覺化(二):使用 Google Maps JS API 建立地圖
- Web 視覺化(三):在 Google Maps 中加入行政區邊界
- Keras + TensorFlow:用 CNN 辨識中文手寫數字
- 我要學會 Java (二):物件導向其實很簡單
- WebAssembly 已經可以跑 Windows 2000 作業系統了
- 我要學會 C 語言(一):Hello World!
我要學程式 目錄
- 學程式(一):我想寫程式,該怎麼開始
- 學程式(二):我該選什麼程式語言(本篇)