010. 与宇宙学博士后聊 Emacs

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期嘉宾是一个研究宇宙学的博士后:管轶伦。嘉宾根据自身的学术工作需求,将 Emacs 打造成辅助他高效工作的利器,并且调侃到:“电脑这东西,不就是用来开 Emacs 的嘛”,足见其硬核。 说起物理学,在我们一般人看来是个很遥远的事情,和日常的生活关系不大,更何况是千亿光年外的宇宙呢。嘉宾为什么选择了这条方向?研究宇宙学的意义在哪里?在近一个小时的节目里,这些问题统统可以找到答案,精彩不容错过。 时间线 * 00:00:49 嘉宾自我介绍 * 00:01:24 Emacs 初印象 * 00:06:20 为什么喜欢 Lisp * 00:12:04 Emacs 除了写代码外的主要用途 * 00:19:50 Emacs 在大学老师中的使用情况 * 00:26:06 嘉宾学习物理学的历程 * 00:28:18 宇宙学对现实生活的意义 * 00:32:09 宇宙学的研究方式 * 00:38:32 宇宙学对嘉宾的影响 * 00:39:33 为什么我们还没有找到地外文明👽 * 00:44:39 宇宙背景辐射是均匀的现实意义 * 00:49:04 读博期间有意思的事 * 00:52:27 推荐环节 Show Notes * 嘉宾自我介绍 * 管轶伦(Guan Yilun),研究宇宙学的博士后 * 大概耗时半年时间才适应 Emacs,目前的配置,参考自 Centaur Emacs * 使用 Emacs 登录超级计算中心来进行代码编写与调试 * 吸引嘉宾喜欢 Lisp 的文章:How To Become A Hacker * 用 Lisp 方式写 Python 的库:HPy: a better API for Python * Org-roam 支持反向链接的 org 插件 * Ebib 管理网摘、项目进度 * Writing Beamer presentations in org-mode * Centaur Emacs - A Fancy and Fast Emacs Configuration * 观测宇宙背景辐射的天文台 * 智利阿塔卡马沙漠-拉诺德查南托天文台 * 南极 * 阿里天文观测基地_百度百科 * 在智利🇨🇱看到的两个中国品牌:摩拜单车与华为手机 * 嘉宾推荐 * org-elp: Preview equations live in org-mode * Lex Fridman Podcast * 主播推荐 * 齐说三体 - 喜马拉雅 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
5天前

016. 文一的开源项目学习之路

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 大家好,这是 2024 年的第一期节目,首先给大家说声抱歉!其中一个原因是没有特合适的人,所以希望大家推荐想在节目上看到的嘉宾,我来勾搭! 本期节目的嘉宾是文一,这位零零后在校大学生是一名开源项目的积极参与者,目前是开放原子开源基金会 “内核一周一审” 负责人,有 IvorySQL,PikiwiDB 内核代码贡献经验。参与节目专门制作了一个 PPT,感兴趣的听众可以下载阅读,地址:Emacs 编辑器对于我的启发与帮助。 通过和他深入交谈,我们发现他是一个富有思考深度和总结能力的年轻人。在学习和参与开源项目的过程中,他不仅收获了丰富的经验,还踩过不少“宝贵”的坑,帮助大家来少走弯路。 在本期节目中,文一将分享他独特的视角和宝贵经验:如何在众多开源项目中精准识别那些用心打造的优质项目?如何提高 Emacs 开箱即用的体验,扩大 Emacs 用户基数? 时间线 * 00:02:03 嘉宾自我介绍 * 00:06:22 Emacs 使用工作流介绍 * 00:18:32 如何用 Emacs 阅读大型项目 * 00:33:08 学习 PostgreSQL 经历 * 00:57:02 未来规划 链接 * Bulma, 基于Flexbox的免费、开源、现代化的CSS框架,并且使用Sass进行构建, 它100%响应式,全部模块化,并且完全免费 * Symfony, High Performance PHP Framework for Web Development * 【咨询】转向LSP-BRIDGE以后,如何阅读大型项目的源代码? - Emacs-general - Emacs China * abo-abo/org-download: Drag and drop images to Emacs org-mode * PikiwiDB(Pika),为海量数据存储设计的高可用键值数据库 * Hello from 走向内核 | 走向内核 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
5天前

017. UNIX:一段历史与回忆

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期节目来介绍一本书:Unix: A History and a Memoir(PDF 下载地址,访问码:emacstalk),作者是贝尔实验室的计算机科学家 Brian W. Kernighan,他是 Unix 的联合创始人之一,也是 C 语言、AWK 的主要开发者之一。书中详细回顾了 Unix 的发展历程、设计理念和对计算机科学的影响。 比较特别的是,本期节目没有嘉宾,是由西瓜和 NotebookLM 协同完成!NotebookLM 是一个基于 LLM 的笔记应用,支持 Markdown 和 LaTeX 语法,具有强大的搜索和组织功能。它可以帮助你更高效地管理和利用你的知识,建议大家都去试试。 如果你对以后的节目有任何建议或者想法,欢迎给我留言,让我们一起把节目做得更好! 时间线 * 02:15 生成播客节目:探索UNIX历史的奇妙之旅 * 04:16 软件开发的演变:从 Multics 到 UNIX 的故事 * 06:19 软件开发过程中的挑战与经验教训:重写项目的利与弊 * 08:22 如何减少失败率?探讨重生计划前阅读UNIX历史的重要性 * 10:24 深入探索UNIX诞生背后的秘密武器:贝尔实验室的创新之道 * 12:24 探索与创新的天堂:贝尔实验室与UNIX的诞生 * 14:25 成功的秘诀:自由探索的氛围、密切的合作和知识分享 * 16:26 从PDP到UNIX:一个被低估的操作系统的诞生历程 * 18:26 追寻历史的足迹:贝尔实验室与UNIX的诞生 1. Unix 是如何诞生的,最初的目的是什么? Unix 的诞生源于贝尔实验室的一个小团队,最初由 Ken Thompson 和 Dennis Ritchie 等人开发。它的起源可以追溯到 Multics 项目,当贝尔实验室退出 Multics 后,Thompson 在一台 PDP-7 计算机上开始了 Unix 的原型开发。最初,这个系统是为了给一个文件系统实现提供测试平台,以便于加载数据进行吞吐量等方面的测试。Ken Thompson 在他的伴侣 Bonnie 回娘家期间,意识到他距离一个分时系统只差一个 exec 调用、一个 shell、一个编辑器和一个汇编器,并决定用三个星期的时间完成它们。因此,最初的 Unix 系统是一个单用户系统,随后才扩展为多用户。名称“Unix”源于对“Multics”的戏称,“UNICS”(UNiplexed Information and Computing Service),最终演变为 Unix。 2. Unix 文件系统有何特点和创新之处? Unix 文件系统的一个核心特点是其层次结构,以一个根目录 / 为起点,形成树状结构。目录本身也被视为文件,其内容由系统维护,包含关于文件和子目录的信息。每个目录都有特殊的条目: "." 指代自身,".." 指代父目录。这种结构使得通过从根目录开始的路径名(例如 /usr/bwk/book/book.txt)可以轻松访问任何文件。文件系统还支持当前目录的概念,允许使用相对路径。 Unix 的另一个重要创新是将外围设备(如磁盘、终端等)表示为文件系统中的文件。这意味着可以使用与访问普通文件相同的系统调用(如 open, read, write, close)来访问这些设备,极大地简化了编程。此外,文件权限控制机制也相对简单但有效,使用 9 个比特位分别控制文件所有者、所属组和其他用户的读、写、执行权限,后来还引入了 setuid 位以允许普通用户以文件所有者的权限执行程序。 3. Shell 在 Unix 系统中扮演什么角色? Shell 是 Unix 系统中用户与操作系统交互的主要接口。它是一个普通的用户程序,负责解释用户输入的命令并执行相应的程序。用户通过 shell 输入命令,shell 执行这些命令并在完成后等待下一个输入。Shell 并非操作系统内核的组成部分,这使得用户可以根据需要选择或编写不同的 shell 程序,提供了极大的灵活性。 Shell 的一个重要功能是支持 I/O 重定向和管道(pipes)。I/O 重定向允许将命令的输入或输出连接到文件,而管道(用 | 字符表示)则允许将一个命令的输出直接作为另一个命令的输入,实现多个程序的串联执行,极大地提高了命令组合的能力。例如, ls | wc 命令将 ls 命令的输出(每行一个文件)传递给 wc 命令进行行数统计,从而计算目录中的文件数量。 4. C 语言与 Unix 的关系是什么? C 语言与 Unix 系统有着紧密的联系,两者可以说是共同演进、互相成就。在 PDP-11 计算机上开发 Unix 时,由于之前的 B 语言不适合字节寻址的 PDP-11,Dennis Ritchie 开始改进 B 语言并为其编写编译器,最终诞生了 C 语言(最初称为 NB,New B)。 C 语言支持与 PDP-11 硬件数据类型相匹配的数据类型(如字节、整数、浮点数),并提供了强大的指针操作能力,这使得它非常适合用于系统级编程,包括编写操作系统本身。Unix 的大部分代码都用 C 语言编写,而 C 语言的许多特性也受到 Unix 开发经验的影响。两者共同构成了 Unix 系统及其开发环境的基础。 5. Yacc、Lex 和 Make 这些工具在 Unix 开发中有什么作用? Yacc (Yet Another Compiler-Compiler)、Lex (Lexical Analyzer generator) 和 Make 是 Unix 环境中重要的开发工具,它们都遵循模式-动作(pattern-action)范式,用于简化程序开发过程。 * Yacc 是一个编译器-编译器,用于根据语言的语法规则生成解析器程序。它接受语言的语法定义和与之相关的语义动作,并生成一个 C 语言程序,该程序能够解析输入并执行对应的语义动作。Yacc 极大地简化了编写编译器和其他需要解析输入语言的程序的过程。 * Lex 是一个词法分析器生成器,与 Yacc 配合使用。它根据正则表达式模式识别输入中的“词法单元”(如保留字、变量名、运算符等),并生成一个 C 语言程序,该程序能够从输入流中提取这些词法单元。 * Make 是一个构建自动化工具,用于管理多文件程序的编译和链接过程。它读取一个描述文件依赖关系的配置文件,根据文件的修改时间确定需要重新编译和链接哪些文件,并只执行必要的步骤,以保证最终程序是最新的。Make 极大地提高了开发效率,特别是在大型项目中。 这些工具通过自动化语言处理和构建过程中的重复任务,为 Unix 开发环境提供了强大的支持,并至今仍在广泛使用。 6. Unix 是如何从一个研究项目走向商业化和广泛应用的? Unix 最初在贝尔实验室内部使用,用于支持专利申请等工作,后来开始向大学授权(通常是第六版),收费 nominal。由于 AT&T 不提供商业支持,大学用户被迫自行维护和改进系统,这促进了用户群体的形成和 Usenix 等用户组织的出现,分享经验和代码。 大学授权(尤其是加州大学伯克利分校的 BSD 版本)和用户社区的活跃 contributed 到 Unix 的传播和发展。然而,AT&T 后期试图将 Unix 商业化,成立了 USL (Unix System Laboratories) 并发布了 SVR4 等版本。商业化过程带来了商标问题(UNIX™)和“Unix Wars”等争议,不同版本的 Unix 在市场上竞争。 尽管商业化过程中存在波折,Unix 的核心思想和技术(如文件系统、shell、管道、工具集等)影响深远。最终,独立开发的类 Unix 系统(如 Minix 和 Linux)的出现,摆脱了商业限制,并在开源社区的推动下获得了巨大的成功,成为现代计算基础设施的重要组成部分。 7. Unix 的主要技术遗产有哪些? Unix 的技术遗产是巨大的,它引入了许多至今仍然影响着计算机科学和软件工程的概念和实践: * 文件系统:简单的层次结构、将设备视为文件以及灵活的权限控制。 * Shell 和命令行工具:强大的命令行接口、I/O 重定向和管道,以及大量功能单一但可以组合使用的工具(如 grep, sed, awk 等),体现了“小工具,大用途”的理念。 * C 语言:一种强大的、适合系统级编程的通用语言,成为后续许多语言的基础。 * 开发工具:Yacc, Lex, Make 等自动化工具,简化了程序开发和构建过程。 * 模式-动作范式:在 grep, sed, awk, Make, Yacc, Lex 等工具中广泛应用,提供了一种强大的数据处理和程序生成方式。 * 可移植性:随着时间的推移,Unix 逐渐实现了跨硬件平台的 portability,打破了硬件锁定。 这些技术遗产不仅体现在 Unix 的各种后代系统(如 Linux, macOS, BSD 等)中,也 deeply 影响了其他操作系统的设计和软件开发的实践。 8. Unix 的成功是否可能被复制,未来技术发展的趋势是什么? 关于 Unix 的成功是否可以复制,这是一个复杂的问题。书中提到,伟大的想法通常来自个人。Ken Thompson 和 Dennis Ritchie 等少数核心开发者的贡献是 Unix 早期成功的关键。他们的技术洞察力和创造力, coupled with 贝尔实验室宽松的研究环境,促成了 Unix 的诞生和早期发展。 然而,复制这种成功是困难的。当今的软件开发环境更加复杂,竞争激烈。但书的作者仍然对未来持乐观态度,认为伟大的想法仍将来自个人。关于未来的技术发展趋势,虽然书中没有给出明确预测,但可以 inferred 的是,对简单、强大工具的需求仍然存在,模式-动作范式和领域特定语言(little languages)等思想可能在新的应用领域继续发挥作用。同时,开源社区在推动软件发展方面的重要性也日益凸显,这与 Unix 早期在大学和用户群体中的传播模式有相似之处。 Unix 开发主要事件时间线 * 1956年: 贝尔实验室的科学家因发明晶体管获得诺贝尔物理学奖。 * 1960年代-1980年代: 贝尔实验室约有3000人。 * 1966年夏天: 作者作为实习生在MIT接触到Jerry Saltzer的Runoff程序,这是一个简单的文本格式化程序。 * 1967年左右: 作者在普林斯顿大学读研期间,第一次见到Stu Feldman,当时Stu是普林斯顿的本科生,同时兼职为贝尔实验室的Multics项目工作。 * 1968年夏天: Richard Hamming获得ACM图灵奖。 * 1969年: Unix起源于一个为了测试磁盘吞吐量的文件系统实现。Ken Thompson意识到它接近一个分时系统,缺少exec调用、shell、编辑器和汇编器。他决定在妻子Bonnie去圣地亚哥探亲期间,用三周时间编写这三个程序。 * 1969年: Multics项目未能实现其目标,贝尔实验室撤回参与。 * 1969年: Peter Neumann在一次午餐时建议Ken Thompson应该把他的单用户系统变成多用户系统,并随口提到了“阉割的Multics”(castrated Multics)的概念,即UNICS。 * 1969年: Daniel Bobrow编写了Tenex操作系统,用于PDP-10。 * 1971年: Unix 第一版发布。 * 1971年: 为了满足专利申请的需求,贝尔实验室批准购买了一台PDP-11。Ken Thompson和Dennis Ritchie迅速将PDP-7上的Unix移植到PDP-11上。 * 1971年: Joe Ossanna编写了Nroff(“new roff”)程序,用于格式化专利申请。 * 1973年: AT&T开始以象征性的费用向大学授权Unix。 * 1973年: Steve Johnson在Al Aho的语言理论帮助下,创建了名为YACC(“yet another compiler-compiler”,后来的Yacc)的编译器生成器。 * 1973年: Grep命令出现。其名称来自“g/re/p”,意为在全球(globally)搜索正则表达式(regular expression)并打印(print)。 * 1974年: Ken Thompson编写了B语言,作为BCPL语言的精简版本,以适应PDP-7的内存限制。 * 1975年: Unix 第六版发布。大多数大学许可证都是针对第六版的。 * 1975年: Michael Lesk创建了名为Lex的词法分析器生成器,与Yacc并行。 * 1976年: Stu Feldman创建了Make程序,用于管理多文件程序的编译依赖关系。 * 1976年: Steve Bourne编写了Bourne shell,整合了PWB shell的功能并进行了增强,使其成为一个功能齐全的可编程脚本语言。 * 1976-1979年: Unix 第七版发布。 * 1979年: Dennis Ritchie因setuid机制获得专利。 * 1980年: Brian Kernighan和Dennis Ritchie出版了《The C Programming Language》一书。 * 1983年: C语言的一个增强版本,由Bjarne Stroustrup开发,获得了C++的名称。 * 1984年: Dennis Ritchie发表了论文《The Evolution of the Unix Time-sharing System》。 * 1986年: Bob Morris从贝尔实验室退休,成为国家安全局(NSA)的首席科学家。 * 1987年: 在阿姆斯特丹自由大学,Andy Tanenbaum创建了Minix,一个与Unix系统调用兼容但完全从头编写的Unix类系统。 * 1989年: Mike Mahoney对Unix进行了口述历史访谈,采访了包括Al Aho在内的人。 * 1991年8月: Linus Torvalds宣布开发一个免费的Unix类操作系统Linux。 * 1992年12月: Ken Thompson和Fred Grampp去莫斯科驾驶MiG-29。 * 1993年: Dennis Ritchie发表了论文《The Development of the C Language》。 * 1998年: Robert T. Morris(Bob Morris的儿子)无意中释放了Morris蠕虫。 * 1999年: Ken Thompson和Dennis Ritchie获得美国国家技术奖章。 * 2000年年底: Ken Thompson和作者从贝尔实验室退休。作者去了普林斯顿,Ken加入了一家由贝尔实验室同事创办的初创公司Entrisphere。 * 2000年: Lucent将其企业通信服务业务分拆成Avaya公司。 * 2001年: Eric Schmidt成为Google的CEO(任期至2011年)。 * 2002年: Lucent将其集成电路业务分拆成Agere公司。 * 2006年: Ken Thompson加入Google,与Rob Pike和Robert Griesemer一起开发了Go语言。 * 2007年: Dennis Ritchie正式从贝尔实验室退休,但直到去世前几乎每天都来实验室。 * 2011年: Ken Thompson和Dennis Ritchie获得日本信息与通信奖。 * 2011年: Dennis Ritchie去世。 * 2011年: Bob Morris去世。 * 2019年: Dennis Ritchie被追授入选美国国家发明家名人堂。 Unix 开发主要人物列表 * Richard Hamming (Dick): 数学科学家,误差纠正码的发明者,数值方法、自动编码系统和误差检测/纠正码领域的先驱。1968年获得ACM图灵奖。对作者的职业生涯有重要影响。 * Ken Thompson: Unix的联合创始人,被认为是Unix的核心人物和最优秀的程序员。开发了B语言,实现了管道机制。曾参与Unix的早期版本开发、PDP-7和PDP-11上的移植。退休后加入Google,参与Go语言的开发。 * Dennis Ritchie (DMR): Unix的联合创始人,C语言的主要开发者。与Ken Thompson共同获得了多项重要奖项。开发了NB语言(后来的C语言)。编写了第一本《The C Programming Language》书的参考手册部分。发明了setuid机制。直到去世前仍在贝尔实验室工作。 * Joe Ossanna: Unix早期开发者之一,是购买第一台PDP-11的计划发起人之一。编写了Nroff程序。创建了Troff文本格式化程序。 * Doug McIlroy: Unix早期开发者之一,提出了Unix哲学中的管道概念。开发了许多重要的Unix命令和工具,如malloc、sort、diff、grep等。对语言设计有深刻见解,并为许多项目的文档提供了重要反馈。 * Steve Bourne: 在1976年编写了Bourne shell,这是一个重要的Unix shell,集成了PWB shell的功能并进行了增强。 * Steve Johnson: 在Al Aho的帮助下,于1973年创建了Yacc(yet another compiler-compiler)。 * Al Aho: 语言理论专家,为Yacc的开发提供了帮助。在Unix口述历史访谈中被提到。 * Jeff Ullman: 启发了Steve Johnson将编译器生成器命名为YACC。 * Michael Lesk: 于1975年创建了Lex,一个与Yacc并行的词法分析器生成器。 * Stu Feldman: 于1976年创建了Make程序,用于管理程序的编译依赖关系。 * Jerry Saltzer: MIT的科学家,开发了Runoff程序,作者的文本格式化程序的早期灵感来源。 * Lorinda Cherry: 与作者合作开发了数学排版语言Eqn。 * Jon Bentley: 与作者合作开发了图形处理程序Grap。 * Bjarne Stroustrup: C++语言的开发者,曾是作者部门的成员,经常与作者和Doug McIlroy讨论语言设计。 * Dave Gay: 在作者之后继续开发AMPL实现,并为Netlib数学软件库做出了贡献。 * Eric Grosse: 开发了半导体建模和模拟、电路分析和可视化算法。为Netlib数学软件库做出了贡献。曾是Google的CEO。 * Bill Coughran: 开发了半导体建模和模拟、电路分析和可视化算法。为Netlib数学软件库做出了贡献。 * Linda Kaufman: 为Netlib数学软件库做出了贡献。 * Fred Grampp: 在Unix安全方面有贡献。曾将一台Enigma密码机带到贝尔实验室,后来留给了Ken Thompson。曾与Ken Thompson一起驾驶MiG-29。 * Bob Morris: Unix安全方面的贡献者,编写了原始的Unix crypt命令。退休后成为NSA的首席科学家。 * Robert T. Morris: Bob Morris的儿子,Morris蠕虫的作者。 * Rob Pike: Unix开发者之一,参与开发了Blit和DMD-5620终端的操作系统,并获得了多窗口专利。开发了Sam等文本编辑器。后来在Google与Ken Thompson和Robert Griesemer一起开发了Go语言。 * Bill Joy: 加州大学伯克利分校的学生,对BSD(Berkeley Software Distribution)做出了重要贡献,包括系统、网络和工具(以及vi编辑器)。后来辍学共同创办了Sun Microsystems。 * Andy Tanenbaum: 在阿姆斯特丹自由大学创建了Minix,一个Unix类系统。 * Linus Torvalds: Linux操作系统的主要开发者和协调者,Git版本控制系统的创建者。 * Robert Griesemer: 在Google与Ken Thompson和Rob Pike一起开发了Go语言。 * Rick Mascitti: 提出了C++这个名字。 * Chris Van Wyk: 与作者合作编写了实现页面垂直对齐的程序。 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
5天前

018. Emacs Lisp 三十年“活语言”的实用主义、分裂与现代化之路

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期内容是对论文 Evolution of Emacs Lisp (中文翻译)的解读和讨论,论文作者包括 Emacs Lisp 的主要贡献者和维护者,Stefan Monnier、Michael Sperber。论文回顾了 Emacs Lisp 的历史演变、设计原则、实现细节以及未来发展方向。 Emacs Lisp 是 Emacs 编辑器的内置编程语言,诞生于 1985 年,由 Richard Stallman 基于 Maclisp 设计。它是一种动态、弱类型、基于列表的解释型语言,具有强大的宏系统和灵活的扩展能力。Emacs Lisp 的设计目标是为 Emacs 提供高度可定制和可扩展的功能,使用户能够根据自己的需求修改和扩展编辑器的行为。 重要时间节点与功能引入 1992年 (Emacs 19早期) 引入文本属性 (Text Properties)。 1992年 (Emacs 19) advice.el 包引入,提供类似面向切面编程的功能。 1994年 (Emacs Lisp 核心) 引入 Quasiquotation (backquote, unquote, unquote-splicing) 的读取器语法。 1995年 (Emacs 19.29) 改进 Lisp 对象标记方案,增加最大文件和堆大小限制;引入终端本地变量。 1998年 (Emacs 20) 引入 frame-local 变量。 2009年 (Emacs 23.1) 内部采用 Unicode。 2012年 (Emacs 24.1) 引入词法作用域 (Lexical scoping)。 2013年 (Emacs 24.3) 引入 cl-lib(Common Lisp 兼容库)。向量块分配改进性能。采样式 profiler 引入。 2014年 (Emacs 24.4) 引入新的建议机制 nadvice.el。 2016年 (Emacs 25.1) 引入外部函数接口 (FFI) 支持加载 GPL 兼容库。引入 define-inline 宏。 2018年 (Emacs 26.1) defstruct 使用新的 record 数据类型。 核心语言特性与实现 动态作用域 (Dynamic Scoping) 这是 Emacs Lisp 从 MacLisp 继承的关键特性。变量查找在运行时基于调用栈进行。斯托尔曼选择动态作用域是为了满足 Emacs 的可扩展性需求,特别是方便临时修改配置变量(如 default-directory)。尽管 Common Lisp 和 Scheme 已转向词法作用域,Elisp 长期坚持动态作用域。 Lexical Scoping (词法作用域) 尽管动态作用域是传统,词法作用域的引入是 Elisp 近年来最重要的变化之一 (Emacs 24.1, 2012)。早期通过 lexical-let 宏实现,但效率和调试不便。词法作用域解决了变量名冲突和闭包创建的问题。然而,由于现有代码对动态作用域的依赖,转换过程并非简单,最终通过选择性地启用词法作用域来解决。 Lisp-2 Emacs Lisp 像 MacLisp 一样,是一个 Lisp-2 语言,函数和普通值的命名空间是分开的。调用绑定到变量的函数需要使用 funcall。 符号 (Symbols) 与属性列表 (Property Lists) 符号是 Emacs Lisp 中表示标识符的数据类型,也常用于表示枚举值。符号还携带一个属性列表,用于存储键值对。 数据结构 Cons Cells 与 Lists 作为 Lisp 的基础,用于构建单链表,nil 表示列表末尾。 Structures MacLisp 的 defstruct 概念通过 cl.el 包引入,并在 Emacs 26.1 中通过新的 record 数据类型提供更好的支持。 钩子 (Hooks) 与建议 (Advice) 钩子是 Elisp 可扩展性的重要机制,允许用户在预定义的点执行额外代码。advice.el (Emacs 19) 和后来的 nadvice.el (Emacs 24.4) 提供了更强大的机制,允许在函数执行之前、之后或围绕其执行代码,即使函数没有预设钩子。尽管斯托尔曼认为 Advice 会使调试复杂,但它非常流行并广泛使用。 实现细节与性能 字节码解释器 (Byte-Code Interpreter) Elisp 代码通常被编译成字节码执行以提高速度。斯托尔曼早期就实现了字节码编译器,“为了速度”。尽管尝试过令牌线程等优化,但字节码解释器的整体性能提升有限。 尾递归优化 (Tail-Call Optimization - TCO) Elisp 的实现长期缺乏尾递归优化,主要原因在于与动态作用域不兼容。即使在引入词法作用域后,由于现有代码习惯使用迭代,TCO 的实际效益有限,且在解释执行时可能导致问题。 数据表示与垃圾回收 (Data Representation and GC) Elisp 使用标记方案 (tagging scheme) 来表示不同类型的数据,早期限制了堆和文件大小。随着版本演进,标记方案不断调整以支持更大的内存和文件。垃圾回收 (GC) 早期采用简单的标记-清除算法,主要问题是暂停时间。Emacs 21.1 引入了保守栈扫描 (conservative stack scan) 来改进 GC。XEmacs 保持精确 GC 并进行了多项改进,包括 ephemerons。 内存分配 为了提高性能,Emacs 24.3 改变了某些对象的分配方式,从直接调用 malloc 改为从“向量块” (vector blocs) 分配,以减少保守栈扫描相关的开销。 JIT 编译 多次尝试为 Elisp 添加 JIT (Just-In-Time) 编译器以提高执行速度,但进展缓慢,主要面临平台支持和优化效果等挑战。 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
5天前

015. 漫谈 Vim,对 Bram Moolenaar 的致敬

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 Vim 作者 Bram Moolenaar 不幸在 2023-08-03 去世,本期节目是对 Bram 的致敬,Long Live Vim! 嘉宾 * Elon:GitHub、Blog Elon * 领蜂(Joyer):GitHub Joyer 时间线 * 00:00:15 开场,嘉宾介绍 * 00:03:00 Vim 的历史由来 * 00:09:29 编辑器之战,按键方式、启动速度、扩展语言 * 00:28:05 Vimscript vs Emacs Lisp * 00:38:52 NeoVim 诞生的原因 * 00:54:56 资助乌干达贫困儿童的由来 * 01:04:10 Bram 对年轻程序员的建议 * 01:09:03 对未来编辑器的畅想 Vim 诞生历史 * 1969 年,Ken Thompson 为 Unix 开发 ed Unix 之父:Ken Thompson & Dennis Ritchie * 1975 年,George Coulouris 改进了 ed,得益于显示技术的进步,增加 inline edit,他命名为 em,editor for mortals(凡人的编辑器)。 * 1976 年,Bill Joy 在 em 的基础上继续尽快扩展,增加了两个 mode: * Open mode,像 em 一样按行就地修改, * Visual mode,可以全屏编辑文件(和我们现在的方式类似) Joy 称之为 ex(extended ed),并在 1978 年在 BSD 的首次版本中内置,在次年的 BSD 第二版中改名为 vi,表示默认以 visual 方式打开 ex。在 Vi 中,首次引入 : 作为命令的前缀,比如 :wq 表示保存并退出。 Joy 开发 Vi 时的键盘:Lear Siegler ADM-3A * 由于 Vi 衍生于 ed,版权在 AT&T 那里,不方便修改,因此社区开始出现各种开源版本的 Vi,1988 年 Bram 创建了 Vi Imitation,但是没有开源出来,1991-11-02 首次对外发布, 1993 年发布的 2.0 版本,包括多级撤销和针对编译器错误的快速修复模式(multi-level undo and a “quickfix” mode for compiler errors),正式改名为 Vi IMproved 链接 * How to get started with the ed text editor * Where Vim Came From * Bill Joy's greatest gift to man – the vi editor * A Look at Vim, a Text Editor for the Ages * 编辑器之战 * 对 Bram 去世的悼念文章 * Message from the family of Bram Moolenaar * Bram Moolenaar has died | Hacker News * Vim Boss * 即将发布的 9.1 将会专门纪念 Bram,就像 9.0 专门纪念 Sven Guckes * The Legacy of Bram Moolenaar * Vim creator Bram Moolenaar dies aged 62 • The Register * Bram Moolenaar, Author of the Open Source Vim Code Editor, Has Died * 重复性劳损 Repetitive Strain Injury * [PATCH] Asynchronous functions (settimeout, setinterval, and cancelinterval) * Why Neovim? with TJ DeVries, Neovim core maintainer (Changelog Interviews #457) * Why we 💚 Vim (Changelog Interviews #450) |> Changelog * 如无必要,勿增实体,即“简单有效原理” * Bram 在 2022 的采访:Bram Moolenaar: "Vim is a very important part of my life." 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

84分钟
99+
2年前

014. 生物信息学博士后 Songpeng 的打怪升级之旅

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 好久不见,由于主播最近半年琐事较多,因此更新有所停滞,不过好饭不怕晚、良缘不怕迟,本期迎来了另一位重磅嘉宾:生物信息学博士后 Songpeng Zu,目前居住在美国,使用 Emacs 大概七年左右。 嘉宾使用 Emacs 的方式是典型的实用主义,把 Emacs 打造成了提升工作效率的利器,主播也希望 Emacs 用户不要过早走上 All in Emacs 的“极端”道路。 在高考阴差阳错进入生物专业后,为了便于找工作,研究生阶段转到了更切近实践的生物信息学,但学术之旅 并不是一帆风顺,经历了在学术圈与工业界的反复踌躇,相信嘉宾的这段经历对很多正在面临类似选择的朋友会有所启发,也祝 Songpeng 在学术之路上走出自己的风采,过程与结果一样重要。 温馨提示:本期节目时间近 2 小时,听众可以按时间线选择收听 本期人物 * 主播:西瓜 | Twitter * 嘉宾:Songpeng Zu(beyondpie)| 博客 | Emacs 配置 时间线 🎧 * 00:00:48 自我介绍 * 00:02:00 接触 Emacs 动机 * 00:04:00 生物信息学介绍 * 00:11:46 入门 Emacs 过程 * 00:22:17 Emacs Lisp 学习经历 * 00:28:02 日常工作流介绍 * 01:03:46 职业经历介绍 * 01:17:04 新年职业规划 * 01:31:47 好物分享 Show Notes 📖 * 一年成为Emacs高手 (像神一样使用编辑器) * purcell/emacs.d: An Emacs configuration bundle with batteries included * noctuid/general.el: More convenient key definitions in emacs * cofi/evil-leader: <leader> key for evil * emacs-evil/evil-collection: A set of keybindings for evil-mode * 如何处理 evil 快捷键与第三方包的冲突 * noctuid/evil-guide: Draft of a guide for using emacs with evil * meow-edit/meow: Yet another modal editing on Emacs / 猫态编辑 * AlphaFold Protein Structure Database * Emacs 内置的 Vi 仿真包:vip-mode * Emacs 邮件客户端:Gnus Newsreader * Helm | Emacs incremental completion and selection narrowing framework * joaotavora/eglot: A client for Language Server Protocol servers * Overleaf, Online LaTeX Editor * Emacs 首次发布时间是 1976,截至到 2023 年,已经有 47 年历史 * 寻找 GitHub 的替代品 - Keep Coding * github/dev: Press the . key on any repo * Peer pressure - Wikipedia * 浪潮之巅(第四版)(上下册),豆瓣评分:9.1 * 好物分享 * Modern Operating Systems, 豆瓣评分:9.1 * macos - Why can I use Emacs shortcuts in many OS X programs? - Ask Different 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
2年前

013. 遥泥的澳洲生活与 Emacs 经验分享

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期嘉宾是一位半路出家的码农,目前居住在澳大利亚,职位是数据工程师,使用 Emacs 大概三年。 本期节目主要分为两大部分,第一部分是嘉宾的 Emacs 接触过程,会聊到初学者学习 Emacs 的常见问题,二八定律;第二部分会介绍澳大利亚的衣食住行,是开阔眼界的好机会。 温馨提示:本期节目部分内容声音过小,请听众包涵。 本期人物 * 主播:西瓜 | Twitter * 嘉宾:遥泥(Yaoni)| 博客、LinkedIn | 本科经济专业;研究生半年翻译,后转到计算机 时间线 🎧 * 00:00:53 自我介绍 * 00:03:30 接触 Emacs 的过程 * 00:12:15 Emacs 对嘉宾的吸引点 * 00:24:55 EmacsLisp 学习经历 * 00:33:10 使用 org 进行文学编程 * 00:36:26 选择澳大利亚的原因 * 00:46:04 澳大利亚生活分享 * 01:12:44 好物分享 Show Notes 📖 * 嘉宾 Emacs 配置 * Sacha Chua * ∑ Xah Code * Org-roam * CloverDX | Solve demanding, real-world data challenges * Literate Programming with Org-mode * 澳洲读研年费用(2017年) * 翻译:20w * 计算机:30w * 四大 (会计师事务所) - 维基百科 * 分享 * 哈佛大学公开课:幸福课-网易公开课 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
3年前

012. 前 Deepin CTO 王勇的 Emacs 传奇经历

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期嘉宾可能是国内 Emacs 社区最资深的用户:王勇(常用 ID: manateelazycat,懒猫)。使用 Emacs 有 15 年之久,创造了 400 多个插件(独立插件包 30 多个),光是这两个数字就足以证明其硬核程度。让听众想不到的是,嘉宾接触 Emacs 的动机竟然是“戒游戏瘾”,且在接触 Emacs 一年左右就达到融会贯通的状态,经过多年深耕,最终达到与 Emacs 心流(身心)合一的境界。对于嘉宾来说,Emacs 已不再只是生产力工具,更像一个老友,默默陪伴在嘉宾身边。近两个小时的内容,精彩不容错过。 本期人物 * 主播:西瓜 | Twitter * 嘉宾:王勇 | GitHub | Emacs China 账户 时间线 * 00:00:54 嘉宾自我介绍 * 00:02:49 Emacs 初印象 * 00:16:36 什么样的人适合 Emacs * 00:26:00 谈自由软件 * 00:31:03 写的 400 个插件中,印象最深的 * 00:31:03 开源项目维护的心得体会 * 00:44:40 使用 Emacs 十五年心得体会 * 00:54:46 EmacsOS?EAF 的诞生 * 01:37:20 嘉宾近况 * 01:41:47 推荐 Show Notes * 经历总结:我人生的前28年 * 对 Emacs 新手的建议:读 ELisp 手册 * 对嘉宾影响比较大的插件 * 项目重构: color-moccur.el,嘉宾后来写了 color-rg,解决了它大目录搜索慢的问题 * 括号补全:paredit,嘉宾后来基于 tree-sitter 写了 grammatical-edit。前者基于正则匹配,后者基于语法分析 * 纯文本浏览器:emacs-w3m,与 EWW 类似 * Cairo - The relationship between libraries: Clutter, Cogl, Clutter, GTK+, etc * 嘉宾使用 Haskell 重新造的一个 Emacs:Manatee * 推荐: * 罗大伦博士:每天聊点《道德经》 * 推荐大家多学不同的编程语言,每学一种编程语言就会增加一种看世界的不同角度,学得编程语言多了,自身能力会更强,心态也会更加包容 * 喜欢的三个人,这三个人的经历一直激励着我 * Richard Stallman:世界上现存的顶尖黑客,虽然很多时候都很极端,但是RMS老人家在计算机哲学上有很多深入的思考 * John Carmark(约翰·卡马克):美国的电玩游戏程序员、id Software的创始人之一。主要作品:Quake(雷神之锤)、Doom(毁灭战士)。最敬佩他的学习能力和动手能力,有啥困难直接去解决,不给自己设限制 * 王守仁(字号:字伯安,号阳明子):人生最低落的时候看他的书明白了,至善至真,只要内心活洒脱了活明白了,人生的很多事情自然就顺了 * 与懒猫一起工作:欢迎加入我们,我们继续折腾 Linux 懒猫生活照 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
1k+
3年前

011. 与架构师 redraiment 闲聊 Emacs

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期嘉宾是使用十二年的 Emacs 资深用户张泽鹏(网络ID:redraiment)。得益于 Emacs 其无与伦比的“开放性”,嘉宾使用它打造出符合自己理念的高效开发环境。Emacs 对于嘉宾来说,即使生产力工具,也是“玩具”,在“玩”的过程中,来学习新技能。使用 Emacs 多年后,万物可编辑的思维给嘉宾的日常工作带来很多启发,总结出一篇与系统设计的文章:编辑器思维与系统设计思想,这其中的精华都会在节目中聊到,近一个小时的节目,精彩不容错过。 时间线 * 00:00:42 嘉宾自我介绍 * 00:04:18 为什么选择 Emacs * 00:11:11 ELisp 学习经历 * 00:21:34 Emacs 对嘉宾思维的影响 * 00:33:56 使用 ELisp 开发微信小程序的经历 * 00:43:20 函数式编程的优势 * 00:58:06 推荐 Show Notes * 嘉宾介绍 * 姓名:张泽鹏 * 邮件:[email protected] * 工作:外企(道富)⇒ 创业 ⇒ 互金(51) ⇒ 制造(阿里) * 2010 开始用 Emacs * 用 Emacs Lisp 开发的微信小程序:redraiment/wechat.el * Emacs 是二维的命令行工具 * 相关文章:Emacs is the 2D Command-line Interface * Emacs China 上的讨论 * 推荐 * Emacs Keyboard Macros * 《计算机程序的构造和解释》(SICP) 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
3年前

009. 与 tumashu 聊 Emacs 中文输入法

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期节目请来了一位非科班的 Emacs 资深用户冯书(aka tumashu),Emacs 中文输入法 pyim 的作者。作为一位卫健委信息中心的办事人员,他是如何接触到 Emacs 的?又是什么原因让他接手、维护 pyim?pyim 的工作原理是怎么样的,与 emacs-rime 有什么区别? 接触 Emacs 十余年后,嘉宾总结出一套五个阶段 Emacs 学习境界,每个境界需要的技能是什么?如何去突破?相信通过嘉宾的经历,可以给更多非科班听众打开 Emacs 源码的神秘面纱,近一个半小时的分享,精彩不容错过。 时间线 * 00:00:39 嘉宾自我介绍 * 00:01:12 Emacs 初印象 * 00:06:32 Emacs 为什么能吸取各行各业的人进来 * 00:12:04 ELisp 学习经历 * 00:15:13 pyim 接手、维护经历 * 00:43:19 使用前缀树来做输入法的词库搜索 * 00:46:24 pyim 与 emacs-rime 实现方式的区别 * 01:03:42 是否会向周边人推销 emacs * 01:07:46 是否考虑过转成全职程序员 * 01:09:47 Emacs 学习的五种境界 * 01:17:02 八卦 * 01:18:19 分享 Show Notes * 嘉宾自我介绍 * 网络 ID: tumashu * 03 年大学,专业化工;07 年研究生,专业管理 * 目前 Emacs 的配置:emacs-helper * GNU Emacs 自 23.1 版本开始支持 XFT * 使用 Emacs 内置输入法优势 1. 输入中文与敲 Emacs 命令自动切换 2. 直接使用拼音搜中文内容 * 拼音搜中文实现方案主要有两个 1. 把输入的拼音正则,利用 pyim 转化为对于的汉字正则,然后直接去搜 2. 把搜索的目标中的汉字转为拼音,然后再用输入的正则去匹配 * Child Frames * 弹出框三种方式 1. posframe 2. popup 3. PosTip * Emacs 学习的五种境界 1. 初学攒配置 2. 入门写扩展 3. 一入 emacs 源码深似海 4. 你不入 C 狱谁入 C 狱 5. 千万里挑一 emacs 的武学奇才 * 嘉宾的分享 * modus-themes * 主播的分享 * elfeed * 片尾音乐 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
4年前

008. Emacs 之光的成长历程

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期节目请来了一位特殊嘉宾–付禹安,社区内一般称他为『Emacs 之光』。之所以这么称呼,是因为今年才刚刚大学毕业的他,就已经给 Emacs 贡献了多次代码。👍 与大多数用户不同,嘉宾在接触 Emacs 不久即开始尝试攒写自己的配置,并陆陆续续发布了几个比较实用的包,比如 valign,嘉宾是如何做到的?更令人好奇的是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾的学习、贡献经历,可以给听众打开 Emacs 源码的神秘面纱,让更多用户参与到 Emacs 的贡献中,一个多小时的分享,精彩不容错过。 时间线 * 00:00:56 嘉宾自我介绍 * 00:02:20 Emacs 初相识 * 00:10:08 ELisp 学习经历 * 00:15:45 Emacs 的可发现性 Discoverability * 00:23:58 源码贡献经历 * 00:27:32 源码贡献流程介绍 * 00:38:15 如何读懂 Emacs 源码 * 00:57:59 嘉宾的第一个 Emacs patch * 01:02:34 分享环节 Show Notes * 嘉宾自我介绍 * 网络 ID: casouri * 17 年大一开始接触 Emacs ,到现在差不多四年 * 个人博客 * 配置 lunarymacs * 对 Emacs 仓库的提交记录 * 28 版本新增的 shortdoc,解决手册冗长,提供简洁的示例代码 * 正则表达式两处文档: * 只介绍如何写正则的 34.3 Regular Expressions * 15.5 Regular Expression Search 这一小结介绍正则相关函数 * 嘉宾对 Emacs 的主要 patch: * Improve word wrapping for CJK characters * Add filter to GDB's register buffer * Emacs 代码规范 * 注释都是完整句子,最后有个句号,句号后两个空格 * 注释用的是 C 风格的 /* */ ,而不是 C++ 的 // * 函数名后面跟一个空格,再是括号 * 读 Emacs 源码技巧 * lisp.h 里面有 C 如何调用 ELisp 的示例 * 去 devel 邮件列表咨询,还可以练习英文表达能力 * ccls + grep + ctags * 通过搜索相关功能来探究其个函数的用法 * 嘉宾的分享 * aggressive-indent-mode * Practical Typography * 主播的分享 * 关注牙齿健康,最好每年去看一次牙医 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
4年前

007. 编辑器专家的 Emacs 世界

EmacsTalk

欢迎听众打赏支持,您的支持是我不断创作的动力🍻 本期节目请来了一位使用 Emacs 15 年之久的编辑器专家领蜂,在高中竞赛时获奖后,父母送给他一台个人电脑,这打开了他的 Emacs 之旅。 由于其工作领域正好与编辑器相关,领蜂走上了一条专家型的 Emacs 学习路线,接触 Emacs 三天即开始上手 ELisp,他是怎么做的到?更令人想不到的是嘉宾的配置仅仅 200 来行,可谓精简至极,典型的“手动挡”车用户,这背后有什么样的理念? 另一方面,嘉宾十分关心开源社区的“八卦”,对早期 Emacs Hacker 的事迹信手拈来,嘉宾在节目里分享的先驱者的言论,至今来看,仍然十分超前,这些言论对我们的启发是什么? 近一个半小时的内容,不容错过。 时间线 * 00:00:54 嘉宾自我介绍 * 00:03:16 Emacs 初印象 * 00:12:15 开源社区内前辈们对嘉宾的影响 * 00:20:23 谈 UE/Vim/NeoVim * 00:30:05 浏览器内核发展之路与浏览器之战 * 00:38:30 在 Emacs 社区的活动 * 00:44:44 ELisp 解释器为什么选用动态作用域 * 00:52:28 学习 ELisp 的经历 * 01:00:12 Emacs 两种学习方式:专家模式与务实模式 * 01:08:57 极简风格的配置 * 01:16:36 推荐 Show Notes * 嘉宾自我介绍 * 姓名:领蜂 * 网络 ID: Joyer, DelphiNew/uppet * 社交信息: CSDN, GitHub * 工作经历:06 年开始工作;竞赛型程序员,IDE 开发,浏览器引擎开发,开发者工具开发 * 目前的配置 * Emacs 初印象 * Mandriva Linux * The Craft of Text Editing * effective-emacs ,嘉宾的中文翻译 * Open Sources: Voices from the Open Source Revolution by Michael Tiemann, Cygnus 作者 * JWZ * An Introduction to the Emacs Editor * UE 为什么会逐渐消失 * 10 Questions with Vim’s creator, Bram Moolenaar 第八个问题 * 提问:如何确保 Vim 在可遇见的将来继续成功? * 回答:Keep me alive * Netscape 创始人 Marc Andreessen 金句:Netscape would reduce Windows to a “poorly debugged set of device drivers” * 其他金句:Software is eating the world * Emacs 28 引入的 JIT * 2018 年,嘉宾对 Effective Emacs 的回顾文章:到了2018年,还有学习Emacs的必要吗? * 如何防止小指痛:上机械键盘,用手掌边沿去按 Ctrl 比用小指按更容易更舒服 * 嘉宾推荐 * NIZ宁芝 普拉姆 X87 X108 静电容蓝牙键盘 * Coq * Dart + Flutter * 主播推荐 * EmacsTalk 听友群 * QQ 听友群:530146104 * TG 听友群:https://t.me/emacstalk * elisp-demos 收听方式 * 国内:小宇宙、微信公众号、RSS * 国外:Spotify for Podcasters、Apple Podcasts、RSS 反馈 ✉️ * 对节目有想法或发现内容错误?欢迎来信交流:[email protected]

0分钟
99+
4年前
EarsOnMe

加入我们的 Discord

与播客爱好者一起交流

立即加入

扫描微信二维码

添加微信好友,获取更多播客资讯

微信二维码

播放列表

自动播放下一个

播放列表还是空的

去找些喜欢的节目添加进来吧