Go (golang) 是否該支援泛型?

「Go (golang) 應該要有泛型 (generics)」,這大概是 Go 社群最常拿出來炮的一個議題。筆者有訂閱 Go 社群發行的電子報,也有在推特 (Twitter) 上追蹤 Go 的社群動態,這個議題每隔一陣子就會看到某個部落客發文 (編按:就像我們這篇),或是某個開發者又造出某個非官方的輪子,Go 社群對這個議題的態度不言自明。最近 Go 發布了 2.0 版本的 roadmap,又讓大家燃起一線生機,是否能利用大版本更新的時候將泛型做為 Go 回饋社群的一份大禮呢? 撰寫泛型程式時,程式設計者不需要預先指明程式的型別,而可以待後續呼叫該程式碼再宣告型別。動態型別 (dynamically-typed) 的語言,例如 Python、Ruby、PHP、Perl 等,不需要泛型...
「點我閱讀更多」

Cloud 9 IDE 簡介

前一陣子看到有網友在問 Cloud 9 是什麼、如何使用等議題,剛好筆者使用過一陣子這套軟體,而且是付費會員,筆者就自身的經驗來說明 Cloud 9 的使用相關議題,給需要的讀者做一個參考。 [Update on 2017/12/19] Cloud 9 後來被 Amazon 併購了,舊版的 Cloud 9 帳號已經停止申請,筆者目前的使用經驗主要是基於舊版的 Cloud 9,待筆者將環境轉換到新版後再更新本文。 大體來說,Cloud 9 是一個雲端整合式開發環境 (IDE),透過瀏覽器即可操作,不需額外安裝軟體。通常只要版本夠新的主流瀏覽器都可以支援,筆者本身是透過 Google Chrome 操作 Cloud 9,其他的瀏覽器,像是 Firefox、Safari 或 Opera 應...
「點我閱讀更多」

程式設計師的工具箱

程式設計師會用到那些工具呢?筆者就自己的經驗,分享一些程式設計師可能會用到的工具,供有需要的學習者一些可參考的方向。 系統程式語言 (system language):這些工具給我們足夠低階的操作,像是記憶體管理等。傳統上,這個領域是由 C 主宰,有許多人會使用 C++。一些比較新興的替代方案包括 D 或 Rust 等。 應用程式語言 (application language):這些工具在效能在易用性上達到一個平衡點。大部分的人會從 Java 或 C# 中擇一,有一些人仍然會使用 C++。Go 則是另一個近年來熱門的新興方案。 腳本語言 (scripting language):這些工具易學易用,雖然速度沒有前兩者來得快,但一般使用情境下也足夠了。一些典型的實例包括 ...
「點我閱讀更多」

適合初學者的小型專題

前一陣子,在某個程式設計討論區上,看到有網友在討論不知道在學完程式語言後,可以寫什樣的專案 (project) 來增進自己的功力。的確,在學習程式設計一段時間後,會碰到這樣的困擾。由於這種針對進階初學者的書較難掌握讀者的程度,實際上這種書也比較少。對於進階初學者來說,一下子跳進去看 GitHub 或其他站台的中大型專案又難度過高,要在茫茫大海中找到適合自己程度的專案也不容易。筆者提出一些個人的見解,供有需要的網友參考。 其實,選擇專案沒有那麼困難,從使用者的角度來思考即可。首先,可以思考一般使用者 (end user) 會使用的軟體 (software) 類型,再從中選擇即可。一般使用者會使用到的軟體類型如下: 命令列工具 (command line utility) 桌...
「點我閱讀更多」

Dart — JavaScript 的理想狀態

筆者在某個偶然的機會接觸到 Dart 語言,並用 Dart 實際撰寫一些網頁程式;透過一些使用經驗,筆者覺得 Dart 是一個本質良好的程式語言,甚至, JavaScript 的理想狀態應該就是 Dart。為什麼筆者會如此論述呢?因為 Dart 有著數種優良的特性: 在語法上,Dart 吸收了 JavaScript、Java 和 C# 的優點。JavaScript 中常見的函數式程式 (functional programming) 特性,在 Dart 中都可以使用。但是,Dart 不使用 JavaScript 為人詬病的原型物件 (prototype-based object) 系統,而採用 Java 所用的類別物件 (class-based object) 系統,另外又加上...
「點我閱讀更多」