DEV Community · Show DEV8/7 22:3549 分
用Go插件实现交互式编程体验
How I made Go feel interpreted with Go plugins
交互式编程环境已成为现代开发的重要组成部分,但为编译型语言构建笔记本内核颇具挑战。作者探索了两种主流方法:解释执行(如gophernotes)和编译执行(如gonb),前者牺牲了编译语言的优势,后者限制了增量开发。作者发现Go的plugin包(运行时加载共享对象)提供了第三种可能,尽管其初衷并非交互编程,而是用于生成可被其他环境消费的共享库。十年后,这一能力恰好满足了构建笔记本内核的需求:保持进程存活,同时接受新代码并保留内存状态。文章展示了如何利用Go插件实现类似解释型语言的体验。