Go 的成功告訴我們什麼?

Go 語言在 2009 年問世,在短短不到 10 年的時間,已經儕身各大語言排名的主流語言區。Ruby 的發明者松本行弘曾說過,一個語言生態圈的培養,需要至少十年的時間;以這個標準來看,Go 語言的成長可說是相當迅速。然而,Go 的語法特性其實不是很優秀,像是缺乏繼承、泛型、函式重載、運算子重載、枚舉等現代語言常見的特性;基本上,大概只到 Java 1.4 版的水準。Go 所編譯的程式也不是編譯語言中最快的,大概和 Java 同級,但還輸 C++ 一些。就如同世界上其他的事物,程式語言的成功,就是需求和一些些機運。 一些程式語言理論的書會教我們什麼是良好的程式語言,像是易學易寫、執行速度快、標準化、開放原始碼等等;對照一些成功的程式語言,我們雖然不能說這些原則是 bullshit,但...
「點我閱讀更多」

如何挑選 web framework?

有許多想做網頁的程式設計者都會想問:如何挑選 web framework (網頁應用框架)?這個問題其實不會有唯一的解答,因為網頁的技術不斷地推陳出新。如果我們把 CGI (Common Gateway Interface) 程式當成網頁程式的濫觴,那麼網頁程式至少有 25 年的歷史了;雖然這是一個老議題,但是每隔一陣子,我們又會有一些新的方法可以用來撰寫網頁程式,好像永遠都有學不完的新技術。 我們對 web framework 最大的誤解就是「我們一定要用 web framework 才能寫網頁程式」。在 Rails 和 Django 出現後,我們仍然可以用 vanilla PHP (即用純 PHP,不用任何框架) 來撰寫網頁;在 React 和 Vue.js 出現後,jQuery...
「點我閱讀更多」

GNU/Linux 適合做為桌面系統嗎? (2018 年版)

雖然我們可能無法看到真正的 GNU/Linux 元年,但在 2016 至 2017 年間,GNU/Linux 桌面系統的市佔率突破 2% (根據 Net Marketshare 數據),表示 GNU/Linux 還是有一定的使用人口。目前為止,Windows 仍然是桌面系統的霸主 (85-90% 市佔率),而 Mac 則有一批忠實擁護者 (7-10%);GNU/Linux 往往給人難學的印象,有時又會在網路上看到某個網友灌了 GNU/Linux 後無法開機進入系統的慘案,到底 GNU/Linux 是否適合做為桌面系統?筆者三大桌面系統都使用過,以 GNU/Linux 為桌面多年,筆者認為 GNU/Linux 桌面雖非簡單無腦,但入門的門檻的確比先前低了。接下來,我們會進行相關的討論。 ...
「點我閱讀更多」

為什麼 Nim 無法造成流行

Nim 是一個新興的編譯語言,其核心理念相當地簡單:Nim 程式碼會轉為等效 C 程式碼,再由 C 編譯器實際編譯軟體。在理想上,這個方向的確是可行的,因為 C 語言問世超過四十年,C 編譯器的優化技術已經相當成熟,與其從頭開始撰寫一套新的編譯器,還不如直接站在巨人的肩膀上。不過,Nim 專案從 2008 年問世,到目前 (2018 年二月) 已經十年了,這個專案並沒有流行起來。筆者雖然不是編譯器的專家,姑且讓筆者事後諸葛一下。 某種程度上來說,Nim 不流行其實是非戰之罪。對於目標市場相近的產品,背後的團隊還是會造成微妙的影響。和 Nim 目標市場相近的語言有 Go (golang) 和 Rust,Go 來自 Google,Rust 來自 Mozilla,而 Nim 的團隊是誰呢...
「點我閱讀更多」

為什麼要 (或不要) 學習 C 語言

在大專院校的資訊科系中,C 語言是必學的,這有一些教學上的考量,不純然以實用觀點出發;不過,現在自學程式的風氣較以往興盛,對於這些人來說,C 語言是否還要學呢?筆者一開始自學程式設計時,也傻傻地買了 C 語言的書來看,但是 C 語言要學到能做出足夠實用的應用程式來,其實並不是那麼容易,經過一段時間後,筆者才慢慢了解 C 語言在電腦界的位置。C 語言的知識仍然有其必要,但是否要深入學習,則要看當下的情境而定。 對於初學者來說,雖然大專院校都以 C 語言做為學習工具,但這不代表我們就要用 C 語言做為第一個語言。對於初學者來說,學習程式設計的重心應該在於學習高階的概念,並不是成天在跟指標 (pointer) 奮戰,或是用一些低階的手法處理字串。國外的一些 MOOC 開始用 Python ...
「點我閱讀更多」