Common Lisp菜鳥指南(譯)

Common Lisp菜鳥指南(譯)

原文見:http://ghostopera.org/blog/2012/06/24/the-newbie-guide-to-common-lisp/html

譯文自:http://reverland.org/Tech/2012/06/26/common-lisp/git

渣翻譯,見諒。github

進入Common Lisp的世界可能很是讓人退縮,甚至對有經驗的程序猿也是這樣。這個語言兼有力與美,但也有許多清晰的邊界和沒有真正被廣泛理解的開端。編程

這個指南可能將持續一段時間,可是但願它將使踏入Common Lisp的任務變得不那麼可怕。vim

理解Common Lisp

Ariel Networks 有個適當形式的 Common Lisp 指南。app

The HyperSpec 有完整的 Common Lisp 文檔。dom

CLQR 是一個好的課下載的 Common Lisp 快速參考手冊。curl

瞭解你的工具

Emacs1

Emacs 是一個可實用lisp高度定製的編輯器2。它能夠爲lisp提供一個很是獨特的實時開發流程。查看 David O’Toole 在經過Emacs和他的 「Blocky.io」 遊戲開發系統在一個遊戲中的 lightning talk ,來查看實時開發實例。很酷不是嗎?編輯器

Steel Bank Common Lisp

當這世界上有不少可用的 Common Lisp 實現時,"SBCL":sbcl 是很是標準的實現。它很積極的被開發着,有適合的調試器、原生線程、多平臺支持。ide

Quicklisp

Quicklisp 使得從一套豐富的由社區發展的 Common Lisp 庫開始變得更容易。它容許你僅僅經過幾個簡單命令下載、安裝和加載任何700多庫中的庫。它徹底取代了它的前任asdf-install,若是你熟悉RubyGems,這很是類似。

CL-Project

CL-Project 是白手起家一個新的 Common Lisp 項目的最佳現代方法。雖然它確定不是必須的,可是它提供了一個建立新項目的合理起點。

Buildapp

Buildapp 使得建立SBCL的可執行文件更加方便

ASDF

ASDF 容許你定義你的項目的結構和依賴。你能夠把它看成Ruby世界中Rake和Gemfile的雜交。

建立你的第一個應用程序

我將把獲取Emacs和SBCL的任務留給你本身,你能夠找到全部Linux、Windows和MacOS的版本。

安裝Quicklisp和SLIME

$ curl -O http://beta.quicklisp.org/quicklisp.lisp$ sbcl --load quicklisp.lisp
This is SBCL 1.0.42.52, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

  ==== quicklisp quickstart loaded ====     To continue, evaluate: (quicklisp-quickstart:install)
(quicklisp-quickstart:install) (ql:add-to-init-file) (ql:quickload "quicklisp-slime-helper")

建立應用程序

載入Emacs並鍵入 x slime 。你如今應該能夠看到REPL——一個交互的lisp提示符。

(ql:quickload "cl-project") (cl-project:make-project #p"myapp"   :author "Your name"   :email "your@email.com"   :license "BSD or whatever") (ql:quickload "myapp") (in-package :myapp)

如今在Emacs有scratch標籤的窗口鍵入 x cd myapp 緊接着輸入 x f src/myapp.lisp 。你應該擁有了一個爲準備極棒的編碼新創建的myapp.lisp文件。

讓咱們繼續添加一些東西而後試試結果

(defun hello-world ()   (format t "Hello world.~%"))

如今咱們能夠把咱們的更改注入REPL,經過把光標放到最後一行並鍵入c c。經過切換到REPL鍵入如下內容執行咱們的新函數:

(hello-world)

恭喜你!你在經過 Common Lisp 編程

重啓Emacs後加載你的應用3

CL-Project 在運行時更改了當前路徑,使得第一次加載你的應用很簡單。

你有3種方法把應用放到你的加載路徑:

  1. 爲了讓應用在你的當前路徑,或者從應用路徑啓動你的Emacs或者在加載slime以前更改目錄。
  1. 把你的應用移動到 ~/quicklisp/local-projects 它將老是有用。
  1. 向你的加載路徑添加項目

我的選擇對應用選擇方法1對庫文件選擇方法2。

建立可執行文件

雖然作出有用的 Common Lisp 程序沒必要要建立可執行文件,它卻確定能夠方便發佈獨立的應用。你生成的可執行文件將內嵌整個lisp環境,因此不要因二進制文件的體積感到吃驚……

首先,定義可執行文件的切入點

(export 'main) (defun main (args)   (hello-world)   (cl-user::quit))

你將須要下載 buildapp工具 ,指導在它的網站上。

如今從你的myapp目錄咱們能夠在命令行運行buildapp去編譯你的程序!

buildapp --asdf-tree $HOME/quicklisp/dists/quicklisp/software \   --load-system myapp --entry myapp:main --output hello

在程序所在目錄運行你的程序

$ ./hello
Hello World.

下一步是什麼?

實用Common Lisp編程 4很好的介紹Common Lisp的書。是我看的第一本對該語言介紹的書。

Common Lisp the Language,2nd Edition Common Lisp的權威書籍

On Lisp 5提供全面的高級Lisp技術

你應該看看 Land of Lisp 。它很是有趣,會是個至關愉快的閱讀。

Footnotes

1 固然能夠用vim,vim中slimv正是爲此而生,可參考譯者的 在Vim中使用lisp 一文。本文中操做均可以在vim中完成,只是不要嘗試用那個quicklisp-slime-helper了。

2 Emacs內置elisp解釋器。elisp是lisp的一個變種。

3 Vim中相似。

4 有中文版,田春譯。

5 有中文版,有興趣的同窗也許能夠看看 這裏

Changelog

  • 2012年06月27日 星期三 11時03分37秒 更正一些錯誤。加譯做者更新內容
相關文章
相關標籤/搜索