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 然後開始教基本語法,一次不會加入太多概念,讓讀者可以慢慢吸收。有些教程會附上一些習題,讓讀者複習先前所學的概念,理想上的習題不會超越目前所學的概念,因初學者可能會無法辨識是自己的能力面還是教程的先導知識不足。對於較缺乏經驗的學習...
「點我閱讀更多」

為什麼要 (或不要) 用 Python 實作資料結構和演算法

筆者最近在國內某程式討論區上看到一則有關資料結構的問題,原樓主是某個資訊科系的學生,因為對資料結構的實作不熟而苦惱。原先該網友使用 C 語言,而有些網友建議原 po 改用 Python,這時候引起正反兩方的一番論戰,筆者在這裡就不重覆論述其過程。其實重點並不在於要不要用 Python,而是為什麼要 (或不要) 用 Python。 首先,程式語言並不是像江湖武術般,非黑即白、有我沒你,另投他門就是罪該萬死。在某個時機點,A 語言可能會是最佳解 (sweet spot),但在另一個時間點,同樣的語言卻顯得殺雞用牛刀。TensorFlow 表面上是 Python 套件庫,但內部是由 C++ 撰寫,再透過 C 提供 Python (和其他高階語言) 的接口。同樣地,LibXML2 本身以 C...
「點我閱讀更多」