| 當我第一次真正接觸Database(Dbase,FoxBase)是應該1989年(以前只是玩下玩下,跟本都未真正用過), 當時在一間Direct Mailing公司工作, 小金星老豆就係第一個教我既人(在此特別鳴謝小金星老豆). 電視人伍詠薇都係我地同事.由此一玩就玩左成十幾年, Foxpro都養活左我成家人十幾年了.
發覺好多香港Developer/Progammer都不知Foxpro利害的地方, 等我介紹一下先, 如有錯誤懇請指導.
早在Foxpro 3.0(約1996年) 已經是 Object Oriented Program(OOP)反而VB 只是Object Base, 不過M$不想影響vb的地位, 所以好低調處理, foxpro可能係世上最早的oo database了.
foxpro在處理程式的速度很快比當時的vb使快, 本人之前的文章說過一個”matching “程式便是用Foxpro寫成.
在Novel 當道的年代,本人用Foxpro寫左個Excel like的軟件, 目的係讀取user 不斷更新的data(number), 經過計算,張結果演示給所有user. 為左方便update 計算formula, 所以個Excel like的軟件可以input formula, 再結合佢既database function, 到2005年的今日都唔係好失禮架.
foxpro在input tools 方面好先進, 比起delphi,vb 好用得多. 它在combox box,textbox等都好照顧data inputer既需要, 好設合人體工學. 佢可以先行處理複雜的data, 才upload 到sqlserver, 減少sqlserver 的負擔. 在大型系統上, sqlserver+foxpro 既performance已經好過AS400了. (當然AS400 的賣點不是在這裡.) 因為foxpro 本身有database engine所以sqlserver+foxpro的確比sqlserver+vb好得多. 當然m$都不大力推動啦.
foxpro 的class browser非常先進, 它的oo tools box 亦很好用, vs最近先有此Function.
其原因有.
1. foxpro都幾難寫比起vb難寫得多, 及難學. basic 本身已經有好多人識, 推vb的確較易.
2. m$ 想向大型database 發展.
3. standard 使用c,vb 為基準PC Language.
M$弱化Foxpro的步驟
早期仲可以Complie 成standalone EXE, 後期比m$弱化了.(當年clipper咁多人用, 都係dbase唔可以Complie.) M$真係想弱化Foxpro.
report form 多年來唔改進. 冇oo,冇 sub-report, crystal report 比foxpro先進得多, 要靠third parties 支持.
少document關於foxpro.
張Foxpro 限於database 有關事務. 其實foxpro有能力好像vb咁.
到了今日VS2005 已經比foxpro好得多了.
後記 :
正如我所講, 有不少網友認為Foxpro不是OOP. 這就証明到MS$刻意弱化/淡化Foxpro的能力.
以下一段簡單既Program Code 就演示出Foxpro 絕對是OOP. Foxpro已經包括左OOP最要元素.
Class,Encapsulation, Polymorphism,Inheritance,Properties
還有Foxpro要打Coding比C#還少, 大部份Code是由System Gen 出來, 我只是用Mouse 來設定大部分的proceudre,function 等Properites. 只有Highlight部分是Coding.
最後
若果俾我選用C#定Foxpro 做development, 我一定會用C#. 因為ADO.NET+C#係好用過Foxpro.
tmp = CREATEOBJECT(”sondemo”) tmp.publicvar = “Son Public Var” tmp.printout()
******************************************************** DEFINE CLASS sondemo AS demo myname = “Hello World, Son” Name = “sondemo” PROCEDURE Init this.protectvar = “Son Protected Var” ENDPROC
PROCEDURE printout DODEFAULT() ? “This is Son Procedure” ENDPROC ENDDEFINE
********************************************
DEFINE CLASS demo AS custom
Height = 22 Width = 46 myname = “Hello” HIDDEN privatevar privatevar = “Private Var” PROTECTED protectvar protectvar = “Protected Var” publicvar = “Public Var” properties = .F. Name = “demo”
PROCEDURE printout ? “This is private var :”+this.privatevar ? “This is public Var : “+this.publicvar ? “This is protected Var : “+this.protectvar ENDPROC
PROCEDURE properties_access *To do: Modify this routine for the Access method RETURN THIS.Properties ENDPROC
PROCEDURE properties_assign LPARAMETERS vNewVal *To do: Modify this routine for the Assign method THIS.Properties = m.vNewVal ? “Write Properties” ENDPROC
ENDDEFINE
|
我都見識過foxpro O既input control, 幾/十年前的都己經很developer friendly.
現在還有很多人使用十多年前的foxpro program. 那些user 都是會自己打sql command的.....就好像用wordperfect打command. 相比起現在的user........唉
Comment by Ken Wong — 2005 十二月 13 @ 7:06 pm