看到这篇文章,才知道VFP为什么"没落"?
90年代上大学以前,有人就传言VF要没落,于是乎对于VF简直就是不学一股。
我至今还清楚的记得,我和同班的同学嘲过我们大学提倡用 VF做软件的老师。因为那时的我们流行学习sql server。
工作后,部门多数人都使用VF,同时看了一些介绍VF的书,也学习了一点VF.
于是在心里对VF 有了新的认识,其实VF在技术上还是很牛的。让我们来认识真的VF吧。
--------------------------------------------------------------------------------
VFP为什么?
2000-12-12 1:37:00 fbilo
“VFP还有前途吗?”、“VFP落时了,赶快放弃VFP吧!”
在各种VFP的论坛、BBS上常常见到这样的问答。即使是大名鼎鼎的《电脑报》,也堂而皇之的在一篇论述编程语言的文章中说道“微软不再发行VFP的下一个版本了”。
真的是那样吗?
事实恰恰相反。
关于微软不再发行VFP的谣言并非是今日才出现的。早在VFP5的时候,就已经出现了不会再有下一个VFP版本的谣言,然后,VFP6发行了。
现在又有了VFP6不会再有下一个版本的谣言。
这种谣言广泛的传播于非VFP程序员中,并且深信不疑。
可是,让他们失望的是,今年10月,在VB7 Demo发行前两天,VFP7 Demo先发行了。
来自VFP DEVCOM 2000的消息指出,VFP7正式版将在明年春季发行,目前主要的工作是使VFP7适合于 Microsoft .Net 框架。
所谓的VFP6不再有下一版的谣言,大概又会变成VFP7不再有下一个版本了吧?
为什么会有这种谣言而且流传的这么广呢?
不妨让我们先来看一下VFP中的“天字第一号”问题:
“为什么我的程序编译完成以后,运行时却一闪而过?”
这个问题已经被提出了N千次了!几乎每个初学者都要在网上问一遍这个问题,老鸟们回答这个问题都答厌了。其实这个问题并不难,只要读过任何一本教科书,都会告诉你:要做一个主程序,在其中建立Read Events...Clear Events的事件循环。解决问题很简单,但为什么几乎所有人都视而不见呢?
我想这就是问题的关键:
绝大多数人,他们喜欢的是一个不用学习、看书,拿起来就可以用的语言;他们需要的,只是一个“可视化”(Visual)的较好的、不用写代码或只要写很少代码的开发工具,如VB、PB。
大多数人使用一个新的开发工具的时候,跟使用一个工具软件差不多:拿起来先用,碰到难题时才去看书、看帮助,当然,最好不用看书、看帮助,现在不是有Internet了嘛,干脆,上网去问别人。
这样,他们评价一个语言的好坏的标准,就主要的集中于这个语言的可视化水平的高低,也就是说——只用图形界面、不用代码编程的水平的高低。如果C/C++是一门今天才出现的新语言,那么肯定也会被打入“已经过时了”的冷宫....
一个广泛的误解是:许多人甚至认为可视化的程度越高,这个语言的面对对象程度就越高。很少有人搞清楚:到底VB和VFP哪个才是面对对象的编程语言。
所谓的面对对象编程,主要是指语言的四个特征:抽象、封装、继承和多态性。具体的讲,要判断一门语言是否视面对对象的,只要看看它是否能够建立自己的类、能否派生子类、建立自定义属性、方法就可以知道了。
过去,我们宣传一个面对对象编程语言的好处是:使用图形界面的向导、生成器,可以不用代码、或只用很少的代码就可以快速开发应用程序;提供了大量的控件,可以使用户直接在自己的程序中使用它而不用去管它的内部细节。
这些优点并没错,但它们只是面对对象编程思想的外在表现,而前面的四个特征才是面对对象编程的本质。打个比方:如果我们把这些优点比作金子,那么这四个特征就是点金术。
这些点金术VB中都没有。而VFP几乎从它诞生起就实现了。其实,在这方面,一直是VB在慢慢的向VFP靠拢。这就是为什么VFP用户总是在惊讶:人人都说VB好,可为什么许多让VB用户们大声赞誉的VB5、VB6的“新特性”听起来好像都是VFP3里就有的东东?
据说,VB7才会真正支持面对对象。有些人开始担心,一旦VB开始实现面对对象了,VB的用户将会大大减少....
这是一个重要的原因:大多数用户,他们只需要别人提供给他们现成的ActiveX控件,很少或者根本不愿意去自己建立一个控件。他们只想用现成的ActiveX控件来拼装自己的程序,而不想用面对对象编程原理、编程思想来设计自己的控件。虽说人人都知道,点金术比金子好,可大多数人总是怕点金术掌握起来太麻烦,宁愿用别人点出来的金子....
遗憾的是:对于VFP来说,面对对象编程原理是至关重要的。不能理解面对对象编程的思想,就无法用好VFP。
当年,foxer的队伍曾经相当的庞大,国内程序员使用的开发工具似乎除了C/C++就是fox了。但是,当fox从foxbase升级到foxpro 2.x的时候,许多人被挡在了门外,因为他们不能理解可视化编程的思想;从foxpro 2.x升级到VFP3.0的时候,又有更多的人掉队了,原因是无法接受面对对象编程思想。当初国内曾经盛极一时的MIS公司现在几乎都已经销声匿迹了。
我们发现,让fox的老用户理解新的编程思想相当的困难,结果是:他们要么继续用foxpro2.x,要么在开始转学VB、PB、Delphi。在这方面,他们中许多人甚至不如从未学过fox的初学者。
今天,还有许多人把VFP6当成foxpro 6.0,仍然在用面对过程的思想在VFP下编程,他们的程序里还是充斥着 @....Say、@....Get之类的东西。当他们使用了VB以后,理所当然的认为:VFP过时了!
看到这里,读者大人们可能不服气:你说的再好,微软为什么不大力支持VFP?为什么几乎不宣传VFP?
OK。这个问题还是由Les Pinter来回答吧!下面是我翻译的Les Pinter的经典文章《数据库101》:
数据库101
本文来自Les Pinter's Database Journal
作者:Les Pinter
译者:fbilo
多年前,克莱斯勒公司研制了一种可以用来改变柴油机发动机的汽化器的工具包,使汽车可以得到更好的油气英里数。它要花费超过500美元并且还需要为了它复杂的安装而付给机修工高额的费用。机修工们也乐于出售并安装它,所以每个人都很满意,除了用户。
军队对利用计算机技术来节省资金更感兴趣,所以他们委托克莱斯勒公司研制了一个基于计算机技术的模块,只需要花费20美元,它就可以做到需要500美元并且用一天的时间来安装的那套工具包所能做到的同样事情。但是,克莱斯勒从来没有被要求把这套新的模块出售给公众,所以他们从来没有出售它。
最后,他们的大客户给他们一个建议:对工具包的电路板做一点小的修改使之在启动时能够通过美国环保署的测试。然后,在接下来的一个小时里,自动的逐步重新设置使油气消耗和污染减小到像一个烟囱那样。他们照那样做了,汽车工业卖了数万个这种东西并嘲笑美国人民。
从这里克莱斯勒就赚了十亿美元。
克莱斯勒的价格政策并非是违法的。这个政策非常完美:同时拥有两个产品,其中一个比另一个更好、更快并且更便宜,但他们不会告诉用户这一点。违法的是他们从事它的途径。这种情况一直持续到他们的贸易行为伤害了美国政府以至于美国政府介入此事为止。克莱斯勒不关心它浪费了消费者或美国人民多少钱,他们只是考虑怎么增加他们的剩余价值。
MicroSoft出售两个数据库工具。其中一个——FoxPro——快速而便宜,并且不需要额外的花费,你只需付一次钱。另一个——VB和SQL sever——需要的花费像它们的体积一样庞大并且运行的相当缓慢。FoxPro用户也能使用SQL,但是他们从来不转移到SQL sever上去——他们根本不愿意这么做。他们从来不认为有这样的需要,甚至很少谈到SQL sever。但是不给用户以可供的选择,他们将继续被蒙蔽下去。只给他们一种本地表达到五万个记录就会窒息的语言,并把SQL作为唯一能挽救他们的开发投资的途径。他们将会跟从这个潮流,他们不得不这么做。
我不知道让你的用户花费两万美元而忽略了五百美元这么做是否违法。我同样不知道推荐一个对大多数数据库项目来说据称过度结实的技术是否合法。但它看起来是错误的。
对一个公司来说,高昂的成本并不是最重要的坏事。你的竞争者也必须忍受同样的成本。在所有的商业中,被迫从低成本的技术转移到高成本的技术因而被击败是理所当然的。如果你的程序员决定使用SQL,而你的竞争者使用一种更好、更便宜的技术,那么你将陷入经济的劣势。如果你的竞争者和你一样做了,那么你们的成本是相同的。在你所在的行业中没有人会失去什么。
除了美国消费者。
为什么我象是整个IT行业中唯一推荐FoxPro的程序员?记得在大学里不要跟随潮流吗?记得含沙射影的诽谤的力量吗?“如果它那么好,为什么MicroSoft不为它做广告?他们肯定羞于谈到它。”真相是不能被掩盖的。MicroSoft
知道 Visual FoxPro 是多么棒。MS SQL 的销量将会以百万美元计的减少。现在你知道故事的其余部分了。
我们是这个“善意”的疏漏的关键。为了被看作是正义的,MicroSoft 不能杀死 FoxPro。(译者注:就在不久前,VFP7 的测试版先于 VB7 发布。这是对那些到处散布“VFP要完蛋了”之类的谣言的人的一个有力的反击。)但是我们能。如果我们屈服于诽谤并保持沉默,那么 MicroSoft 赢了。我们、和我们的客户、还有客户的客户,都是失败者。通过低头承认失败,我们可以被允许做出看起来像是对的一方的样子。我知道逆潮流而行是困难的。我已经被要求不要唤起人们对这个问题的关注,但我还是坚持并期待着。我希望你也那么做。
既然 MicroSoft 不再宣传 FoxPro,我已经有了一个用两种方式建立同样的一个实例程序的方案(不管别人怎么称呼它),我们公平竞争。这个项目没有买主。所以你自己来试验一下。选择任何一个应用程序,用两种语言来完成它,然后比较开发的结果。这是一。然后装入10万个纪录并都运行它们,比较它们的性能。这是二。最后,现在考虑配置一个SQL sever的成本——这时唯一治疗MDB文件象冰河一样缓慢的性能的方法——当然你必须忍受像SQL的体积那么大的成本,然后加入一个数据库管理员的成本,除非MS SQL 7.0能够再为你节省10万美元的隐藏成本。
这不是一个竞争,这是一个智商测试。
作者:冯宗任
联系地址:浙江省富阳市技术监督局
Email:fbilo@sina.com.cn
主页:foxer资料站 http://fbilo.myrice.com
相关文章
-------------------------------------------------------------
可喜的是,现在VF又被重新拉回到MS的升级计划中来,大家没事的时候学学VF,受益良多。