跳转到内容

Common Lisp/入门/安装

来自Wikibooks,开放世界中的开放书籍

为了开始使用 Common Lisp 编程,您需要获得一个 Common Lisp 实现。大多数操作系统都有许多可用的实现。既有免费的,也有商业的实现。

编辑器

[编辑 | 编辑源代码]

开始使用 Common Lisp 的最简单方法是使用Emacs。Emacs,或者您有时会听到人们称之为“原生 Emacs”,是大多数 Lisp 程序员首选的编写 Lisp 的方式。如果您也是 Emacs 新手,那么以下内容可能会有所帮助,但对于新用户来说,它们也可能让人感到不知所措。如果您打算使用 Emacs,您可能还应该安装slime。Slime 将帮助您编辑 Common Lisp;它包含在以下环境中。

Portacle 是一个便携且多平台的 Common Lisp 环境,现在通常推荐给初学者。它将 SBCL、Emacs(具有良好的自定义)、Quicklisp 和 Git 打包在一起。无需安装,因此它确实是一种简单易行的方法。

Doom Emacs

[编辑 | 编辑源代码]

Doom Emacs 是一个流行的预配置版 Emacs,适合初学者和高级用户。

spacemacs

[编辑 | 编辑源代码]

spacemacs 是另一个流行的预配置版 Emacs,它配备了用于 Common Lisp 的完整功能。

vimneovim 是程序员非常常用的文本编辑器。如果您已经熟悉 vim,您仍然可以使用它来编辑 Common Lisp。

slimv 可能是最流行的用于编辑 Common Lisp 的 vim 插件。

vlime 是 slimv 的一个较新的替代方案,它主要用 viml(vim 的扩展语言)编写。

免费实现

[编辑 | 编辑源代码]

注意:即使您不想安装 Portacle,也强烈建议使用 Emacs/SLIME 组合来与这些实现交互。原因是它们提供的文本控制台使用起来非常笨拙,因此大多数用户更喜欢 SLIME 提供的更友好的环境。

GNU CLISP

[编辑 | 编辑源代码]

GNU CLISP 是一种流行的免费实现,可以在 Windows 和大多数类 Unix 系统上运行。如果您使用的是 Windows,则别无选择,只能使用 CLISP。CLISP 提供了所有 ANSI Common Lisp 特性,并且非常易于安装。

  • 完全的 Unicode 支持
  • 本地化的界面和编译器消息
  • 高度可移植性:几乎可以在任何地方运行
  • 编译为可移植的字节码(大多数或所有其他 Common Lisp 实现都编译为本地代码)
  • 内存占用小
  • 任意精度浮点数运算
  • 数字运算速度慢

CMU Common Lisp 是一种高性能的 Common Lisp 实现。

  • 非原生线程(“绿色”线程;仅限 x86)
  • 由于其生成本地代码的优化编译器,因此生成速度快的代码
  • 编译器速度快

Steel Bank Common Lisp(SBCL)是CMU Common Lisp的一个分支,是一个具有原生代码编译功能的可移植实现。它在CMUCL或CCL无法运行的平台上很容易成为最流行的Common Lisp编译器,并且即使在这些平台上也是一个极好的选择,主要是因为它具有更好的调试支持(例如,它的编译器会产生更多警告,并且据说在ANSI兼容性方面更加严格)。

  • Unicode支持
  • 相当便携:可在类Unix系统(包括Mac OS X和Microsoft Windows)上运行。
  • 在基于Intel的平台上提供原生线程支持
  • 由于生成原生代码的优化编译器,速度很快
  • 编译速度慢(SBCL执行*许多*优化,这可能很慢)

Clozure CL

[编辑 | 编辑源代码]

Clozure CL(CCL)是适用于PowerPC和AMD64的Common Lisp实现。有一个x86的预发布版本。它在Mac OS X上很容易成为最受欢迎的选择,但它在GNU/Linux和FreeBSD/amd64系统上运行得同样出色;还有一个Windows的测试版。在Mac OS X上,CCL具有Cocoa界面。

  • 完全的 Unicode 支持
  • 一个快速的编译器,生成同样快速的代码
  • 一个用于Mac OS X GUI开发的Cocoa界面
  • 原生线程

可嵌入CL(ECL)

[编辑 | 编辑源代码]

ECL是一个专注于可移植性和可嵌入性的Common Lisp实现。这些目标是通过将CL转换为C并将C传递给C编译器(通常是gcc)来实现的。它运行在Linux、FreeBSD、NetBSD、OpenBSD、Solaris和Windows上,运行在Intel、Sparc、Alpha和PowerPC处理器之上。

  • Unicode支持
  • 将CL转换为C,生成相对快速的原生代码
  • 解释器,可避免缓慢的构建时间
  • 按需加载。ECL推迟加载模块,直到需要时才加载
  • 能够输出可移植的C源文件,这些文件可以在其他架构上编译
  • 从Lisp调用C,并从C调用Lisp(即ECL可以用作任何可以调用C函数的程序的扩展语言)
  • 原生线程
  • 编译方法相对缓慢(gcc速度慢,也许如果你使用更快的C编译器)
  • 错误处理相对脆弱(即你很容易让ECL发生段错误)

武装熊Common Lisp

[编辑 | 编辑源代码]

ABCL是一个在Java虚拟机上运行的Common Lisp实现。它提供了一个运行时系统、一个将Lisp源代码编译为JVM字节码的编译器以及一个用于程序开发的交互式REPL。

  • 生成可移植的Java字节码
  • Java库可以透明地使用
  • 比其他实现慢得多

商业实现

[编辑 | 编辑源代码]

Allegro、LispWorks和Corman Lisp都有免费试用版,这对学习这门语言很有帮助。它们都可以在Windows上运行。

[编辑 | 编辑源代码]
华夏公益教科书