美思 [程式設計] 入門教學 (使用 Lisp):建置開發環境

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文以 Common Lisp 為實例,說明建置開發環境的流程,為撰寫 Common Lisp 程式做準備。

編譯器 (Compiler) 或直譯器 (Interpreter)

程式碼 (code) 本身是文字檔案,需要透過編譯器或直譯器將程式碼轉換成電腦程式 (program)。根據轉換方式的不同,可分為編譯 (compilation) 和直譯 (interpretation) 兩種。

大部分程式語言的實作品只會有編譯或直譯其中一種模式,但許多 Common Lisp 的實作品兼具編譯和直譯兩種模式。本系列文章要使用的 SBCL (Steel Bank Common Lisp) 也有這項特質。

函式庫 (Library)

只有程式語法但沒有函式庫的語言很難使用。大概只有命令列腳本 (shell scripting) 等少數語言完全不依賴函式庫來運作。

標準函式庫會隨編譯器或直譯器一同安裝。社群函式庫則是隨需求另行安裝。Common Lisp 的套件管理程式為 Quicklisp。該管理程式本身也不是 Common Lisp 內建的程式,需要另行安裝。

對於學習程式設計的概念來說,Quicklisp 不是必要的。本文仍會列出安裝 Quicklisp 的過程,給有需求的讀者參考。

編輯器 (Editor)

Windows 的記事本太陽春了,不適合寫程式。Word (Office 軟體) 使用的檔案格式並非文字檔案,也不適合寫程式。

程式碼是文字檔案。撰寫不同程式語言的程式碼時有許多編輯功能是重疊的。編輯器透過外掛 (plugin) 或延伸套件 (extension) 支援不同程式語言特定的功能,像是語法高亮 (syntax highlighting)、自動排版 (automatic formatting)、靜態程式碼檢查 (static analysis)。

傳統上,Common Lisp 社群推薦的編輯器是 Emacs 搭配 SLIME。但 Emacs 本身不是很容易上手,所以我們不使用 Emacs。

這裡建議使用 VSCode。這是微軟開發的免費編輯器,使用起來相當簡單。該編輯器具有豐富的延伸套件,當然也包括給 Common Lisp 使用的延伸套件。至於提供交互式程式設計的延伸套件 Alive 則是選擇性的。

安裝 SBCL

Windows

到 SBCL 的官方網站下載給 Windows 使用的安裝程式。按照安裝程式的指示,一步步安裝即可。

比較建議使用 Chocolatey 來安裝,管理上比較方便。

開啟具有管理者權限的命令列視窗,使用以下指令安裝 SBCL:

> choco install sbcl

日後要更新,也是用一行指令即可:

> choco upgrade sbcl

macOS

建議使用 Homebrew 來安裝,日後管理比較方便。

使用以下指令安裝 SBCL:

$ brew install sbcl

日後使用一行指令即可更新:

$ brew update sbcl

(選擇性) 安裝 Quicklisp

Quicklisp 不是 Common Lisp 內建的軟體,而是後來才發展出來的 Common Lisp 套件管理程式。

開啟終端機程式,將工作目錄 (working directory) 移動到 Quicklisp 命令稿所在的目錄。然後啟動 SBCL 交互式環境:

$ cd path/to/quicklisp.lisp
$ sbcl

這裡還沒說明如何使用 SBCL 的交互式環境,先照著打指令即可。

載入 quicklisp.lisp ,這是用來安裝 Quicklisp 的命令稿:

* (load "quicklisp.lisp")

安裝 Quicklisp:

* (quicklisp-quickstart:install)

將啟動 Quicklisp 的指令加到 SBCL 的起始檔案 (init file):

* (ql:add-to-init-file)

由於 Quicklisp 並非 SBCL 及其他 Common Lisp 實作品的內建軟體,這個步驟是必要的。

離開 SBCL 交互式環境:

* (quit)

安裝 VSCode 及相關套件

到 VSCode 的https://code.visualstudio.com/[官方網站]下載安裝程式後,按照安裝程式的指示安裝即可。

在 VSCode 的 Marketplace (位於左方工具列),輸入 lisp:

VSCode 的 Marketspace (軟體巿集)

安裝 Yasuhiro Matsumoto (a.k.a. mattn) 的 Lisp 套件即可:

VSCode 的 mattn Lisp 套件

這個套件支援語法高亮。

(選擇性) 安裝 Alive

啟動 SBCL 交互式環境,安裝以下 Common Lisp 套件:

* (ql:quickload '("bordeaux-threads" "usocket" "cl-json" "flexi-streams"))

同樣地,到 VSCode 的 Marketspace 安裝 Alive 即可:

VSCode 的 Alive 套件

安裝 Alive 後,在編譯 Common Lisp 程式碼時,會自動啟動交互式環境。這種編輯模式是 Common Lisp 的特色之一,可以邊寫邊修改程式碼,不用離開編輯器。

在 Alive 啟動時,使用 ALT + SHIFT + L 即可載入並執行程式碼,不需離開編輯器,相當方便。

關於作者

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

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