Lisp 一般是如何调用第三方库的?

一般 Emacs/Common Lisp 是如果调用第三方库的?

例如我要转换一个图片,我不想直接用第三方库,例如平时用的 convert 进程,。

那我是通过直接调用一个新的进程 [shell-command(Emacs) or run-program(CL)],

还是说这样每次启用一个新的进程速度会比较慢,应该这些程序都有对应的持续运行的进程,直接通过 socket 来传输数据,效率更快?

https://www.gnu.org/software/emacs/manual/html_node/elisp/Processes.html

这个 process 的效果是不是跟 shell-command 差不多(如果不需要考虑父子进程关系)?

是,不过可以异步启动进程。

另外CL的命令调用要看implementation各自的实现,Emacs的call-processmake-process更类似于你提到的run-program

经常一些较高级涉及操作系统的程序(如酷炫的动画制作)大都要用到 .dylib 之类代码库之类的

是不是都是新建一个子进程哦? (这个问题其实在 nodejs 上也一样,用 child_process ?)

例如一个反面的实例: 要查询数据库,我们是当然是用 socket 去查询,但是也可以新建个子进程 如 psql 查询再读取 :output , 这样要慢得多

但是一般的工具类进程都不需要持续运行,都是新建子进程??

看情况,如果是要频繁用一个功能,当然是IPC比起一个程序然后蒐集output好,不过最理想是FFI call

如果偶尔用一次,那随意了

varjo 像如果这些复杂的代码库,会不会是用子线程,而不是每次用第三方子进程?

。。。学得越多越觉得自己菜了,唉。。。:cold_face:

这不就一个编译器吗,有什么调用第三方进程的必要吗