看到 Lisp 有很多版本,什么 Common Lisp,Scheme,还有 Clojure 等等,学习哪个比较好呢?
我觉得从 Scheme 入手,如果你能把 SICP 上所有的练习题都过一遍,差不多要一年吧,然后你就已经知道后面应该学习哪个了。(虽然 1 年时间是估算,但是其实大部分人都坚持不下来)
至少要对这三个语言有一定了解:
Common Lisp。ANSI 标准,还有很多库,是用途最广的 Lisp。实现的话,楼上说的 SBCL(Steel Bank Common Lisp)蛮不错的,我之前用的是 CLISP 和 GCL(好久没写 CL 了)。
Scheme。简单而优雅,自带的函数很少,但也很强大,我个人推荐 Guile 实现。我和 Guile 的维护者 Ludovic Courtès 聊过,他是个非常优秀的开发者。
Emacs Lisp。自带很多处理文本、缓冲区、命令循环、键绑定等很有用的功能。即使你不用 Emacs,Emacs Lisp 也是一门很值得学习的语言,你可以用emacs --script
和emacs --batch
来执行程序。实现的话,还是用 GNU Emacs 吧,其他的 implementation 也都大同小异。
$ cat > hello-world <<EOF
":"; exec ${EMACS-emacs} --script $0 "$@" 2>&1
(message "hello world!")
EOF
$ chmod +x hello-world
# install hello-world /usr/local/bin
用户不需要知道程序/usr/local/bin/hello-world
是用什么语言写的。而且 Emacs Lisp 不只是在 Emacsen 家族里可以用,Sawfish 也是可以的。
除此之外,newLISP、Clojure、Arc、Nu、ISLISP 都是些值得了解的方言。我个人对 Clojure 不是很感兴趣(不过也不讨厌),感觉 Clojure 里很多“微创新”都是没有必要的。
#4 楼 @bhuztez 用什么语言写? #7 楼 @edgar_wang_cn lisp 语言这么复杂,是实现 lisp 部分解释器,还是完全重新实现呢? #12 楼 @xuefuqiao emacs lisp 和 lisp, clojure, racket 语法差异非常大么? #1 楼 @cgyy 你为啥学 clojure 啊?想用它干啥?
@lips the little schemer 是一本非常简单的 scheme 入门书,你可以很快就看完它,了解一些 lisp 中比较通用的概念和操作。如果你学习 lisp 是为了配置 emacs,那么可以直接去学 emacs lisp,如果不是的话,我个人还是比较推荐 racket 或 typed racket。
#19 楼 @edgar_wang_cn 暂时是想配置 emacs,你学 Lisp 的目的是什么?Racket 是 lisp 方言,但是和 common lisp 及 emacs lisp 的差别大么?
@lips 主要还是读 SICP 的时候顺带学了点。各有特色吧,具体区别你可以搜索一下。racket 简单易学,common lisp 提供了 OOP 方面的支持。我现在在做 Java 开发。
#22 楼 @edgar_wang_cn 学 lisp 对你现在写 java 有帮助么?你怎么啥都搞啊,哈哈 现在 java 是老婆,ruby 是情人,lisp 是初恋么?哈哈