• 请不要在回答技术问题时复制粘贴 AI 生成的内容
vitovan
V2EX  ›  程序员

Lisp 与现代 Web 开发

  •  2
     
  •   vitovan · Aug 25, 2015 · 11945 views
    This topic created in 4089 days ago, the information mentioned may be changed or developed.

    "Lisp 不是一门语言,它是一种构建素材。"

    - 艾伦·凯

    本文将介绍如何从零开始使用 Lisp 作为后端构建一个现代的 Web 应用程序。

    从 Lisp 诞生至今已有 57 年,半个多世纪。什么概念呢?除了 Fortran 没有谁比 Lisp 更古老了,而很少有人说 Fortran 很酷。

    你可以在几乎所有的语言当中看到 Lisp 的影子,因为真的: Lisp 不是一门语言,她是人机对话的基本元素。

    Lisp For the Modern Web cn.jpg

    敬请阅读: http://vitovan.com/lispweb3-cn.html

    Supplement 1  ·  Aug 25, 2015

    阅读链接即为全书内容,无须购买。
    那为什么要买书呢?

    • 我有钱
    • 纯粹支持
    Supplement 2  ·  Aug 25, 2015
    Supplement 3  ·  Aug 26, 2015

    更新:

    脚注:

    [1] Hunchentoot 不是当下最好的选择:

    不要再直接使用 Hunchentoot 。 选择 Clack ,或者更好的一个基于 Clack 的框架。
    

    - 2015 年 Common Lisp 生态现状

    43 replies  •  2016-08-25 22:27:10 +08:00
    wukongkong
    wukongkong
    Aug 25, 2015
    1
    书多长啊....
    和链接的一样么
    vitovan
    vitovan
    OP
    Aug 25, 2015
    2
    @wukongkong 一模一样。
    vitovan
    vitovan
    OP
    Aug 25, 2015
    3
    @wukongkong 有微调,比如截图等。
    zjxubinbin
    zjxubinbin
    Aug 25, 2015❤️1
    4
    不错~mark 了~
    vitovan
    vitovan
    OP
    Aug 25, 2015 via Android
    5
    WildCat
    WildCat
    Aug 25, 2015 via iPhone
    6
    免费阅读就是全书内容吗?
    vitovan
    vitovan
    OP
    Aug 25, 2015❤️1
    7
    @WildCat 阅读链接即为全书内容,无须购买。
    Imivan
    Imivan
    Aug 25, 2015❤️1
    8
    买买买,支持。
    kainwen
    kainwen
    Aug 25, 2015❤️2
    9
    楼主知道 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 本人)给害了。。。。
    vitovan
    vitovan
    OP
    Aug 25, 2015
    10
    @kainwen 你说的对。
    kainwen
    kainwen
    Aug 25, 2015❤️1
    11
    @vitovan 我当年就是被害的脑残之一。。。。
    zhuangzhuang1988
    zhuangzhuang1988
    Aug 25, 2015❤️1
    12
    @kainwen 书商太坏了, 营造学 lisp 必须要看《黑客与画家》的气氛, 虽然我也看了, 不过只是当创业书看的.
    brucefeng
    brucefeng
    Aug 25, 2015❤️1
    13
    不错,支持
    SquirrelMAN
    SquirrelMAN
    Aug 25, 2015
    14
    这不是 Hacker news 上的吗 233
    alvin2ye
    alvin2ye
    Aug 25, 2015❤️1
    15
    果断先付款, 慢慢再看
    vitovan
    vitovan
    OP
    Aug 25, 2015
    16
    @SquirrelMAN 是,中文版本。
    adoyle
    adoyle
    Aug 25, 2015❤️1
    17
    写得不错,感谢 LZ 的分享
    R09PR0xF
    R09PR0xF
    Aug 25, 2015
    18
    看成 Lips 了。
    vitovan
    vitovan
    OP
    Aug 25, 2015 via Android
    19
    @alvin2ye 多谢!
    hansnow
    hansnow
    Aug 25, 2015❤️1
    20
    被楼主幽默的语言逗坏了,赞一个!
    usapla
    usapla
    Aug 25, 2015
    21
    我在 “面向世界的编程”部分遇到困难,我用的是 win7PC64 位系统,然后安装 quicklisp.lisp 部分是用 “ sbcl -- load quicklisp.lisp ”命令来执行的,然后执行后,按照提示继续安装。等运行 “ server.lisp ”部分一直提示缺少 libssl32.dll 文件,我把这个缺失文件放到 system32 里, 还是提示缺失,真是头痛
    phoenixlzx
    phoenixlzx
    Aug 25, 2015❤️1
    23
    好书好书 www mark 一下
    liuxu
    liuxu
    Aug 25, 2015 via Android❤️1
    24
    酷毙了
    jadecoder
    jadecoder
    Aug 25, 2015❤️1
    25
    放进 pocket 里了,今晚地铁看
    Rand01ph
    Rand01ph
    Aug 25, 2015❤️1
    26
    一直支付出错。。。真是难
    vitovan
    vitovan
    OP
    Aug 25, 2015 via Android
    27
    @Rand01ph

    抱歉,麻烦了。

    如果实在不行,可以尝试英文版:

    https://www.gitbook.com/book/vitovan/lispweb3/welcome
    bian
    bian
    Aug 25, 2015❤️1
    28
    楼主还是将 lisp 改成 common lisp 吧。毕竟 lisp 有很多方言。。。
    bramblex
    bramblex
    Aug 26, 2015❤️1
    29
    吃豆人哪个是指 Currying 的过程吗?很有意思啊
    Rico
    Rico
    Aug 26, 2015
    30
    通过一个叫田春冰河的人知道了这门语言
    像是上古时期的一门法术
    脑洞一开,觉得掌握不同语言的程序员就像是会不同属性的技能的法师。 Some one like Gandalf
    nareix
    nareix
    Aug 26, 2015
    31
    @kainwen 正解啊。 lisp 这种纯语法树的,在当时看来发明轮子很容易,但现在轮子已经比当初完善多了。比如 React/angular 等等。
    3b295
    3b295
    Aug 26, 2015
    32
    《黑客与画家》是在高三看得。当时还到处和别人吹鼓 lisp 。试下用 lisp 造一下东西,应该更能体会 lisp 吧。
    Yanickkk
    Yanickkk
    Aug 26, 2015
    33
    很多年前, LISP 就和 Java 一样火,甚至于更火,现在呢?
    a15819620038
    a15819620038
    Aug 26, 2015
    34
    @vitovan Hello ,谢谢你提供的资源,内容很好简单。

    但我按照你书本里面的内容走,发现除了 / 能访问之外,其它带 uri 的例子都是 404 ,请问这个问题是?
    vitovan
    vitovan
    OP
    Aug 26, 2015
    35
    @a15819620038 哈!那...... 能再详细一些么? 环境?步骤?
    a15819620038
    a15819620038
    Aug 26, 2015
    36
    @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"
    ```
    vitovan
    vitovan
    OP
    Aug 26, 2015
    37
    @a15819620038 如果 /hello 404 的话, JSON 的就更不用考虑了。

    你用的是什么系统?
    a15819620038
    a15819620038
    Aug 26, 2015
    38
    @vitovan Mac OS X 10_9_4 ,谢谢你的帮助
    vitovan
    vitovan
    OP
    Aug 26, 2015
    39
    @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 ))
    a15819620038
    a15819620038
    Aug 26, 2015
    40
    @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 ))
    ```
    vitovan
    vitovan
    OP
    Aug 27, 2015 via Android
    41
    @a15819620038 哇,明明是你自己解决的么!
    MonkLuf
    MonkLuf
    Sep 3, 2015
    42
    @kainwen pg 这句话的出处是?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2030 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 16:26 · PVG 00:26 · LAX 08:26 · JFK 11:26
    ♥ Do have faith in what you're doing.