ed 1.7 终结版
Author: 徐艺波 From: xuyibo.org Date: 2020-12-09 09:31 AM我想该是时候说再见了,ed 以后将不再更新。随便写点东西,想到那写那。将过去开发ed的日子和feeling写一下,留作我老了不能编程的时候,搅拌一下彼时的味道。
ed 这个软件耗费了我太多的时间和心血来升级更新,现在算起来估计得有3周失眠的日子时由于ed的开发功能导致的,这也是我放弃继续升级开发ed的一个原因。还有一个原因是我应该花费更多的时间在公司的项目上,即使明年项目失败了,产品线被cut了,我至少能对得起自己,我只想将我们的产品做好。
ed 到现在开发了1年1个月,无论怎样,这个软件是目前我花费时间最多的一个软件,虽然不像bde那么优秀。但这也没法子比,毕竟设计到界面的软件,复杂度要比纯命令行的开发工具复杂的多。一句话,越上层的东西,80%时间耗费在难度20%的事情上。
ed 开发过程中,借鉴了非常多的商业的、开源的编辑器软件,比如:wscite、scitilla、notepad++、programmer’s notepad、ultraedit、editplus、textpad、notepad2、visual studio 98/2003/2005/2008、notepad、wordpad等等,最为ed的作者,我有点不要脸,说实话,里面的许多基础建筑都不是我写的,比如scitilla完成了底层的editor要做的事情,codeproject上docking和tabbing窗口的文章使得界面开发比我想象的容易的多。还有许多工具条按钮等都是从各个编辑器中扒出来的,我这个猪头脑袋是没有那个细胞设计出这么多复杂图标(大部分来源于VS和PN)。在这想这些有名无名的原作者表示感谢。如果你觉得应该将你的名字列出到感谢名单中,请发邮件给我。
最后回忆一下ed的开发历史。05年的时候就想自己写一个编辑器,使用mdi搭了一个框架,最后才发现这比我想象的要复杂n倍,项目在开始了几个月后cut了。后来,看到notepad++,感觉不错,打算从这个开源软件开始写一个,说干就干,改了几周,我不得不放弃,代码结构实在是太混乱了,而且要加一种新的语言,非常复杂,需要手动再添加源码,而不是我想象的那种实现了一个引擎,来读取外在的语言配置这种方式,而且当时的那个版本也没有文件浏览窗口(现在有了Light Explorer插件可以实现此功能),最最重要的是代码很乱,最终我放弃了这个项目。由于notepad++内在的时scitilla,一顿搜索后,发现了notepad2和programmer’s notepad这两个开源编辑器项目,说实话,这几个编辑器写的都很有特色,各有千秋。notepad2我下载了一个版本,集成到bde中,作为现在ed的一个辅助编辑器,很小巧,也很健壮。对于programmer’s notepad,其作者Simon Steele本身就是scitilla开源项目开发者,最重要的是这个软件实现了我很早想要的那种引擎,在xml里面配置相关信息,这个软件的界面和ed非常像,我在开发的时候就在不断的阅读借鉴这些开源软件的代码。我不知道这种开发方式是否要求我公开ed的源码,要是我每天看nt源码,是不是以后就不能在写任何操作系统内核源码了。但programmer’s notepad的缺点就是太复杂,代码写的虽然比notepad++规范,但这个框架都是C++的宫殿,而对我这个C++蹩脚开发者来说,我猪头一样是很不期望这种结构的,所以我还是放弃了programmer’s notepad的核心结构。06年春节回家,我拷贝了一份wscite的源码,用了这个软件,发现了我一直期望的那种实现,耗费了差不多两周的时间,终于将wscite的解析60种语言的属性文件引擎移植到ed中。这个时候ed已经是我开发bde、txt2chm、extractor、darkhorse,以及公司内部代码的主要开发工具。随着功能不断添加,ed代码和结构都越来越复杂,代码失控,所以我决定革命,这大概到了ed 1.5了,80%的代码都重写了,许多开源代码都被删除了重写,除了核心框架还是C++外,其他都用C实现。也正是由于我这一革命,带来了我无尽的bug,有一个到现在这个终结版本还存在。非常感谢邓语晨的无偿详细的测试。许多时候,能让我挨过失眠的冬天继续开发下去的动力就是他。
周五忙活了一晚上,周六没吃早饭和午饭,开发了一天,下午理个发,吃了顿18元的丰盛的早餐 + 午餐 + 晚餐,吃饭的时候给suofanker发短信吹NB说,现在ed时最好的免费的编辑器。然后游泳去了,因为点痣,五天没有游泳了,今天由于吃饭前,都没力气吃饭了,导致游泳的时候还没有缓过来,游的不是很有感觉,蝶泳第二个50中途挂了,嘿嘿。回来的时候,洗了一下袜子,我实在是不想洗,但我实在是没有袜子穿了,没有办法。床单啥的我就不洗了,让洗衣机给忙活吧。折腾完,时间已经到2007年12月8日星期六8:00。然后然suofanker看看最新版本的ed,结果这家伙三下五除零,整出一个bug,忙活一会修复了,然后感觉ed该退出舞台了,在bde中做了一个free版本的ed,不在依赖我的matrix库,静态连接运行库,大小1074KB,还不错。然后整理了一下配置文件,打了个包,明天去公司发布一下。以后可以全力以赴的开发完善公司的产品了。