"Lisp 不是一门语言,它是一种构建素材。"
- 艾伦·凯
本文将介绍如何从零开始使用 Lisp 作为后端构建一个现代的 Web 应用程序。
从 Lisp 诞生至今已有 57 年,半个多世纪。什么概念呢?除了 Fortran 没有谁比 Lisp 更古老了,而很少有人说 Fortran 很酷。
你可以在几乎所有的语言当中看到 Lisp 的影子,因为真的: Lisp 不是一门语言,她是人机对话的基本元素。
阅读链接即为全书内容,无须购买。
那为什么要买书呢?
更新:
脚注:
[1] Hunchentoot 不是当下最好的选择:
不要再直接使用 Hunchentoot 。 选择 Clack ,或者更好的一个基于 Clack 的框架。
- 2015 年 Common Lisp 生态现状
1
wukongkong 2015-08-25 07:36:05 +08:00
书多长啊....
和链接的一样么 |
2
vitovan OP @wukongkong 一模一样。
|
3
vitovan OP @wukongkong 有微调,比如截图等。
|
4
zjxubinbin 2015-08-25 08:36:31 +08:00 1
不错~mark 了~
|
5
vitovan OP |
6
WildCat 2015-08-25 08:51:33 +08:00 via iPhone
免费阅读就是全书内容吗?
|
8
Imivan 2015-08-25 08:56:39 +08:00 1
买买买,支持。
|
9
kainwen 2015-08-25 09:00:47 +08:00 2
楼主知道 PG 现在怎么看 Common Lisp 么?
PG 原话: "Common Lisp does have a lot of flaws. You would probably be better off with Racket or Clojure"。 有意思的是,似乎现在还有很多技术人员在追捧《黑客与画家》? CL 的很多库都 N 多年没有人维护了,而且 usocket 到现在还不支持 ipv6 。 中国很多脑残 lisp 粉就是被 pg 的书的不良宣传(不是 pg 本人)给害了。。。。 |
12
zhuangzhuang1988 2015-08-25 09:46:54 +08:00 1
@kainwen 书商太坏了, 营造学 lisp 必须要看《黑客与画家》的气氛, 虽然我也看了, 不过只是当创业书看的.
|
13
brucefeng 2015-08-25 09:47:31 +08:00 1
不错,支持
|
14
SquirrelMAN 2015-08-25 09:53:00 +08:00
这不是 Hacker news 上的吗 233
|
15
alvin2ye 2015-08-25 10:02:47 +08:00 1
果断先付款, 慢慢再看
|
16
vitovan OP @SquirrelMAN 是,中文版本。
|
17
adoyle 2015-08-25 10:26:36 +08:00 1
写得不错,感谢 LZ 的分享
|
18
R09PR0xF 2015-08-25 10:45:30 +08:00
看成 Lips 了。
|
20
hansnow 2015-08-25 12:01:20 +08:00 1
被楼主幽默的语言逗坏了,赞一个!
|
21
usapla 2015-08-25 12:06:57 +08:00
我在 “面向世界的编程”部分遇到困难,我用的是 win7PC64 位系统,然后安装 quicklisp.lisp 部分是用 “ sbcl -- load quicklisp.lisp ”命令来执行的,然后执行后,按照提示继续安装。等运行 “ server.lisp ”部分一直提示缺少 libssl32.dll 文件,我把这个缺失文件放到 system32 里, 还是提示缺失,真是头痛
|
22
vitovan OP |
23
phoenixlzx 2015-08-25 12:15:55 +08:00 1
好书好书 www mark 一下
|
24
liuxu 2015-08-25 12:53:05 +08:00 via Android 1
酷毙了
|
25
jadecoder 2015-08-25 17:36:33 +08:00 1
放进 pocket 里了,今晚地铁看
|
26
Rand01ph 2015-08-25 18:23:00 +08:00 1
一直支付出错。。。真是难
|
27
vitovan OP |
28
bian 2015-08-25 21:27:31 +08:00 1
楼主还是将 lisp 改成 common lisp 吧。毕竟 lisp 有很多方言。。。
|
29
bramblex 2015-08-26 01:44:55 +08:00 1
吃豆人哪个是指 Currying 的过程吗?很有意思啊
|
30
Rico 2015-08-26 13:24:48 +08:00
通过一个叫田春冰河的人知道了这门语言
像是上古时期的一门法术 脑洞一开,觉得掌握不同语言的程序员就像是会不同属性的技能的法师。 Some one like Gandalf |
31
nareix 2015-08-26 13:25:26 +08:00
@kainwen 正解啊。 lisp 这种纯语法树的,在当时看来发明轮子很容易,但现在轮子已经比当初完善多了。比如 React/angular 等等。
|
32
3b295 2015-08-26 14:30:06 +08:00
《黑客与画家》是在高三看得。当时还到处和别人吹鼓 lisp 。试下用 lisp 造一下东西,应该更能体会 lisp 吧。
|
33
yannxia 2015-08-26 14:52:04 +08:00
很多年前, LISP 就和 Java 一样火,甚至于更火,现在呢?
|
34
a15819620038 2015-08-26 16:54:02 +08:00
|
35
vitovan OP @a15819620038 哈!那...... 能再详细一些么? 环境?步骤?
|
36
a15819620038 2015-08-26 17:19:20 +08:00
@vitovan
> sbcl --version SBCL 1.1.6.0-3c5581a JSON 的那个例子(之前那个 /hello 例子同样 404 ),代码都是复制进去的。 访问 /, 200 ``` "GET / HTTP/1.1" 200 393 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4 ) AppleWebKit/537.36 (KHTML, like Gecko ) Chrome/44.0.2403.157 Safari/537.36" ``` 访问 /me , 404 ``` "GET /me HTTP/1.1" 404 303 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4 ) AppleWebKit/537.36 (KHTML, like Gecko ) Chrome/44.0.2403.157 Safari/537.36" ``` |
37
vitovan OP |
38
a15819620038 2015-08-26 19:29:23 +08:00
@vitovan Mac OS X 10_9_4 ,谢谢你的帮助
|
39
vitovan OP @a15819620038 你说 “代码都是复制进去的“,指的是直接复制到 REPL 里面然后回车的么? 还是用的加载文件的形式?
--- 先把 Hello 搞出来再说,试试启动 sbcl 之后,直接在 REPL 内执行以下代码: (ql:quickload :hunchentoot ) (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242 )) (hunchentoot:define-easy-handler (say-hello :uri "/hello") (name ) (setf (hunchentoot:content-type*) "text/plain") (format nil "嘿, ~a! 我是 Vito! ~%我刚刚用 Lisp 建了个网站!" name )) |
40
a15819620038 2015-08-26 22:55:21 +08:00
@vitovan Hi ,谢谢你的回答,我解决了 O (∩_∩)O 。
创建 handler 的代码需要在运行服务监听端口代码之前: ``` ;; 调换一下位置 (hunchentoot:define-easy-handler (say-hello :uri "/hello") (name ) (setf (hunchentoot:content-type*) "text/plain") (format nil "嘿, ~a! 我是 Vito! ~%我刚刚用 Lisp 建了个网站!" name )) (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242 )) ``` |
41
vitovan OP @a15819620038 哇,明明是你自己解决的么!
|
43
sammo 2016-08-25 22:27:10 +08:00
|