跨平台工具的甜蜜陷阱

跨平台 (cross-platform) 一直是程式設計圈子不斷出現的話題,從 C 開始,程式設計師試著處理平台可攜性 (portability),到了 Java,跨平台變成了一個響亮的口號,影響後來,近年來的高階語言很少不能跨平台的,甚至還有 Haxe 這種直接以跨平台為主打的語言。隨著行動科技及 Raspberry Pi 等裝置的興起,程式設計師又要面對更多的異質平台。如果以 “cross-platform mobile framework” 為關鍵字,也可以搜尋到不少新的框架,像是 Xamarin、Corona SDK、RubyMotion、LiveCode、Xojo 等等。對於不想學習那麼多種程式語言的程式設計者來說,跨平台工具就像是蜜糖般誘人。實際上真的那麼好嗎? 雖然演算...
「點我閱讀更多」

領域專用語言:程式語言的利基市場

對於程式語言有興趣的讀者,可能會主動接觸數個主流市場的程式語言,包括 C++、Java、Python 等,甚至,會開始將注意力伸向其他相對冷門的語言,像是 Clojure、Haskell 等。除了學習許多不同的語言外,是否也有想過創造自己的程式語言呢?如果我們將 Python 視為軟體,那麼,Python 命令稿就是操作 Python 的方法。程式語言背後的執行者就是編譯器和直譯器,而製作編譯器和直譯器不是黑魔法,而是有科學的方法可遒循。那麼,我們要如何切入程式語言的領域呢? 一個通用型程式語言的流行,不是一朝一夕可成的。松本行弘 (Ruby 發明者) 就曾經說過,程式語言大約要經過十年的時光,才能變成廣泛討論及使用的語言。而我們要開發一個新的語言,是否一定要用 C 語言從頭開始打造...
「點我閱讀更多」

值得注意的程式語言:D、Go、Rust

在早期,電腦硬體效能不足,腳本語言僅用來做簡單的工作,而大部分的應用程式還是用 C/C++ 這類編譯語言開發。後來,硬體效能逐漸進步,雖然腳本語言先天不快,相對來說,速度也足夠了。而腳本語言易於使用、開發速度快,而越來越受到歡迎。不過,在某些需要效能的時候,腳本語言就顯出其不足,這時候,用 C/C++ (或 Java) 改寫效能瓶頸的部分,再包裝成套件或模組,就是一種典型的開發模式。隨著運算速度及環境部署的需求,這類開發模式逐漸令人無法滿意,而直接回歸 C/C++ 又過於低階。著眼這一方面的需要,出現了 D、Go、Rust 等新興的編譯語言。 這類語言的共通點,在於提供了一套跨平台的語言環境,除了部分和 C/C++ 連接的部分可能會些微地受到平台的影響外,以這些語言為基礎的專案,基本...
「點我閱讀更多」

部落格 v.s 維基 v.s 社群網路:當你想得不一樣,你就做得不一樣

網路是載體,內容才是吸引注目的核心。在近年來,出現了部落格 (blog)、維基 (wiki) 和社群網站 (social media) 三種不同模式的網頁服務。雖然,從比較底層的角度來看,網頁就是一堆像天書般的 HTML、CSS、JavaScript 原始碼,再搭上多媒體檔案所組成,而這三種網頁服務就是用不同的邏輯安排這些原始碼。但是,我們不會將這三者混為一談,而這三種模式都各自有其利基點。 部落格是一種以時間為軸心的網頁服務。例如,麥可的部落格,就是以麥可為主,不限定其貼文主題,每隔一陣子就會有新的文章出現。當然,也有可能是以電腦技巧或某個特定主題的部落格,可能作者有數個人,一段時間就會輪流發新的文章。這種模式,類似新聞的運作模式,部落客持續地推陳出新,以吸引讀者的注意力。 維基...
「點我閱讀更多」

程式語言世界的巴別塔

有時候,因為工作或興趣,會去接觸某些新的程式語言。學起第二個或以上的程式語言,比起初學第一個程式語言時,已經有些程式設計的基本概念,這時候要做的事情主要是學習新的語法、函式/物件庫、開發工具等。學了程式語言一陣子,就會發現,有時候我們是在用不同的工具解決相同的問題。例如,寫網頁程式時,後端語言的主要工作是橋接資料庫和網頁伺服器,而 Java、Python、Ruby、PHP、ASP.NET 等都各自有其解決方案。那麼,有沒有一個語言可以吃全部呢?其實,程式語言也可視為一種產品,不斷會有新的語言出來,使得數位世界更加分裂。 例如,你平常習慣用 Python 寫一些命令稿,將某些工作流程自動化。有一天,你的老闆也需要類似的程式,如果可以將你手邊的 Python 命令稿整理後寄給你老闆是最便...
「點我閱讀更多」