美思 跨平台 Common Lisp 程式設計 電子書

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
跨平台 Common Lisp 程式設計

本書簡介

Lisp 是資訊界上古三大神兵 (Fortran、Lisp、COBOL) 之一,世界第二古老的高階語言。該語言在長年演進中發展出許多方言 (dialect)。Common Lisp 則是 Lisp 的現代化版本之一,目前仍然有實際用途。

雖然 Lisp 不是主流語言,該語言具有許多高階特性,可用來擴展程式設計者對程式設計的認知及視野。像是 Lisp 的巨集 (macro),即使在現代高階語言也相對少見。

雖然大部分程式設計者不會在學校、職場等正規環境使用 Common Lisp 或其他 Lisp 方言,也應該來體驗一下這個古老且充滿智慧的語言。

試讀本書

如果讀者想試讀本書,可在以下連結下載試讀本:

  • PDF 試讀本:適用於 Acrobat Reader 等電子書閱讀軟體
  • ePub 試讀本:適用於 Kobo eReader、mooInk eReader 等電子書閱讀裝置
  • MOBI 試讀本:適用於 Amazon Kindle 等電子書閱讀裝置

使用試讀本的用意在於確認自己的閱讀軟體或閱讀裝置是否能順利閱讀本書,以做為購買本書的依據,不只是試讀其內容。

購買本書時可同時取得上列三種檔案格式的電子書,應可滿足絕大部分的閱讀需求。

購買本書

Buy on

以 PDF 版本來計算,本書共有 194 頁。

本書價格為 5 美元 (註) 。這個價格同時包含 PDF、ePub、MOBI 三種版本的電子書。

(註) 本書在 Gumroad 上採訂閱制是為了提供有限期更新服務。在訂閱期結束後會自動結束訂閱。

本書內容

本書包含以下內容 (非本文目錄):

  • 介紹
  • 建立開發環境 (Development Environment)
  • 使用 Emacs 搭配 SLIME
  • Roswell 入門
  • 常見的開發工具 (Development Tool)
  • 基本概念
  • 資料型態 (Data Type)
  • 變數 (Variable)
  • 運算子 (Operator)
  • 控制結構 (Control Flow)
  • 函式 (Function)
  • 串列 (List)
  • 函數式程式設計 (Functional Programming)
  • 陣列 (Array)
  • 雜湊表 (Hash Table)
  • 結構體 (Structure)
  • 類別 (Class) 和物件 (Object)
  • 繼承 (Inheritance)
  • 巨集 (Macro)
  • 錯誤處理 (Error Handling)
  • 建立專案 (Project)
  • 撰碼風格 (Coding Style)
  • 可攜性 (Portability)
  • 優化程式碼 (Optimization)
  • 附錄:使用樣板專案撰寫應用程式
  • 附錄:互動式環境發生錯誤的處理方式

版本演進

  • 1.0.1
    • 更新一些文字
  • 1.0.0
    • 首次發佈

常見問題

學習 Common Lisp 這樣的冷門語言有什麼用?

比起 C++、Java、C#、Python 等主流語言,Common Lisp 的確無法對就學、就業有直接幫助,通常也無法在履歷表上新增項目。但學習 Lisp 這類有許多高階特性的程式語言,可以對程式設計產生新的認知和體會,也可用來觀摩不同範式 (paradigms)。此外,學會 Common Lisp 後,日後要學習 Scheme、Racket、Emacs Lisp、Clojure 等 Lisp 家族語言會更容易上手。

Common Lisp 已經是跨平台的,為什麼要強調這個概念?

雖然 Common Lisp 有語言標準,Common Lisp 實作品間存在一些歧異,這些差異造成同一份 Common Lisp 程式碼無法跨越不同 Common Lisp 實作品。除了學習 Common Lisp 語法外,本書也會說明如何撰寫跨平台的 Common Lisp 程式碼,讓讀者可以在不同平台及實作品間重用同一份 Common Lisp 程式碼。

如果覺得處理跨平台議題過於瑣碎,先專注在 SBCL (Steel Bank Common Lisp) 即可。本書的範例程式碼會以 SBCL 和 Clozure CL 來測試,範例專案則支援 SBCL、Clozure CL、CLISP、ECL、ABCL 五種最常見的 Common Lisp 實作品。

市面上已經有一些經典的 Common Lisp 書籍,這本書有什麼不一樣?

目前大部分 Lisp 書籍是從 Lisp 的角度出發。會強調串列 (list)、REPL 環境、SLIME 等經典的 Lisp 特性和工具。但 Lisp 是利基語言 (niche language) 而非主流語言,程式設計者在接觸 Lisp 前通常都學過其他程式語言了。我們不應忽略 Lisp 和主流語言間的差異。所以,本書會從當代程式設計的觀點出發,以大部分程式設計者可接受的方式學習 Common Lisp。

待讀者適應了 Common Lisp 程式碼的撰寫方式後,還是可以回頭閱讀那些經典的 Lisp 書籍。

看完這本書就會寫 Common Lisp 應用程式嗎?

本書包含 Common Lisp 的語法和一些開發實務,算是拿來打基礎功的。因篇幅考量,本書沒有說明標準函式庫,也沒有介紹什麼社群函式庫。網路上可輕易查到標準函式庫的文件,故我們省下這些重覆的內容。由於本書省下這些不必要的篇幅,無形中幫讀者省下一些製作書籍的成本。

本書所用的樣板專案和工具函式庫並非社群標準

誠如筆者在書中所說的,這些樣板專案和工具函式庫只是用來節省一些重覆撰寫程式碼的時間。這些開發工具緣自於 Common Lisp 實作品應內建但卻缺乏的功能。

即使讀者完全不使用筆者所提供的開發工具,也是可以撰寫 Common Lisp 程式。但你遲早要針對這些常見的任務實作自己的版本,或是在網路上找到另一位開發者的版本。即使你不想用筆者的開發工具,仍然可以參考筆者的版本來實作你自己的。

之後會出版 Scheme 或 Racket 的書籍嗎?

目前沒有這樣的規畫。

你遲早都要用 Clojure 的,為什麼不現在就用?

除了語法的差異外,不同 Lisp 方言的運行環境也是考量之一。不一定每位程式設計者都想在 Java 平台上製作軟體。渡過學習 Lisp 的新手時期後,還是要根據專案需求選擇合適的語言。

注意事項

這個網站就可以免費看到本書的內容,為什麼要花錢購買電子書?

的確如此,本書部分內容可在這個網站上看到。然而,由於各種技術面的問題,本網站的內容不一定可隨時存取。像是網路斷線、網站當機等,都會造成本網站無法使用。

當你購買本書時,就可以離線存取本書所提供的內容,或者是用電子書閱讀器舒適地閱讀本書,不會受到網路存取的限制。即使本網站因故未能繼續營運,你還是可以永久保存這本書所要傳達的內容。

為了讓讀者有更好的閱讀體驗,我們在製作電子書時,做了以下更動:

  • 改寫現存的文字
  • 新增一些網站沒有的內容
  • 重排部分範例程式碼
  • 在電子書閱讀器上實測本書

為什麼這本書在我的閱讀軟體或閱讀裝置上看起來很醜?

在電子書常見的檔案格式中,PDF 和 ePub 是開放格式,而 MOBI 是專有格式。但電子書實際呈現的效果,仍會受到閱讀軟體或閱讀裝置的實作的影響。產出合乎標準的電子書並無法保證電子書在所有閱讀器上都能順利閱讀,這是無可奈何的事實。

著眼於此議題,與其由筆者逐一地測試市面上各種電子書閱讀器,不如讓讀者在自己實際使用的閱讀器上測試,故本書提供試讀本。試讀本不僅用來試讀電子書的內容,同時也可以測試電子書在實體裝置上的呈現效果。

網站的頁面會持續更新,但電子書的內容可能會過時

資訊類的書籍大抵上都很容易過時,有些資訊書籍的技術生命可能不超過三年。雖然,比起大部分的技術,Common Lisp 是相對穩定的,本書也無法完全免除資訊圖書的宿命。

為了補償願意付費支持本網站的讀者,本書採用有期限訂閱制。當你購買本書後,可在購買日起一年內取得本書的更新版本。實際的訂閱機制以 Gumroad 所提供的方案為準。

我的訂閱過期了,需要再重新續訂嗎?

本書的更新記錄會公告在此頁面上,讀者可根據這些資訊自行決定是否要重新訂閱。如果不想重新訂閱的話,讀者仍可永久保存舊版本的電子書。

書本有用 DRM (Digital Rights Management) 嗎?

本書沒有上 DRM,但有一些保護措施來避免讀者散布本書。由於本書沒有使用 DRM,讀者可視需求自行備分本書的電子檔案。

我後悔了,可以退費嗎?

當你購買本書後,你已經取得本書的永久拷貝。退費會使得這本書自動變成免費的,所以我們無法這麼做。

實際上,你購買的是離線使用本書的權利。本書一部分的內容可以在這個網站上看到,雖然網頁上的內容和電子書有些差異。此外,我們還提供試讀本,讓你可以充份地測試,確認本書可在你的閱讀器上順利運作後才購買。所以,你應該有足夠的資訊來決定要不要購買本書。

你們有提供紙本書 (Dead-Tree Copy) 嗎?

筆者比較建議直接在電腦或電子書閱讀器上觀看本書,因為這樣可以少砍一些樹。

不過,有些讀者仍然習慣閱讀紙本書。如果讀者真的想要觀看本書籍的紙本版本的話,請購買本書的電子版本後自行列印成紙本書籍即可。在自用的前提下,我們允許讀者自行印書。但勿將印出的書本散布或販賣。

承上,我們不提供寄送紙本書籍的服務,因為這樣會增加額外的成本 (印刷、包裝、運送等),這並不是筆者樂見的情境。

購買本書

Buy on

以 PDF 版本來計算,本書共有 194 頁。

本書價格為 5 美元 (註) 。這個價格同時包含 PDF、ePub、MOBI 三種版本的電子書。

(註) 本書在 Gumroad 上採訂閱制是為了提供有限期更新服務。在訂閱期結束後會自動結束訂閱。

關於作者

身為資訊領域碩士,美思認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

美思喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,美思將所學寫成文章,放在這個網站上和大家分享。