标题:老车赞数组
取消只看楼主
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
结帖率:50%
已结贴  问题点数:10 回复次数:10 
老车赞数组
___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编辑过]

收到的鲜花
搜索更多相关主题的帖子: 数据 数组 编程 应用 VFP 
2021-10-21 20:05
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
以下是引用吹水佬在2021-10-21 21:56:24的发言:

array与table不要孤立看待。
实际应用中array与table的关系是很密切,从array到table,或从table到array是很平常的事。
array的数据关系相对简单,而table是关系数据库的组成部份,是相关联系的数据集。
至于用array或用table来处理数据谁效率高,这与数据之间的联系和规模有关,要视实际情况而论。

完全认同!
2021-10-21 22:11
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
回复 3楼 吹水佬
吹水佬大师好:谢谢您的关注!谢谢您的参与!
本人在写文档管理软件,起名“书斋”,单机版初步写完,这几天试着写几篇稿测试软件。壮着胆子贴到贵论坛,得到大师关注评论甚感惊喜!下面是这篇稿在“书斋”中浏览状态的切图,还望大师在稿件与软件两方面多提宝贵意见。诚挚的感谢!




[此贴子已经被作者于2021-10-22 07:15编辑过]

2021-10-22 06:36
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
回复 6楼 吹水佬
呵呵!东北方言:行家伸伸手,便知有没有。大师就是大师,一下子就打到数组七寸上了。
老车也是觉得两维数组排序只能声明按哪列升序或降序排序,不能应用 与、或、非 是缺陷。看来讨论问题是大有益处的,还就是刚才老车想到,如遇那种场景分两次、再多分N次,是否能取得希望的效果呢?因没遇到过那种场景没实践过,突发奇想。见笑了!
2021-10-22 11:07
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
回复 8楼 吹水佬
感觉与吹水佬大师交流很享受,我们都能坦诚的讲出各方面的利与弊。老车前面就讲过“数组做数据载体用时并不如表”;大师这里也讲了“某种情况下会给人感觉表比数组效率低”。毫不夸张的说,这样坦诚友好的讨问题几年都没遇到过了。

上面的讨论值得注意的一个问题是:单说计算表也可能是在内存中进行,与数组差别不大。但表的数据还是要读写磁盘的,数组就不用了。

前面吹水佬大师精准的打到了数组的七寸,为了活跃一下论坛气氛,老车也打一下表的七寸。哈哈!
CC=AA(3,2)+BB(2,3)
如果AA与BB都是表,就算是都在打开的状态,但都不在当前记录哦,试写最少要几条语句能完成、要写多少代码?试想复杂一些的计算数组该有多么简捷?
2021-10-22 13:27
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
呵呵!不知不觉的讨论又进入了歧途。VFP的最大亮点是DBF表,DBF表是VFP的魂。VFP中的其它命令、函数、控件等,当然也包括数组,哪个能与DBF表相比呢?可但是VFP只玩DBF表行吗?是否还需要有命令、函数、控件等,当然也包括数组的配合呢?老车开盘就说过如果拿数组当表用不如表好用,还说过数组与表没有可比性。说句笑谈,那DBF表与命令函数相比谁更好呢?哈哈!
老车只是觉得数组是个好东西,应用得好能简化与优化程序......,这么好这么大一块东西不充分应用太可惜,呼吁呼吁,仅此而已。谢谢关注本帖、谢谢参与本帖!
2021-10-22 21:35
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
回复 14楼 吹水佬
所以我们广大狐友要加强团结,共同努力振兴VFP!
2021-10-23 10:13
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
以下是引用sam_jiang在2021-10-24 11:20:53的发言:

哈哈,神仙打架,百姓看热闹。


唯恐天下不乱
期待热闹观看
老车偃旗息鼓
退避三舍逃难
2021-10-24 12:13
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
东风吹,战鼓擂。
怼战老车怕过谁?
今遇贵坛吹水佬,
一回弃甲又丢盔。

2021-10-24 12:25
惬意_甬车
Rank: 1
等 级:新手上路
威 望:2
帖 子:29
专家分:4
注 册:2016-5-12
得分:0 
大败弃甲又丢盔,
逃出百里头不回。
举手摸摸头还在,
感谢上帝命没没。
2021-10-24 12:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507249-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.457935 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved