回 帖 发 新 帖 刷新版面

主题:一个老VFP爱好者说说他的VFP之旅

我2000年开始苦学VFP,主要参考的书是《VisualFoxPro6.0中文版入门与提
高》[清华大学出版社]和《VisualFoxPro6.0入门与应用实例》[李俊德编著 清华大学出版社]2本书。尤其是后一本书,完全可以称的上是当今VFP学习中的经典书籍,你看了它,才知道以往所看的一切VFP类的书和教程都是狗屁!不可能再有书能超过它了,我也完全是靠了它才真正进入并进而掌握VFP的。如果你打算在VFP方面有所长进,非买这本书不可!
     我同时也学了VB6.0、Delphi7.0、PowerBuilder8.0和ASP,基本上都是学习做管理系统。总的感觉是:VB的确简洁明快,功能不凡,我现在有写小程序还在用它做;Delphi很庞大,也比较罗嗦,不过功能强大,让人惊叹,堪称完美,但也复杂,不如VB简单;PowerBuilder8.0简直是狗屁,罗嗦复杂,莫名其妙,功能却幼稚可笑,真不懂一些人为什么还在那里硬撑着说它强大,学它简直是浪费生命,根本不能与VFP相比;ASP很有趣,实际需要掌握的东西很少,但功能强大,简直无所不能,在里面只有想不到没有做不到的,不过要有一点VB的基础编程知识,尤其是它是网络性的编程,前景广阔,我现在正在玩它。:)
    最后说说VFP。说实话,我心情很复杂,我曾经是VFP的狂热拥护者,progranfan是我经常上的网站,我在CSDN的VFP论坛也经常出现,为VFP与不少人打过嘴官司,你可以到那里看看我的一些帖子的。VFP入门并不简单[当然入门后就能轻松掌握了,它要人上的是陡坡,不象其它编程语言那样进门容易,而达到掌握却是长途漫漫],如果你以前从未学过VB之类的编程语言,你可能还不以为然,如果你学过,你简直觉得VFP语言实在糟透了,莫名其妙不说,还很罗嗦,单个表单必须放在同一目录下,不想遭这个罪的就要搞表单集,界面弄的一塌糊涂;在表单的启动处还要对窗口进行一些莫名其妙的设置,开始还要搞什么READ EVENTS ,结束要CLEAR EVENTS ,不然编译出来的EXE文件鬼影一闪就不见了(我曾为这个,将别人的原代码一行行删除排查,花费了3个月才最终搞清楚);还有菜单这种在Deiphi中做起来简直象好玩似的东西,在VFP中要用编辑器,如果要出现在表单上还要搞什么顶层表单;每行程序都要搞this.text1.text这样罗嗦的语法。最终做出来的东西是:界面象玩具,幼稚可笑;莫名其妙的出现错误提示,总是某个变量出现错误,容错功能实在很差;前端界面与后端数据库一损俱损,一荣俱荣,哪个出了问题,包括索引文件出了问题,整个系统就报废了,而重装则意味着曾经输入的数据作废。这种客户端与数据库缠在一起,既是VFP的特点和优点,也是其致命弱点,而用VB+ACCESS、Delphi+ACCESS或SQL2000做的管理系统,客户端界面不完善,重做编译安装,数据库不受影响;数据库出了问题,只需对其进行改造,客户端界面不受牵连。通过ODBC或BDE或OLEDB Privider这根“线”将客户端界面和数据库这两颗“珠”联系起来,其中一者坏了,顶多就是解开“线”重新连接一次罢了。所以,学了VFP,最终还是回走向VB+ACCESS、Delphi+ACCESS或SQL2000做管理系统这条路,VFP不过是热了一下身。也正是这样,注定了VFP是一个悲剧性的东西,而其实,它却的确是一个非常有特色,非常方便快捷的数据库系统开发工具。
    别的不说,就进入VFP之快,就让人很爽,再看看Delphi之类的,我操,等的老婆都要生完孩子了。VFP做出来软件体积很小[只有VC++做的才可与之相比],而且还能在不同系统平台上运行[比起另一跨平台的JAVA老太太它姥姥似的浪费人民生命的奇慢无比,简直就象奔驰之与蜗牛],运行速度奇快,搜索数据之快天下第一,它独特的过滤和查找功能没有哪种语言能及。在熟练掌握语言后,开发速度也非常快;如果不怕麻烦,有创意和决心,它最薄弱的界面问题也是可以得到很大改观的。再看看它很具特色的“自定义属性”、“自定义函数”、“存储过程”,自定义库等,独特而实用,此外非常底层化、精细化的语言,完全掌握后,你会对数据库系统的开发有更清晰完整的认识,而不是除了只会白痴一样的搬一大堆控件来实现功能外,连行正确的程序都编不出来。想真正的通过程序而不是控件来实现并明白数据库系统的工作原理,VFP比Delphi都要强。不过VFP的并不完全面向对象也限制了它功能大发挥,但对于并非比尔·盖次的我们老百姓程序员或爱好者来说,这种限制我实在感觉不到。
    VFP的优点实在太多,我一下子也说不完,何况大家也没那么多时间听了。
    现在我改用Delphi+SQL2000或ASP+ACCESS2000或SQL2000做管理系统了,原因很多,相信许多学VFP的人学到一定程度,基本上也会走我这条路的,到那时,或许我今天没说的东西,他们心里已经明白了。不过,有时间和兴趣,我还会用VFP做一些东西,或建议别人学VFP的,这样做,或许还是因为不能最终忘情于它吧。   hbgth  2004年6月8日下午于武汉

回复列表 (共111个回复)

沙发

你的口头语太多!!
不过至于你的谈话我想,SQL2000和甲骨文应该是趋势,至于ACCES我就不太清楚他的性能了(支持多少条数据?)

板凳

我本来就是不准备写论文性质的,呵呵,所以就随便开口了。或许也是因为平日里被逼着写论文写烦了吧,在网上一说话就放松警惕,不太文明了。:)
    至于ACCESS数据库,一般只是初学者的选择,稍微正式的软件肯定都会选择SQL2000或ORACLE了,不过个人肯定只用得起D版了。
    谢谢你的回复。

3 楼

话糙理不糙.[em2]


我的小常识:
    具我所知SQL2000支持数据量20亿条ORACLE支持30亿条,而VFP支持10亿条.但ACCE我就不了解了.

对了!经常来VFP吧!这儿像个家.[em2]

4 楼

我断断续续学VFP也有一年多了,原以为自己应该算入门了吧,可听你一讲,我觉得自己只是学了那么点皮毛。VFP是完全面向对象的吧?控件累在一起,稍微加两三句VFP语言,就能够做出一个比较好的界面什么的出来了,是很实用的一种语言呢。
VFP 是否够强大?

5 楼

楼主的文章使我受益匪浅,我学习VFP10年,与楼主相比,我只能算是60分水平。与其它诸如Delph、VB相比,我觉得VFP有如下好处:
1、它是一个集面向对象编程(又有点过程化编程的性质)、数据库操作、控制于一体的完整的应用程序开发工具。
2、它可以编程驱动MicroSoft家簇的其它诸如Excel、Word系统,从而弥补了它自身在诸如报表输出、做图、文字编辑等方面的一些不足。
3、它支持OLE功能,能够实现与Microsoft其它应用程序的无缝连接。
如果说它有什么不足的话,我最想说的是:如果你认为它那方面不行,很有可能是你在这方面没有吃透它。
所以我说,不论你在VFP方面下多大功夫,你都不会吃亏。因为你下的功夫越大,它给你的回报越多。我很赞同楼主说的一句话,即便你将来不用它编程了,它给你打下的功底也是不会浪费的。

6 楼

楼上个位好友:

   我想不能说那门语言过时或者功能少,就说VFP6.0,我曾经在初学VFP时看过有一本书介绍'俄罗斯方块'和'赛车'游戏的编程.就是用VFP6.0编的.如此看它的功能多全面!只是有很多程序我不会用,编不出来.
   我想在这个社区里咱们能共同进步今天我们讨论的是建立数据库的困难和成果,明天我们就会讨论高级的编程,但是要在这条路走下去,应该坚持不懈.
                                             PONY

7 楼

不好意思,没想到我只是一时的一些感想,居然引来大家的如许多评论。其实我前面主要是在谈一些感想性的东西,而且重点是放在VFP的一些直观性的“硬伤”上面,而对于其特点和优点还没有做真正深入细致的描述,我想,在这个论坛上能够做这种描述的高手多的是,我其实还根本不够资格。之所以用很多不甚理性的话语来攻击VFP,大概还是出于那句老话“爱之深,恨之切”,毕竟,VFP是我编程人生的“初恋”。
    必须补充的是,我在前面大谈的VFP的“致命弱点”——前端处理与后端数据库的缠结一起,所可能导致的“一损俱损,一荣俱荣”的情况,其实也是可以通过大家都熟知的方式解决的,那就是前端开发用VFP,而后端用SQL2000等大型数据库,不过这样一来,VFP也就不是VFP了,它所独有的一切功能先进强大的函数就受到严重限制,有些甚至完全无用武之地了,所以,后端还是只能用其自带的数据库。而要避免经常发生的那些莫名其妙的错误提示(尤其是在打包安装后),唯一的办法就是做到:1.数据库设计上应科学有序,尽量减少诸如过多函数依赖等缺陷,一旦设计完成并通过测试确定下来,就不要再做大的修改,避免索引文件与数据表之间出现不对应(这也常常是导致数据库崩溃的重要原因之一);2.前断界面应先行有较详细清晰的设计安排;3.最后一招就是,设计的系统中无论如何要有完整的数据备份和导出导入功能,比如调用Dos命令,对数据库进行整体性复制[如xcopy命令],而不只是某张单表中数据的备份保存(这种备份其实意义不大,少了对应的索引文件,数据表根本是打不开的),这也是在万一系统崩溃或需要重装时的最后防线。与前面两点结合,构成“三保险”。做到了以上几个方面,那还担心什么呢?剩下的就是享受VFP的极限搜索和闪电速度。至于10亿条记录的最大限制,除了中国电信和银行部门外,绝大多数中小企业用户是根本不可能达到的,想想美国波士顿证券公司的系统都是VFP做的,就可以知道10亿条记录是一个多大的数字,还别说就是连SQL2000到了10亿条也开始变成老牛破车了。当然万一出现要超过的情况,也可以采用前面说的方法,外挂一个SQL2000或ORACLE。不过那样大的管理系统恐怕也不是我们这些普通程序员或爱好者这辈子能接到的定单,估计企业会直接去找微软定做了。:)
     就不懂装懂胡乱说这些吧,主要是针对初学者的,对于熟练掌握了VFP的高手来说,这些恐怕早已是他们设计蓝图中的基本内容。

8 楼

唉,好长时间没上来了,这里这么热闹,也来说几句。

  我非常赞同楼主的观点,因为也是我所经历的,说VFP 不行,但毕竟是从这里上手的。但VFP也有好多优点,这点楼主也提到了,以后有可能还要用,而且有可能劝别人用。

  衡量一种语言的好坏不能从单方面,因为每种语言毕竟有他存在的价值,有一定的使用人群。  

   我现在也正在学VC++,因为做系统VFP确实很薄弱,这就是两种语言的一个方面不同,但做数据库VFP又强于VC++,别的语言不做比较了,以点带面。

  所以各位狐友:不要停止不前,如果继续你的VFP之旅,请学它的C/S或B/S,CA。不要只去做单机了,这样早晚会被淘汰。

  最后建议朋友们再去掌握其它一种语言,这样你在接项目时就会有仞有余了。



           最后祝大家都能实现自己的梦。

        [em1][em2]

9 楼

TO 第8楼的兄弟:
请问一下VFP的C/S或B/S,CA具体是什么东西啊?
是VFP的扩充,还是它的更高版本呢?谢谢!

10 楼

C/S是客户服务器,BS是游览服务器,CA是访问后台的一个方式,总之上述三种是用VFP做前台,后台用ACSS或是SQL或是ARiCOR或是MYSQL等等的数据库。这种方式开发容易,维护更容易,绝不会出现程序运行期间突然断电后不能访问数据库的情况,当然这只是优越的一小小的方面。

我来回复

您尚未登录,请登录后再回复。点此登录或注册