老车赞数组
___2021年10月21日很幸运,还记得1987年刚开始学编程时,买了一本32开本的编程书,如果没记错的话那本书的作者是谭皓强,书中写了这样一句话:“充分应用数组,可以节省磁盘,提高运行速度,简化与优化程序”。从那时起本人便与数组结下了不解之缘,三十多年来对数组的热爱有增无减。这句话让中车受益匪浅,让老车受益终生。
很奇怪,不知为何数组这么好的东西却没有得到广泛应用,老车感到很痛心,于是便不停的呼吁。数组是VFP的,老车并没有申请专利,呼吁编程应用数组老车肯定得不到钱的,完全是为了同仁受益,振兴VFP。
很遗憾,老车呼吁应用数组时常遭遇反对,特别是在算法群时。还记得反对应用数组的反复声称数组是淘汰技术,VFP9.0中依然保留数组是为了向前兼容。然而老车在VFP9.0帮助中查到了多处大幅扩充了数组的说明,证明了并非为了向前兼容,而是大力提倡:
在辩论数组应用技术优劣时,老车得到了数组应用高人的支持:
数组淘汰论的声音逐步消失了,可还时常有人拿其与CURSOR表或基本DBF表对比功能,其实这是对数组认知不足所至,是还停留在拿数组只当记录信息载体的层面,还没有把数组提高到做为编程工具层面。数组与表虽然都是数据的载体、并且还可以互相转换,但其功能并没有可比性。数组是如同命令、函数、控件的编程工具,CURSOR表或基本DBF是数据载体。
数组虽然也可以作为数据的载体,但因其受内存容量所限、没有表的索引、筛选、统计等功能,做数据载体用时并不如表。就如同筷子与烧火棍都是叉东西用的,吃饭时用烧火棍叉不好用,烧火时用筷子叉也不好用。
数组绝非是仅仅把单个变量串起来、排成排,更重要的是VFP还赋予了它相当多的功能、能解决许多复杂问题、玩出许多花样。特别是VFP还赋予了数组与表结构、数组与表、数组与记录互换的特异功能,这是VFP数组独一无二、绝无仅有的。
数组的容量大的很,特别是VFP9.0扩充之后,大到如果不是拿数组当表用做数据的载体,只是编程用几乎是用不完的。早年因不知道容量这么大,应用还有些注意节约,唯恐突破指标上限,近年来只要需要,数量上就无所顾及,大有不用白不用之感。记得曾经有一位业界大师得知VFP数组容量这么大、功能这么强,懊悔VFP还有这么大一块资源多年一直在闲置。
数组应用需要一个从量变到质变的过程,遇到相关场景马上能构思出数组要如何构建如何应用,久而久之便形成了一种思维。
老车大力提倡数组应用、是源于三十多年来大力应用数组。老车的程序中遍布着数百数组,数万数组元素。老车认为没充分应用数组,相当于少用了一种编程工具。
下面举一个简单的例子对比一下,希望同仁、特别是初学者能对“充分应用数组,可以节省磁盘、提高运行速度、简化与优化程序”这句话有更高的认识、激发起应用数组的热情:
在AA表第3行第2列写入一个数据,读取一个数据:
SELECT AA &&写入
GO 3
REPLQCE 字段2 WITH 10
SELECT AA &&读取
GO 3
BB=字段2
在AA数组第3行第2列写入一个数据,读取一个数据:
AA(3,2)=10 &&写入
BB= AA(3,2) &&读取
相比之下简化是显而易见了,优化则需要从量变到质变逐步形成思维。运行速度数组应该是表的数十倍、数百倍或更多,因为数组是电流操作,表要移动指针、属机械操作。
老车的数组应用实例之一:
老车的数组应用实例之二:
[此贴子已经被作者于2021-10-21 20:24编辑过]