美思 [程式設計] 入門教學 (使用 Lisp):介紹

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

有些程式設計的教材,帶有顯著的實用性。像是學習 PHPJavaScriptMySQL,就是準備要寫動態網站 (dynamic website)。

本系列文章的目的則是理解程式設計 (programming) 的基本概念 (concept)。也就是說,這系列文章的實用性沒那麼明確,是以理解觀念為主。

電腦程式 (Computer Program) 的根源

不論使用什麼程式語言 (programming language) 實作電腦程式,這些程式終究是由 CPUGPU 等晶片 (chip) 進行運算。選擇和使用程式語言的重點應該是符合需求且易於使用,而不是執著於特定程式語言。

實際上,程式語言就像汽車一樣。同樣是從甲地到乙地,有些車可以載很多貨,有些車可以載很多人,有些車跑很快,有些車很省油。但汔車的駕駛方式都大同小異。在這趟程式設計的旅程,我們會坐上 Common Lisp 這款有點歷史的車。

為什麼使用 Common Lisp

筆者本來想要用 Python、Ruby 等實用性較強的語言。但對進階的語法特性,像是元程式 (metaprogramming)、巨集 (macro),使用 Common Lisp 反而比較方便。

除此之外,Common Lisp 不會強調非得要用函數式程式設計 (functional programming) 來寫,也可以寫得像常見的指令式程式設計 (imperative programming) 的程式碼。當然,Common Lisp 也支援物件導向程式設計 (objective-oriented programming)。

Lisp 不受歡迎的原因在於大量中括號和前序 (prefix notation) 語法。不過,在現代程式設計編輯器 (programming editor) 的輔助下,這些問題都不是真正的問題。只要讀和寫一小段時間,就會適應 Lisp 的程式碼。

本系列文章的方向

本系列文章的重點在於理解程式設計的概念,而非 Common Lisp 教學。我們的範例程式碼不會太 lispy,而是以簡單明暸為主。此外,我們也不考慮 Common Lisp 實作品間的差異。

我們假定讀者使用 Windows 或 macOS。使用其他系統的讀者,請自行參考系統手冊來安裝所需的開發工具。

關於作者

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

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