HeadlinesBriefing favicon HeadlinesBriefing.com

脾气古怪者尝试语言服务器

Hacker News •
×

我写代码的方式和十年前差不多:在文本编辑器中修改,切换到终端,运行命令编译执行。查看结果,然后切换回编辑器。如果不确定,就添加跟踪打印或在调试器中重启。如果异常导致程序崩溃,我会修复并重启。

我羡慕Lisp程序员的做法。Lisp开发是通过直接在repl中输入代码来添加、删除和替换正在运行的系统的部分。Lisp程序员不需要“切换”,因为他们已经在程序进程内部。他们从不“编译并执行”,因为代码已经在运行,他们通过热交换进行编辑。他们不会在调试器中重启,因为他们可以检查任何东西。他们不会因异常而重启,因为条件系统允许从任何地方恢复。

结果是,在Lisp项目的早期,可能没有任何源代码;演化的定义只存在于内存映像中。这就像人们在开始时对待关系数据库的方式——模式只存在于运行的数据库中。最终,它会被转储到版本控制下的文件中。

我不是Lisp开发者,所以我会继续羡慕。但我意识到我还没有尝试更接近。在Haskell中,有部分胜利:类型系统减少了异常,Haskell语言服务器(hls)与Emacs的Eglot提供了更好的内省。ghcid监视更改并快速重新编译。