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秒 更正一些错误。加译做者更新内容
相关文章
相关标签/搜索