分享

VFP的优劣势

 Alkaid2015 2012-07-28

VFP的优劣势:

<以下内容有部分为转帖,请原发言者见谅!>

优点与缺点是一回事,能不能流行又是另一回事,vfp9的推出,可见微软件是不会放弃vfp的。
对小型应用,vfp+sql server数据库引擎不错,开发起来也快。

其实各种语言都差不多,学会了一种,再学其它的会很容易。
不过vfp处理数据更方便,
如直接对临时表执行select 查询,还没有其它哪种前台应用语言能对一ado recordset执行select 的

不知道为什么总是有人觉得VFP的伪编译是个很大的问题?你的应用非常高级吗?你的程序价值并不是体现在代码上的。如果说VFP的速度慢的话,可能这世界上没有更快的了,VFP

即使是用ODBC做数据处理仍然不输于VB、Delphi之类的开发工具。如果对DBF的开放式数据不满意,VFP可以完美的支持SQL Server数据库。
不想再多说什么了,只希望在熟悉了一个开发工具的时候能够更深入的了解它,而不是人云亦云.

一个软件无论用vfp,vb,delphi,或power builder,都可实现.

对于管理软件,vfp的最大好处是本身就是数据库操作语言,处理数据统计非常方便,而其它语言只能依赖于数据库服务器,数据到了前台,处理起来非常麻烦,对ado recordset,只能用

一循环逐条记录慢慢数.

个人觉得vfp用起来很方便.vfp本身就是数据库,可创建自己的数据库,也提供操作数据库的命令,语言.
一个windows+vfp即可搞出一共享式的多用户管理系统.这点就是vfp优于vb,delphi,pb等语言的地方.
vfp对其它语言相比,其发展过程不同,对vb,delphi等的数据库操作功能是后来加上去的,而vfp是从foxbase发展过来的,一开始就是数据库操作语言,面对对象等流动特性是后来加上去的.对数据库应用,vfp用起来很方便,运行起来也快.

语言只是一门编程的工具,各种语言各有所长,能满足自己的需要就行了。
好的软件主要是看它满足业务需要的程序和代价上,跟开发工具关系不大。

在VFP内部插入绝对达到每秒1万的记录(我自己也做了实验,插入10万条10字节记录,并用USE关闭,还不到1秒)。说VFP快肯定是说VFP操作内部DBF数据,而用其它语言操作DBF

或VFP操作其他数据库都会比较慢的。由于其他语言没有内置的数据库,所以从数度来讲,VFP绝对是一流的,原因就在这里。VB操作DBF与VFP操作DBF速度相差几十倍应该是正常的

。但若VB操作DBF及VB操作ACCESS等相差几十倍就不正常了。
VFP的优势在于VFP系统,而不是DBF数据库(如果勉强算是数据库的话)
说“VB用ADO连接VFP”类似的说法本身是有点不太合适的,说“连接VFP的DBF”应该比较合适。关键是DBF,与VFP没多大关系。

VFP作为微软一直坚持更新的软件之一。同excel,access,并列为3大数据库管理工具(ms sql server不在其中),用了快4年的VFP,在对excel.access进行对比时发现,作为从

dbase升级来的软件,在单机数据处理上,VFP不是一般的快,即使不使用rushmore技术,他的速度也是一流的(就国内的目前情况看,能用上rushmore技术的项目可能不多)
vfp使用的是解释性语言,excel,access则使用内嵌的vb,excel在处理数据表格时,功能的强大不用说了。access则基于sql对数据库进行强大的管理,并且能使用vb建立一些简单

的应用,但是如果想要进行封装做成比较完善的、桌面型的数据库管理,vfp更适合。
vfp的致命处就在于他的解释性,在vfp6中,所有控件其实都是非windows基类,而是vfp自己封装的类,所以在winxp下才显示出与众不同的按钮来(不能显示出xp效果),这是因

为所有的控件其实都是图片(vfp)。说个不专业的话,就是他太解释了。所以VFP在桌面应用中也只能说比access强。
但是,任何软件都有他的使用范围,面对普通的办公桌面应用,VFP足够了。解释性语言带来的执行效率下降问题也不是太大(别告诉我你用vfp去实现强大的多媒体功能,这不是

他的强项)。
做个小结:在应用上,excel基于表格,access和vfp基于数据库,vfp比access具有更强的编程性。

对于很多人所说的vfp太灵活了。是的,VFP语法很简单也很灵活,也就是人们常常所说的不严谨。我想说的是,C也很灵活,也很容易出现莫名其妙的错误。所以是否容易出错,有

时候不是取决与某个语言,而是取决于程序员自己。
还有个很多人诟病的安全性问题:VFP自身所带的DBF文件确实是开放的,甚至用NOTEPAD就可以看到部分内容,并且由于VFP完全的即时解释语言(VB6开始,就不能很好的反编译,

而VFP至今没解决反编译问题),很容易被反编译掉(心疼啊,只有这时候才想,人们为什么不尊重点版权呢),不过可以用加密程序就可以解决了。
好了,说了这么多,我也开始转向DELPHI,但是不会放弃VFP,学到现在,每每阅读帮助,才发现自己的所知,其实只是沧海一粟。。。
不会放弃VFP,相信微软也不会,除非有天,微软有了可以很好替代VFP定位的产品(顺便提下,POWER BUILDER是和VFP类似的产品,我想微软和宝兰公司一直不放弃这2个产品,肯

定还是有市场的)

VFP可以是绿色软件,可以直接放到U盘中,即插即运行,运行完一拔就走。

其实vfp对vb的好处是vfp是数据库操作语言,如果用while或for这样的语句逐条记录数,两者都是解释性语言,速度应差不多.
vfp的优点应体现在如
insert into ...select
或数据检索,如seek,locate ,
sql支持等功能上,对上述操作,特别是sql 查询,vb无后台数据库时只能逐条数

首先确定一下,ADO操作DBF和VFP直接操作DBF的方式是有很大差异的,所以想达到同等数量级的速度理论上就是不可行的。
其次,每秒钟几万条记录,即使在VFP中也只是在写入简单数据并且没有索引的时候才有可能,其中的原因和VFP对DBF的高速缓存有很大关系。
第三,专用和通用接口本身在性能上就会有差异,一般会达到几倍的速度,而体现在VFP上,对于一个Foxer来说,差上几十倍也不算奇怪。

有许多人总认为这个语言好,那个语言不行,我感觉片面谈论语言的优劣完全没必要。
每种语言都是一个工具而已,且都有她存在的理由,如果某种语言真的不行了,不用谁去
指责她,其自身会慢慢消失掉的。

看过梁肇新《编程高手箴言》一书的人多少会有些感触,应该不会从表面肤潜的评论一番,
编程语言的编译器不是我们写的,编程语言的规范也不是我们定的,她只是编程工具而已,
真正的高手应该淡化编程语言间的界限,视需要使用编程工具,举个不太恰当的例子:
有人说vfp不好,但如果有一天编程环境只允许你用vfp进行C/S编程而你又不熟悉vfp,你有
多大把握在非常短的时间内掌握vfp并做到应用?如果现在vfp真的不行了,也不会有vfp7/8/9
的陆续推出,当然vfp有很大的局限性,但在专门的领域却表现相当出色。

另外像C/C++和汇编之类的语言也的确不错,从《莱昴氏unix源代码分析》一书就可看出来,
所以用vfp的编程人员也应该多接触其他语言,拓宽视野。

拿unix和windowss相比来反应vfp与其它工具:
unix操作系统下的vi文档编辑器比任何windows下的文档编辑软件功能要强大的多,另外,unix下的
shell、awk、tc、sed、perl等工具相对于dos shell不可同日而语,但尽管如此,windows下的软件
可视化好,操作要比unix方便许多,可以说各有利弊。

看了大家议论,不敢说比谁高明,但觉的有些人看vfp像盲人摸象。我认为:
1、做为一件工具你把他用烂了,我觉的这时你才有资格说这件工具的好与坏(你能说你已把vfp用精了吗?不要说7.0,9.0了,就6.0)。
2、如果做为工具,你怕你的工具箱中多一样工具吗?为什么非要抛弃呢?
年青就是本钱,你真正武艺超群工资不是问题吧.


*****************************************************************
总之一句话:针对一个软件需求,最合适的编程语言才是最好的!

不管是.NET也好、JAVA也好、DELPHI也好、VFP也好,能够利用它赚到钱就是最好的。
*****************************************************************

java:长于网上程序,怪招,单机程序不吃香。
vb:容易上手,对其他没有帮助。
delphi:中等速度,会打个好基础,对以后学C有帮助
VFP学会不难,精通不易 ,优势在于针对数据库开发!!

VFP的优劣势

优势:
1.首先是数据处理速度。微软之所以收购DBASE/FoxBase+发展Visual Foxpro确实是因为在本地数据处理引擎上有绝对性能的优势(MS买来目的其实是用来发展其他产品)。对比

Delphi,.Net,C++虽然在其他任务处理(特别是对OS底层没法比)但在处理百万条数据记录时速度在绝对一流,特别是在Foxpro2.x加入了Rushmore技术。 同时VFP结合ODBC/ADO+处

理SQL SERVER/Oracle数据时速度也非常有优势。 我曾开发一个大型的MIS软件,在SQL SERVER在大数据记录/稳定/安全/触发器等大型数据库的优势以及VFP在内存处理Cursor表的

优势上做了一个合理的权衡,其性能远远优于其他软件开发的同类系统。
2.开发速度。VFP在RAD开发上绝对一流,同时对开发展技术水准要求不高,稍稍学习一段时间可立即上手。(当然如果要灵活运用VFP的对像技术,Cursor Adapter处理技术需要一

段时间的积累) 另外因为是解释执行,所以调试程序时也显示非常方便,不用像C++/Delphi等需要全编译一个项目才能运行,她可以让您直接Do/Run/?一下就可看到程序输出结果


3.伸缩性及开发成本。从开发一个小型的DBF数据库软件到VFP+SQL/ORACLE上VFP都能应付自如。针对软件的要求不同可以灵活考虑DBF或SQL数据库,以便在开发成本/速度及稳定性

上做权衡。

劣势:
VFP除了在数据库软件开发上有优势所在,在网络、多媒体、WEB程序、OS底层操作上都没有多大优势。也就是说要针对需求才能衡量用什么工具开发。


*---------------------------
***转自Foxer大侠:
因为现在作软件开发的大都开始用Java、.NET,与VFP比起来,VFP仅仅是在做常规桌面应用优势明显,开发速度比较高,但毕竟是20多年前的技术底子发展起来的,在很多方面,

尤其是现在人很重视的方面稍差(其实在最新的9.0也不是很差),但是花同等功夫,把VFP学会的时候,也能够把Java、C#的语言也学会了,而比起“经济效益”和“名誉”来说

,VFP就差得太多了,所以,这里也有墙倒众人推的意思。

我用了很多年的Fox系列了,从FoxBase到现在的VFP9,现在开始转向C#/.NET,从能力上说,C#远比VFP强大,如果其他方面不考虑,只是比谁能把一个程序作的更好,VFP远不是C#

的对手,但是如果考虑到程序规模、开发时间、成本等,同等VFP的高手和C#高手,从头写代码的话,对于常见的信息管理系统,VFP至少会节省一半甚至更多的时间,而会得到同

等的效益。

至于编译代码的损坏问题,个人曾经遇到过,但是若干年来也只遇到过1次,所以认为这不算是什么问题。而关于开发工具的BUG问题,个人认为,能比VC 6.0BUG还少得开发工具似

乎本来就不多,而且也没发现VFP开发工具有什么太大的BUG。

总的说来,VFP在当年的应用需求水平上来说,是非常不错,甚至很优秀的,只是当今的需求VFP很难满足(尤其是和当红的C#样样精通比起来,更不行了),只能偏居一隅,而说

VFP不好的人,个人认为,他们还是对VFP一窍不通或者仅仅是一知半解,才妄下结论的。

补充一句,其实微软当今SQL Server/ADO.NET等数据库性能很高,是借用了VFP的很多技术的,所以,VFP的灵魂算是永存了,至于语言的淘汰,不会拖太长时间,预想中VFP 10应

该是最后一版了(不支持64bit就看得出来)。


现在用VFP开发应用程序用DBF数据库的只有很小的软件,大一些的都会用SQL Server做后台,现在用VFP的公司还很多,你没见过不等于没有,否则,MS就不必要开发高版本的VFP

,现在VFP的下一个版本还在开发中,07年发布。
共享软件用什么做都会被破解(连XP都破了,别说其它软件了),这不是VFP的问题,而是软件技术本身的问题,只是对比起来VFP在没有加密的情况下更容易被反编译而已。
开发语言只是一种工具,计算机也只是一种工具,做软件只要选择合适的工具即可,没有必要追求最新的技术。VFP不能发展起来是MS的商业策略,而不是语言的问题,MS如果打算

让VFP不易反编译也不是多困难的事情。

关于反编译方面说明一下。其实C#作出来的程序何尝不会被反编译?我现在就经常反编译别人的程序甚至.NET 自己的类库来学习的。所以能否被反编译并非软件的致命伤(BCB、

VC++还带着源代码呢),关键在于你的软件要不断的超越自己,超越别人,否则靠固守阵地,吃老本,被淘汰直至灭亡是早晚的事。
*---------------------------

*---------------------------
***转自xuzuning
其实对于完成呢感一般的工作任务来说,vfp已经绰绰有余了。
至于会有人说他不好,就让我搞不清楚了!
他和PB,Access本来就是一类东西,并无所谓优劣
我不鼓励你去学习vfp,也不建议你放弃使用vfp
*---------------------------

*---------------------------
***转自walter_lee68
VFP 的强项
1.vfp 比其他语言在重用上有很大优势, 它同时支持"实现继承"和"接口继承".在编写可示控件中与 delphi、c#、pb 方便得多多多多多。
2. 《宏替换&》是所有强编译软件无法比拟。只在 Flash MX 2004 中通过 “set”命令有点接近。包括向 c# 这样的托管语言只能用《对象》来实现通用处理。
2.vfp3 以前的版本是面向过程, vfp3及以上是面向对象, 与 C# 等在对象方面的概念可以相比
3. Web 的应用上有重大突破.
可以直接把 DBF 或光标文件转换成 XML,或把XML 转换成 DBF. vfp9直接通过 SOAP 调用 Web Service
4.vfp 的概念性不强,使得开发成本很低。无须搞清什么叫“类的重写”、“类的隐藏”,没有“虚拟类”、“静态类”、“装箱”、“拆箱”、“接口”、“委托”等等概念

VFP 的不足
1.编译系统的功能远低于 C# 等 MS .NET 开发环境中的编译系统
2.在Web 页功能上(例如网上查库存、网上下定单等),不能实现瘦客户机的方式

在加拿大多伦多,VFP 程序员的工资比 .NET 和 JAVA 的高
*---------------------------

*---------------------------
***ratc (编程之路)
也谈对VFP的感受
转自:山地王 QQ281620834
看了不少如cnszyuxin ()兄弟所论的"VFP 被出卖了吗? "、“VFP的未来”等相关问题,多以VFP的未来发展为忧。而现在MS已承诺VFP的生命期可至少到2014年,不过想来也悲

哀VFP竞落到苟延残喘的地步。
多年前(正值dBase/Foxbase如日中天时),本人一直用FOXBASE写数据库应用程序,后因其无法形成真正的.EXE执行码而加用了CLIPPER编译器,想起CLIPPER的优秀至今仍不能

释怀,再后来WINDOWS及VISUAL的大行其道使得我们的FOXBASE(DOS)黯如昨日黄花。此时虽有了VFP,却更多的是质疑与其未来命运的担忧。本人也在这种大潮中反反复复,于是乎

把VFP、VB、DELPHI、C++、JAVA如小儿的玩具般择来选去,便是在这种无法权衡中过去了8、9年,而今的开发工具、数据库产品又是何等的一佩繁荣景象。唉!不知如何表达自已

的诸多感慨...
国内多年来对中专、大专等职业院校都有安排FOXBASE的课程,既便现在也仍然这样,只是多了VFP,更是为了它们而设置了二级评定。这足以影响着两三代人将它垫于怀中,

也正因此使得VFP在国内经久不衰。但往往等他们走出社会了解了它的目前处境后都感到了鄂然迷失,是放弃亦或是继续!放弃,该学什么?从哪学起?好学吗?有用吗?要花多少

时间才可写程序?一连串的问号堵得自已不知何去何从;继续,自己有基础,国内VFP的资料不缺乏,深究起来不难,甚至也乐于深入,可是,业界频频传出微软停止对它的研发,

又十个有九个说它没用处、不好、碰了几次壁后连自己都羞提学的是VFP。
说了这么多,不知是否也有同仁们感同深受,是否也曾经痛苦地彷徨不前。我想一定不是我一个。为了让弟兄们无须徘徊,我想有必要对一些开发工具发表些本人对它们面上

的了解及拙见,如有偏差望请海涵。本人认为:DELPHI、C++为系统开发工具,它更具有系统级及大型软件的开发能力;JAVA为网络开发工具,它在网络方面的开发能力极强,更具

特色的是可以很好的跨平台;而VB曾经与DELPHI争锋相对斯杀了若干年,按理可以算平起平坐,然我个人让为DELPHI在系统开发方面更具实力,而MS的强大造就的是VB的大众化,

有PASCAL基础的人可容易转向DELPHI,VB却容易上手易学。当然它们都有数据库开发能力,只是C++、JAVA学起来难度相当大,若你想自学可要消耗你相当的毅力,其他几种至少界

面友好,只要有足够的资料及工具书当可循序渐进。当然,如今它们都往.NET平台上跑了,在.NET上熟优熟劣本人未得体会。而我们的主人公VFP与ACESS皆为桌面型数据库管理开

发工具,它们都无法胜任系统级开发与大型数据库开发的能力,我喜欢ACCESS的单一数据库文件的方式,因为这样便于管理维护,但除这点外与VFP比却甚觉一无是处,无以忍受的

缓慢速度更与VFP无法同日而语。VFP的优点当然不仅在于它的速度,在此就不一一列举。可是最令我痛心疾首的是自FOXBASE FOR DOS到FOXPRO FOR DOS直至现在的VFP都未能解决

无以忍受的表损坏(VFP6.0以后的版是否也这样我不曾知道),或许大家会说可以通过备份来解决这个问题,可是在C/S局域网结构下,特别是即时及大量的服务器访问、增删改,

容不得也不实际于时时的备份,如此的企业数据一旦表损坏那就是灾难性的结果。当年我用CLIPPER(早年DOS下的dBase数据库开发编译器)写的宾馆收银系统24小时不停机使用8

年中才发生1例这种情况。很多时候我都想问微软为什么CLIPPER能做到,而身为世界第一大软件公司的微软却一直无法解决这个问题呢?这就是本人转学其他开发工具的主要原因,

只有在开发数据安全要求不高的单机小程序才用VFP。可是自己却多年来身在其中,对VFP语句的眷恋始终未改。
对本文纂写,我未曾想过指导些什么,贬褒些什么,亦或是论述些什么主题。纯粹是本人的思绪感想,信手写来不曾有何文规章句,望我的FOXER弟兄们见谅!
愿与FOXER们共同探讨。
*---------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多