我是Common Lisp的新手。这是我用其他语言开发程序的方式,也是我现在用Common Lisp开发程序的方式:
打开文本编辑器(例如vim或emacs)以创建/编辑文本文件。
将源代码写入文本文件。(如果不确定代码段的行为,并且REPL可用,则在REPL中评估代码段,验证代码段的评估是否符合预期,然后返回编写更多代码。)
保存文本文件。
要求编译器/解释器在文本文件中加载并运行源代码。(例如sbcl --script myprog.lisp
)
如果需要,请转到步骤1。
这是大多数编程语言的常规写编译运行开发周期。但是,在Lisp世界中,我听到了诸如“交互式开发”和“基于图像的开发”之类的东西,而且我感到我错过了Common Lisp的一个重要功能。如何执行“基于图像的开发”而不是“写编译运行的开发”?
有人可以提供“基于图像的开发”的分步示例吗,类似于我上面描述的“写-编译-运行开发”吗?
(注意:我正在使用SBCL)
在典型的Common Lisp实现中,运行时,编译器,部分开发环境以及要开发的程序位于同一程序中,并共享相同的对象空间。在您开发程序时,编译器始终可用,并且可以逐步开发程序。开发工具可以访问所有对象,并可以检查其状态。也可以从正在运行的程序中取消定义/删除,替换,增强功能。
从而:
不要重新启动正在开发的程序。保持连接并更新它。甚至几天,几周或几个月-如果可能的话。
编写代码,以便在必要时可以从头开始复制和构建程序。不时进行构建,并修复所有构建问题。
一旦您使用我们的程序并且出现错误->修正程序中的错误,同时能够检查完整的错误状态
创建一个正在运行的程序是将所有代码一直加载到一个普通的Lisp中,或者是将可执行的映像与加载的代码/数据一起保存
程序错误的修复程序也可以作为已编译的Lisp文件提供给用户,该文件会加载到提供的程序中并随后更新代码。