如何挑選 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 ...
「點我閱讀更多」

教程、範例、指引、原始碼:由淺至深的學習之路

許多初學程式設計的讀者,會不知道怎麼選擇合適的教材,平白耗費了許多時間卻抓不到方向。基本上,程式設計的教學資料可分為四個層次:教程 (tutorial)、範例 (example)、指引 (reference)、原始碼 (code);在理想的情形下,假設我們有充足的學習資源,透過這四種層次的學習,就可以逐漸掌握某個語言、函式庫或框架。 教程是最淺白的學習資料,大部分的技術書籍和線上課程都是某種教程。理想的教程會按部就班,從概念、建置環境、Hello World 然後開始教基本語法,一次不會加入太多概念,讓讀者可以慢慢吸收。有些教程會附上一些習題,讓讀者複習先前所學的概念,理想上的習題不會超越目前所學的概念,因初學者可能會無法辨識是自己的能力面還是教程的先導知識不足。對於較缺乏經驗的學習...
「點我閱讀更多」