VFP的優劣勢

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們共同探討。
*--------------------------- 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章