#1 面向AI的编辑器怎么设计
发表于 : 2025年 2月 25日 09:03
计算机发展的早期,人机界面是非常底层的,没现在这么人性化。一直到70年代都还有一些机器需要手工输入二进制的boot loader (boot sequence)才能启动。这种机器没有显示器,上面有N个switch,代表N位地址,然后有M个switch代表M位数据(一个word,字长为M)。每次把地址和数据的0/1都设好了,按一个按钮载入。就这么一个word一个word地把启动代码输进去,然后才能启动。
IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。
然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。
Agent还有别的各种做法,这里的讨论基于我采用的AA体系https://arxiv.org/pdf/2502.09903
IBM第一代商用机(真空管)是用卡片编程的。每个卡片是72列,十来行。一个位置打了孔就是1,没打孔就是0。每一列所有的行合起来是一个word,可以用来编码一个数字或者一个字母什么的。一张卡片就是一行程序。一个程序就是一沓卡片。1000行的程序掉在地上散了,那你就花半天时间手工排序,或者可以用排序机排序。这种卡片后来扩展到80列。所以程序编辑器从一开始出现,80列就是个标准配置。Fortran编译器好像只认前72列,73-80自动忽略,可以用来写注释。
然后到了transistor时代,小型机出现了。这时候IBM还是老大,老二是DEC,搞出来pdp风靡全球。当时上一波技术霸主AT&T还很兴旺,有个贝尔实验室,弄出来了unix。PDP时代的标准I/O就是teletype,电传打字机。也就是物理化的命令行。现在程序员还在用的命令行tty其实就是数字化了的电传打字机,还是一次敲一行。在命令行时代是没有屏幕的,那怎么编辑程序呢?Unix上提供了一个面向命令行的编辑器叫ed。这个ed在最新的Linux上还是标准配置,不用安装就有。下面演示ed的用法。注意整个session是以命令行模式完成的,有的是我输入的,有的是ed打印的。语法高亮是为了好看加的,实际是黑白的。

这个ed发展出两个后代。一个是不带交互的sed,用来做搜索替换。另一个就是屏幕出现后发展出来的vi。vi基本上继承了ed的那些命令。所以vi用户想要退回到ed是没什么难度的,只要在脑子里想象一个屏幕就可以。
Agent还有别的各种做法,这里的讨论基于我采用的AA体系https://arxiv.org/pdf/2502.09903