common-lisp - 如何在 Common Lisp 中进行基于图像的开发?

标签 common-lisp sbcl

我是 Common Lisp 的新手。这就是我用其他语言开发程序的方式,也是我现在用 Common Lisp 开发程序的方式:

  • 打开文本编辑器(例如 vim 或 emacs)以创建/编辑文本文件。
  • 将源代码写入文本文件。 (如果不确定代码片段的行为,并且 REPL 可用,则在 REPL 中评估代码片段,验证代码片段是否按预期评估,然后返回编写更多代码。)
  • 保存文本文件。
  • 要求编译器/解释器加载并运行文本文件中的源代码。 (例如 sbcl --script myprog.lisp )
  • 如果需要,请转到步骤 1。

  • 这是大多数编程语言的常规编写-编译-运行开发周期。然而,在lisp的世界里,我听到诸如“交互式开发”和“基于图像的开发”之类的东西,我觉得我错过了Common Lisp的一个重要特性。如何进行“基于图像的开发”而不是“编写-编译-运行开发”?

    有人可以提供类似于我在上面描述的“编写-编译-运行开发”的“基于图像的开发”的分步示例吗?

    (注意:我使用的是 SBCL)

    最佳答案

    在典型的 Common Lisp 实现中,运行时、编译器、部分开发环境和您正在开发的程序驻留在同一个程序中并共享同一个对象空间。在您开发程序时,编译器始终可用,并且程序可以增量开发。开发工具可以访问所有对象并可以检查它们的状态。还可以从正在运行的程序中取消定义/删除、替换、增强功能。

    因此:

  • 不要重启你正在开发的程序。保持联系并更新它。甚至几天、几周或几个月——如果可能的话。
  • 以这样一种方式编写代码,以便在必要时可以从头开始复制和构建程序。不时构建它并修复任何构建问题。
  • 一旦您使用我们的程序并且出现错误 -> 修复程序中的错误,同时能够检查完整的错误状态
  • 创建一个正在运行的程序要么一直将所有代码加载到一个普通的 Lisp 中,要么用加载的代码/数据保存一个可执行图像

  • 程序错误的修复也可以作为编译后的 Lisp 文件发送给用户,这些文件被加载到交付的程序中,然后更新代码。

    关于common-lisp - 如何在 Common Lisp 中进行基于图像的开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697459/

    相关文章:

    emacs - 在缓冲区中评估与在粘液中评估不同?

    emacs - 为什么在编译函数时会收到 "Undefined function"警告?

    list - 连接列表并将结果返回到第一个参数

    lisp - 在 cygwin 上安装 sbcl

    compilation - SBCL 的内联编译和 block 编译有什么区别?

    unicode - 以重音字符为键的 Common Lisp 哈希表

    sockets - 如何使用 SBCL 的套接字重用之前打开的端口?

    lisp - 为什么 CLISP 不能调用某些具有非内部名称的函数?

    common-lisp - 如何执行一个普通的 lisp 文本文件(clozure cl)?

    lisp - Lisp : The LET binding spec is malformed 错误