文章摘要
文章讲述了作者在Emacs中手动将GitHub issues复制到Org文件进行管理的繁琐过程,进而萌生自动化需求,并以此为例展示了Emacs的可塑计算能力。
文章总结
好的,这是根据您的要求,对原文进行的中文重述:
标题:可塑计算、Emacs 与你
核心内容:
本文作者分享了他如何利用 Emacs 的“可塑计算”能力,自动化一个日常任务:将 GitHub Issues 同步到 Org Agenda 中。作者原本需要手动复制粘贴,在 Emacs 中重复多次后,他决定自动化这一过程。
需求与方案:
作者的核心需求是:在 Emacs 中轻松复制 GitHub Issue(标题、描述、元数据)为 Org 任务,并能创建新 Issue,同时避免处理 GitHub 认证和编写完整的 GitHub 客户端。他的解决方案是:利用现有的 GitHub 命令行工具 gh,让 Emacs 通过调用 gh 来与 GitHub 交互,从而将认证工作委托给 gh。
实现方式:
作者开发了一个名为 fj 的 Emacs 包。其核心函数 fj-request-issues 通过构建命令列表调用 gh,解析返回的 JSON 数据,并在 Emacs 中显示。整个过程仅用了不到20行代码。该包还使用了 Transient 和 vtable 包来构建用户界面,并利用 ox-gfm 和 Pandoc 进行 Org 与 Markdown 格式的转换。
可塑计算的优势:
作者强调,Emacs 的可塑性体现在其动态语言 Elisp 的特性上。开发者可以在不重启 Emacs 的情况下,实时编写、评估和修改代码,这大大缩短了开发周期。通过组合现有的 Elisp 包和外部程序,可以用很少的代码(fj.el 约400行)实现所需功能。作者仅用约2.5小时就完成了基本功能,一天内满足了所有需求。
关于软件工程的思考: 作者将这种“为一人构建”的模式与“为大众构建”的传统软件模式进行了对比。他指出,为大众开发的软件(如 Microsoft Office)需要承担巨大的功能集和开发范围,而可塑软件则允许用户利用现有“积木”快速组合出满足自身需求的工具。为一人构建可以忽略错误处理、文档、测试等许多为多人构建时必须考虑的问题,从而极大地提高效率。这种“够用就好”的能力是可塑技术的优势,它赋予用户自主权,让他们能够自由地重塑自己的数字工具。
总结:
作者通过 fj 这个具体例子,展示了 Emacs 提供的可塑计算能力如何让用户通过代码和程序的重组,快速、即兴地创造出新功能。这种能力让个人能够构建出在传统模式下难以实现的工具。
评论总结
以下是对评论内容的总结,涵盖主要观点、论据及认可度,并保持不同观点的平衡性:
主要观点与论据
支持可塑计算(Malleable Computing)
- sroerick(评分:无):基于Emacs理念,构建了运行在Web服务器上的解释型Lisp,将AST存储在Postgres中,实现了低开销的可塑计算。代理可通过REPL直接使用函数,无需调用API,还能编写新视图改进程序。
- 关键引用:"Instead of calling an API, agents can just use functions in a REPL."
- 关键引用:"Being able to design a program specifically for the workflow I want is pretty neat."
- gritzko(评分:无):JavaScript曾为Web实现类似功能,自己正在开发可塑的Git兼容SCM(Beagle),将性能关键部分放在原生库中,其余用JavaScript构建,认为这是LLM时代的正确架构。
- 关键引用:"JavaScript did this for the Web back in the day."
- 关键引用:"I believe this is the right architecture for the LLM age."
- sroerick(评分:无):基于Emacs理念,构建了运行在Web服务器上的解释型Lisp,将AST存储在Postgres中,实现了低开销的可塑计算。代理可通过REPL直接使用函数,无需调用API,还能编写新视图改进程序。
中间地带:Unix工具模型
- __d(评分:无):完全可塑软件需要编程技能,而Unix工具模型提供了一种折中——用简单语法组合预构建工具,类似ELisp函数,但用户技能要求略低。
- 关键引用:"There’s an interesting middle ground: not fully malleable software... but eg the Unix tool model."
- 关键引用:"Pre-existing (or importable) ELisp functions are kinda similar."
- __d(评分:无):完全可塑软件需要编程技能,而Unix工具模型提供了一种折中——用简单语法组合预构建工具,类似ELisp函数,但用户技能要求略低。
历史视角与现有方案
- pjmlp(评分:无):文章重新发现了Lisp机器、Smalltalk等系统的理念,但主流计算从未真正实现。
- 关键引用:"Yet another one rediscovers the way Lisp machines, Smalltalk, Cedar and Oberon were envisioned."
- beepbooptheory(评分:无):文章未提及Magit Forge这一成熟的现有解决方案。
- 关键引用:"This is nice but not even a mention of the rather robust existing solution here with Magit Forge?"
- pjmlp(评分:无):文章重新发现了Lisp机器、Smalltalk等系统的理念,但主流计算从未真正实现。
批评与补充
- jakeandfatman(评分:无):文章无用,因为缺乏本地/远程同步;可组合的UNIX程序优于锁定式单体,无需长篇大论。
- 关键引用:"Useless without local/remote sync."
- 关键引用:"Hardly calling for a Fred Brooks style exegesis."
- jakeandfatman(评分:无):文章无用,因为缺乏本地/远程同步;可组合的UNIX程序优于锁定式单体,无需长篇大论。
平衡性总结
- 支持方:强调可塑计算的实际价值(如Lisp实现、LLM时代架构),认为其能提升工作流定制性。
- 折中方:指出完全可塑的门槛高,Unix工具模型是更实用的中间方案。
- 批评方:认为文章缺乏新意(历史已有类似理念)、忽略现有工具(如Magit Forge),且未解决同步等关键问题。
整体上,评论对可塑计算理念持积极态度,但对其实现方式、实用性和创新性存在分歧。