最酷的程序员用KOL
by Superpage
前言
VCL 库是Delphi程序员熟知的,她几乎成了Delphi RAD技术的代言人。
VCL拥有世界上最大最丰富的控件资源涵盖了软件开发的各个方面,远远超过其他开发工具,是每个程序员所垂涎。VCL的优点不再多说,现在我要向各位Delphi兄弟介绍另一套Delphi上的类库:KOL。
KOL是什么?
KOL
- Key Objects Library is a set of objects to develop power 32 bit Windows GUI applications using Delphi. It is distributed free of charge, with source code.(以上这段摘自KOL的主页)
"没有一个字节的代码是废物"
(我写的第2个KOL程序,35K,Aspack压缩后28K,1个Exe不需要任何运行库)
现在的VCL应用程序虽然很优美,但还不够精简(a little oversized),一个空空的GUI程序至少有270K(Delphi5),原因是Borland的编译器技术虽然精湛,具有SmartLink技术(只把用到的代码连接到EXE),但对于很多面向对象编程中采用了大量的的方法继承,虚方法表,使得 SmartLink也无能为力。而且随着 Delphi 升级,基本对象的方法和属性的代码也越来越大。采用分离的运行库编译虽然可以减小EXE,但要求客户端安装VCL运行库是困难的,除非微软让步......(不说也罢)。不过总的说来,虽然基于VCL的程序有冗余代码,但相对其他同类类库,EXE尺寸已经算很不错了,一般在数百K到1、2M左右。
其实我们很早就听说直接用WinAPI可以创建很小的程序(有个著名的TestGUI.DPR),因此有些程序员就打算自己建VCL以外的类库,具有VCL主要的功能,创造精简的
程序。Delphi上的非VCL类库目前我所见到的有3个,分别为 ACL,XCL/KOL 都出自俄罗斯(老毛子高人辈出,而且是历史上很多革命的发源地)。其中最具有革命性的就属KOL库,作者 Vladimir Kladov 在1999年就开始设计 XCL,XCL出到1.86(2000年7月)
特点是重写VCL,删除不必要使用很少的对象属性和方法,其体系与VCL类似,也是
对象继承方式。
到2000年,Vladimir Kladov 发现XCL虽然有效,但不能根本解决问题,或者说有可能重蹈VCL库覆辙,于是他停下了XCL,推出了更大胆的计划KOL。其技术要点是设计了一个巨无霸对象TControl,避免了对象继承,用不同的NewXXXX方法创建对象,使得编译器可以轻松的剔掉冗余代码,另外还有替换System单元等多种手段。听起来很不可思议,是吧?哈哈,但我玩过最新的KOL,发现它的确实厉害,KOL的目标并不是取代VCL,而是帮助我们完成一些功能齐全的,尺寸紧凑的专用EXE(最小的KOL GUI 程序只有9.5k),这在我们将来设计一些通过网上分发或嵌入设备程序会很有用。另外,KOL中重写了的TStrList、TList等大量对象比原来的VCL效率更高。
KOL的程序设计难吗?
(以下部分内容据我今天(2001/5/14)刚从网上更新的0.74KOL,0.73MCK库而来,而KOL最近更新很频繁,请大家关注其网站)
早期的KOL的程序开发是完全"非可视"的,其标准例子可看出。不过用KOL的程序员,绝非等闲之辈,相信 VC++/MFC的哥们也会很容易上手,因为和 WinAPI打交道其实也很亲切,但KOL绝对是一个优越面向对象的类库,建新程序中自己手写的代码已经不算多了。
但Kladov又推出一个可视开发工具 MCK(镜象构件库),非常巧妙的利用了Delphi的IDE
实现了可视开发。当然很多人建议设计VCL工程翻译工具可能更方便,但现在还没人去做,毕竟是个革命性的东西,需要更多人参与。我个人认为MCK还算个很好的思路,至少在新工程开发上不难。但传统的Delphi程序员一定要有思想准备,你的第一个KOL程序花的时间肯定是你第一个VCL程序的数倍甚至更多(第一个VCL程序只要按一下F9就行了,呵呵)将来的KOL会“可视”到什么程度,我的估计应该很乐观。
现在KOL已经有OLEdb 和 DBF 数据库的控件了,由于 VCL的控件大多源码开放,KOL的控件群出现指日可待。
说到可视化工具MCK,我真的很佩服Kladov的匠心独具,Kladov有一句话很有意思:
“KOL/XCL从一开始就没打算设计成可视化开发方式...我反复的告戒自己KOL可视化是不可能的,可是我熬了4个通宵后,事情好象办成了...”
说这么多差不多了,各位赶快去KOL主页上看看吧。
其他
你写的第一个KOL Form 注意上的 defaultPosition defaultSize 属性请设为 False.
希望各位Delphi兄弟有空交流KOL开发经验,我的信箱: [email protected]
本文地址:http://com.8s8s.com/it/it6137.htm