Exercises for Programmers 讀後感

在學習某個程式語言的過程中,第一步總是先熟悉其語法,然後慢慢擴展到其他的部分。在這個過程中,如果能夠搭配適當的小型練習題,對於學習該語言會有相當的幫助。然而,不同語言的流行度各自相異,不一定都會有適當的教材可用。而本書的出現,適時地填補了語法和實作間的空缺。 在學習到第二個,甚至第三個程式語言時,會發現到,雖然程式語言的語法和模式各有不同,但是觀念上是相通的。大部分的程式語言,都有著類似的觀念,像是變數形態、操作子、判斷分支、迴圈、資料結構、輸入/輸出等,雖然在語法上各有不同,但其實,骨子裡都是在這些觀念上打轉。當然,各個程式語言還是有其特殊的部分,是其他程式語言沒有的,不過,很少會有某個問題,只能用某一個特定的程式語言的某個語法才能解決;我們在轉換程式語言時,會自然地用其他的方法去...
「點我閱讀更多」

.NET on GNU/Linux

在從前,要在 GNU/Linux 下寫 .NET 程式,會使用 Mono 平台。然而,使用 Mono 平台,程式設計師要和大大小小的不相容奮戰,有時候會想乾脆去寫 Java 好了。不過,隨著 .Net 平台開始支援非 Windows 的作業系統,以及 Microsoft 開始協助 Mono 專案,上述的情形應該會逐漸改觀;對於喜歡 C# 的朋友來說,應該也是樂見其成。 註:目前 GNU/Linux 平台上的 .NET 開發環境,已加強了對數個主流發行版的原生環境支援,本文使用 Docker 的方法,僅供參考。 目前 Microsoft 對 .NET 在 GNU/Linux 上的支援有以下數項: .NET Core:終端應用程式 ASP.NET Core:網頁應用程式 ...
「點我閱讀更多」

21 世紀 C 語言讀後感

我要先提醒這本書的準讀者,這不定一本典型的 C 語言教科書。例如:在這本書中,作者會教你把常用的標頭檔都集中寫在某個檔案中,即使程式因此多加了幾千行,編譯時間也花不到幾秒;另外,本書作者每次在編譯程式時,都會加上 -g 參數,其實程式也沒增加幾 KB,但是卻多了許多除錯用的資訊。另外,本書中約有三分之一的篇幅是在討論 C 語言的語法以外的內容,主要是介紹 C 語言的生態圈,這些內容在典型的教科書中相對少見。 本書的作者 Ben Klemens 主修的是經濟學和社會科學,所以,對於程式的思考方式和資訊出身的程式設計師有所不同,讀者不用對這本書的內容照單全收,但這本書的確有可參考之處。 本書的前言介紹了一些 C 語言的背景知識,以及作者對於本書的一些想法,可以稍微看一下。之後,本書的正...
「點我閱讀更多」

Why not Arch Linux?

I initiated this post here in response to a post on a Linux forum (in Chinese) You may also check my original reply (in Chinese). This article is all about personal opinion and choice. No flame war please. In his original post, he stated that he recently switched to Arch Linux and enjoyed the process of installing the system from the minima...
「點我閱讀更多」

為什麼你該用 Sinatra-like framework (以及何時不該用)

[Update on 2017/02/23] 雖然許多人都會從 Ruby on Rails、Laravel 或是其他知名的網頁框架學習網頁程式設計,甚至在不會 Ruby 時就直接學 Rails,我個人非常不推薦這種學習方式。這些框架是給已經有程式設計經驗的開發者快速開發新産品用的,往往都有許多複雜的專案結構和設定,而初學者會以為網頁程式設計一定需要這些複雜的工具。我反而推薦 Sinatra 或是 Flask 這類輕量的替代品。使用這種微框架,不需要學習複雜的專案結構和設定,甚至只要單一的檔案即可執行程式。這種漸進式的過程,其實比較適合初學者。 早期的動態網頁 (dynamic web page) 是以 Perl 或其他語言撰寫的 CGI (Common Gateway Interfa...
「點我閱讀更多」