[公告] 網站更名

即日起,本站站名從 Happy Computing 改名為 Michael Talks,除了原先介紹電腦方面的文章外,也會增加一些對電腦科技或其他方面事物的個人意見。

筆者在撰寫一段時間的部落格後,發現電腦技術的變動實在太快,尤其是一些函式庫的 API,一陣子就會不太一樣。另外,英文的資料其實已經相當豐富,如果對於每一樣新技術都要寫成部落格文章,以筆者個人之力其實時間也不允許。所以,筆者將部落格文章的方向改變,以介紹加上評論的方向來撰寫文章。

筆者在學習一段時間的電腦以後,發現電腦技術推陳出新,以個人的力量,其實是追不完的;就像是網路上很有名的一篇部落格文章「You Can’t Learn Everything.」。我們不僅僅要花費時間學習這些技術,還要撰寫程式、維護現有程式、管理系統等,對於程式設計者來說,時間成本相當寶貴。即使筆者已經寫了一段時間的網頁程式,對於新的前端框架仍然無法好好地學習及運用在自己的專案上。

除了學習新技術,更重要的是了解新技術試圖解決的問題,有時候,我們不一定需要這些新技術。筆者在先前的文章談過,我們有許多 JavaScript trans-compiler,像是 CoffeeScript、Dart、TypeScript、Babel 和很多其他語言所做的 trans-compiler,這些技術主要是為了解決 JavaScript 本身語法的缺陷。我們需不需要照單全收呢?其實,我們只要挑選其中一種即可解決我們的問題。甚至,對於簡單的表單驗證 (form validation),也不需要這些新技術,回頭用 jQuery 就可以了。

在電腦科技的演進中,有許多技術的目標領域重疊性相當高,我們不需要照單全收。Java 和 C# 都是用來替代 C++,使用一個相對簡單的程式語言撰寫應用程式;為了商業上的考量,市場上出現了兩個相似的平台,而非一個。Perl、Python、Ruby 都是通用型 (general-purpose) 腳本語言 (scripting language),三者間有許多功能重疊的套件,我們只要擇一即可。仔細地觀察,就可以發現很多類似上述的現象。

另外,還有一些技術上的考量。筆者先前都使用 Jekyll 撰寫部落格,但是,Jekyll 的設計比較適合單純的部落格文章,對於綜合性的 CMS (content management system) 則效果不佳。筆者最近將自己的網站轉用 Hugo 這套網站產生器,一些教程 (tutorial) 類型的教學文件會順便轉過去。

上篇Perl 6 小感
下篇簡明重現範例的重要性