一个偶然的时间,我无意中发现,我(liigo)于2008年10月份发表于CSDN博客上的一篇小文,《谢谢斩月,谢谢monkeycz,谢谢dtcser、超级大BUG》,已经无缘无故的消失了。现在我只能通过百度快照才能证实它曾经存在过:
(快照显示此文发表/最后编辑于2008年10月02日19:09:00,前面的图片似乎被tu.6.cn处理过显示不完整。)
快照中的文章链接地址(http://blog.csdn.net/liigo/archive/2008/10/02/3009840.aspx)已然无法打开,CSDN博客系统提示“在你访问时发生了错误:文章无法获取。”。
其实发现文章消失是数月前的事了,我一直没有处理。前几天再次想起此事,于是在CSDN博客专家群中咨询官方人员,得到的答复是,由于时间过去太久,文章无法还原,建议我自行通过搜索引擎的缓存页面恢复文章内容。可是我遍查各大搜索引擎,似乎只有百度缓存过标题和摘要,没见有搜索引擎缓存该文全文内容。印象中有论坛部分引用过文中的某段文字,一时之间也难以找到。
也许是运气比较好吧,我在自己私人电脑里翻出了当时备份的文字和图片,此文因此得以重见天日,庆幸中。
以下是原文:
谢谢斩月,谢谢monkeycz,谢谢dtcser,谢谢超级大BUG。
斩月计划(http://ZanMoon.monkeycz.com),分离核心支持库,打造小于10k的易程序。
monkeycz,斩月计划的创始人、作者。
dtcser、超级大BUG,斩月类库(ZCL)的主要开发者(之一)。
斩月计划已经有一两年没有更新了,有易友(dtcser,licengxin)在现有版本基础上进行过二进制修改,一并感谢。
“斩月计划”是一个很好的、很有创意和实用价值的项目,它有效解决了易语言程序必须依赖核心库、程序尺寸偏大的问题,满足了一部人对这方面的需求,在一定程度上拓展了易语言的应用范围。
斩月计划大名鼎鼎,我早就听说过了,但一直没有深入了解,主要是个人原因:因为我始终认为,易语言程序依赖易语言核心库天经地义,通过分离核心库来减小EXE/DLL文件尺寸,并以“损失大批唾手可得的实用功能”和“增加程序编写复杂性”为代价,似乎得不偿失。我个人编写易语言的程序,并不介意它的文件尺寸,也不介意多使用几个支持库,我介意的是,能不能更快更好的完成这个程序,——其实这才应该是易语言存在的本质啊,千方百计的要少用一个支持库,千方百计的用API取代支持库,不是在为自己增加负担么?很多易友对支持库有偏见,但是我没有。
但是到了我开发“易写易库(EXEK)”时,我突然发现,在某些特殊情况下,“斩月”真的是非常有用非常实用。以易写易库为例,如果不支持斩月,用它开发出的易语言支持库就不能被易语言3.0使用(用“易写易库(EXEK)”为易语言3.0开发支持库?)。
要让你的易语言程序支持斩月,你只能选择:1、使用Windows系统API;2、使用内嵌汇编(置入代码);3、使用核心库中有限的几个命令;4、使用支持斩月(即满足前三个条件)的易语言模块。即,大部分情况下,你不能使用任何易语言支持库(包括核心库)中的功能,当然有少数例外(如特殊功能支持库中的“置入代码”,另注,该命令已在易4.12中移入核心库)。支持斩月,往往意味着你需要放弃许多现成的实用的功能丰富的支持库,无疑会增加程序的开发难度;有得就有失,选择权在使用者。
其实,斩月计划也是依附于易语言编译器的辅助工具,它无法脱离易语言编译器而独立存在(除非把它自身改造成另一个易语言编译器,而这在短期内是不现实的),它所支持的核心库中的命令,多数都是因为这些命令已经事先被易编译器将实现代码编译进EXE/DLL中了,——当然,不被易编译器支持而被斩月支持的命令也有,如“指针到文本”“指针到字节集”和位操作相关的大部分命令,这是斩月内部特殊处理的结果。
我还是坚持我的观点:在特定情况下,斩月非常有实用价值。
“易写易库(EXEK)”正式支持斩月,这就是我(liigo)以实际行动对“斩月计划”的支持。
另,我在实践中发现超级大BUG的易模块“ZCL_核库函数1.01”(更新日期2007年6月27日,模块内部注明版本为1.1)中没有“文本到数值”功能,因此贴出以下易语言源代码,也算是对斩月的一点支持:
完整易语言源代码文本如下(可直接复制粘贴到易语言IDE):