有網友在我的文章《VB6+excel教程:教程大綱》下大段留言(感謝這位網友的評論)
用VB與Access、mysql這類專用數據庫開發聯接當然好用,但國內普通人一般電腦上既不會裝專業的數據庫軟件,(不論是微軟,office套件中的Access,還是SQL service,或者更方便、更常見的mysql),個人也不多需要創建與運行數據庫服務器。我接觸到SQLite,覺得比較適用,用VB開發用戶操作界,用SQLite3作為數據庫,安裝簡單、方便,可能更適合普通人非商業性需求(免費版數據無保密性)。
這位網友事實上贊同了我的觀點。VB是好用的。
VB被鄙視的一個重要原因是它太簡單了,完全沒成就感。拖拖拉拉幾下做出來的界面,專業選手都看不上。事實是,VB在業內處在鄙視鏈底端。
C->VC->delphi->VB
有個同學花了很大功夫學完了C語言的全套課程,自認為比較優秀,也很受老師贊賞,他說老師我怎樣才能做一個像VB那樣快速開發的窗體?這一問把老師問懵了,老師一臉鄙視地說,學C的不需要GUI圖形界面.......
這個同學不講武德,顯然是來砸場的。
學C的同學如果沒幾年功底想做個同VB一樣的界面,或者想美化下界面,簡單不可想像。可為什么學VB的同學一開篇第一課就有圖形界面?
以上內容大家可以把它看成一個段子來看。
不知道聰明的同學明白了什么道理?
VB做圖形界面即使在今天2021年在win10系統中,仍然是最簡單快捷的。
別看VB做一個界面簡單,幾乎默認生成。但如果真要用C語言來做一個同樣的界面,背后需要調用的Win SDK,消息循環會讓初學者崩潰的,我親身體驗過,不信的同學可以去嘗試下。
即使換VC仍然沒VB快,當然有號稱VB殺手之稱的delphi也很快,但delphi要使用pascal語言,對VBA使用者來說還要跨越語言障礙,難度不是一點半點。
但是做VBA的絕大多數人都不是職業開發,也不需要太多專業知識。
我強烈推薦用VB6做VBA的替代升級是第一個重要原因是擁有全新的圖形界面,可以美化,可以換膚。
第二個原因是EXCEL的知識,都可以得到保值增值,
第三個原因是VB與VBA的語法最接近,大家都是用同樣的excel對象和語法,VBA工程中自帶的語法手冊都是為VB量身定做的。
第四個原因是程序代碼與數據表格徹底分離,以前做的東西在別人眼中算個自動計算的表格,現在終于成為獨立的程序。
第五個原因是從此進入類似專業開發的領域。做出一個有圖形界面的exe,全面控制excel,是不是會讓VBA用戶身價倍增?
第六個原因是培養和鍛煉了程序思維。不再是以前那樣總想這樣點點,那樣拖拽一下的拖拉機時代,開始有輛自己的汽車了。在vba中太久就完全依賴excel系統功能。
比如說排序,VBA要么手點菜單排序,要么vba去操作excel自身sort功能去排序,排序后的表格立得,有多少人會想到自己去學習排序算法?有人說自帶排序不香么?我說如果要求不許改動原始表格,直接排序出結果列表,怎么做?現在有VB了,讀取excel表格數據,排序結果生成在下面這樣的界面中(下面這個界面內容只是示例啊,圖文無關,它并沒有排序),界面中簡單切換一下,再換一種排序,完全不依賴excel系統排序,這樣excel只是成為你的一個數據倉庫。
再換個角度想,excel排序很好么?它可以對姓名正確按音序排序么?比如姓“曾”的員工是不是都當作ceng字來排序了?要完成這樣的任務,是不是覺得有必要換掉VBA了。有同學說這個我VBA排序可以做,當然能。但是不是覺得麻煩?可以做個界面顯示出來么?
第七個原因是學習了VB6+excel課程,再去轉向Access、sqlserver開發也是水到渠成。
第八個原因是VB6在處理excel方面可以和VB.net/C#接軌,我就是把以前的VBA代碼第一步升級成VB6,然后改成了VB.net類,然后編譯成dll類庫,讓C#調用。看下,VB代碼的生命周期如此長久。
祝使用VBA的同學早日走上VB6+excel開發之路。
vb啊,這回你明白了
一直想寫VB相關的內容,把實踐過的感悟總結成文,分享給更多在途的朋友。本篇在《明比閱歷淺,暗拼體力衰,指下講武德,碼上笑春風 》的鋪排下,終于等來了這個時機。前篇為廣大非IT人士開啟IT之路提供了務實的指引,此篇則更深入介紹其中的途徑。這讓人有點興奮,又有點緊張。興奮的是,這么多經驗可讓人少些浮躁,多干實事,少走彎路。緊張的是,怕不夠客觀,誤人入了歧途。
那就擬揚先挫吧,兼聽則明,偏信則暗嘛。正視自己的短處,才能揚長避短。若是無法接受,提早打住,另謀出處,也未嘗不是件好事。
1、無論是VB的使用者還是其他語言的編碼人員,VB處于鄙視鏈末端,這是不爭的事實。
2、VB的職業開發需求少,招聘VB的鳳毛麟角。學習混不到職業前途,這是不爭的事實。
3、VB在Windows中扎根太深,猶如彼時的IE。在眾多OS不斷崛起的今天,跨平臺的戰斗,注定要落下VB這位老臣。VB6在上個世紀末就未再更新,Win8以后官方未再宣稱系統級支持,VB6進無可進,這是不爭的事實。
4、VB6到VB.Net之間的大跨越,終結了VB的后向兼容,導致曾經的項目難以進行無縫的現代化升級。老項目無法使用更現代化的工具,維護效率低下。VB.Net這個新物種不但沒攬到早前VB的生態,連官方支持也不如C#。VB.Net將VB6封印,在商業競爭上,自己卻進不如C#,退不如VB6。VB項目生態的不可持續性,被編碼人員篤定,這是不爭的事實。
5、VB虛擬機的過渡代勞,讓剛入行的初學者安全自在,卻也困住了想起飛的入門者,讓其舉步維艱。編碼者就像VB的崽,時常處于VB媽媽的監控之中。沒有指針、無繼承、太爛的多線程、不支持內嵌匯編…,不易擴展,更不能跨平臺,不時尚土鱉像古董,這讓專業開發人員非常鄙視,這也是不爭的事實。
6、VB沒落了嗎?沒落了,這是一邊倒的聲音。
這么一數落,似乎VB無藥可救,一無是處了。沒有調查就沒有發言權,要想客觀評價,不得不回看VB的歷史。
1、1988年,QuickBASIC就已風靡DOS系統,實時語法糾錯,可移植,在IDE中啟動。
2、1991年,隨著Windows3.0一起,VB1.0正式誕生。脫胎于QuickBASIC語法,事件驅動,可視化IDE。Win3.0圖形界面的巨大成功,讓VB迅速獲得開發者的青睞。事件驅動更是對以往過程式驅動的一聲驚雷,革命性BASIC成為佳話。
3、1992年,隨著Win3.1的持續加碼,VB2.0繼續深挖系統特性,幾個月后就出了VB3.0。對象變量擁有最早的繼承特性,對控件(VBX、OLE)的支持,對數據庫(ODBC、JET)的支持,讓此時的VB可開發出相當有水平的Windows程序。此時,針對VB虛擬機的P代碼效率問題,競爭者Delphi才應運而生(其設計者也正是后來C#的設計者)。
4、1995年,在硬件更新換代的背景下,VB4.0誕生了。Windows開始走向32位系統時,VB則開始擁抱COM,定位也轉向Visual Basic For Application。自此,VB與Office的宏語言統一起來,緊抱Office這顆大樹,也是VB日后的免死金牌。全新的控件(OCX)、類模塊奠定了VB面向對象的特性,其封裝性(DLL)也使得VB成為COM的語言。
5、1997年,COM(ActiveX)技術已相當成熟,此時的VB5.0對其提供了最強支持。該版不僅對Visual Basic For Application進行了完善和豐富,更是提供了代碼的本地編譯器。自此,VB在性能上終于有了質的提升。此時的VB不但可開發自己的ActiveX組件、還可開發進程內外COM組件(ActiveXDLL、ActiveXEXE),更是可以開發在瀏覽器中運行的ActiveX文檔。其IDE的智能感知,也極大地提高了開發效率。
6、1998年,以Visual Studio 6.0家族成員的方式發布了VB6.0,微軟將其定位為企業級快速開發工具。VB6集成的各項特性,足夠企業快速建立多層分布式系統及Web應用程序。此后近4年均未更新,顯示出了VB6的成熟和穩定。
7、2002年,在Java的逼迫下,Visual Studio.NET1.0問世。.NET框架下的VB,除了語法風格與經典VB類似外,其實就是全新設計的開發語言。在激烈的市場競爭中,VB6沒能等來繼任者,成為最后的經典。
此后的VB.Net波瀾起伏,將經典VB積累的生態揮霍殆盡,大量的專業開發人員轉投了C#。VB.Net出生如同VB4.0,有戰略上的急迫,更有自身的失誤。在不能后向兼容經典VB的情況下,又在革新時錯失了市場,才導致今天雞肋的地位。
VB.Net幾經周折,盡管已足夠強大,足夠安全,足夠易用,在使用習慣上也已高度還原VB6,甚至很多官方文檔也可被VB6采用,但畢竟已是新的開發工具。VB.Net在.NET框架下不如C#,在企業級快速開發上也不能替代掉VB6,在這樣的夾縫中,VB.Net的未來注定任重而道遠。
不得不承認VB(以下VB若無特別說明,僅指VB6)曾是最流行的開發工具之一,據說其生產的代碼量是C++的數十倍之多,數不清的應用活躍在各大企業生產的田邊地角。然而成也蕭何,敗也蕭何,VB最大的問題竟在于其過于成功。
它極為有效地降低了初級程序員的學習難度,幾乎所有人都可以用VB進行編程。職員、學生紛紛加入,輕易解決其他平臺實現起來更困難的問題。因為VB太好用了,也從來不苛責不良的開發習慣,所以到處都是新手,到處都是質量低劣的機械式代碼,成了殺雞焉用牛刀的最佳詮釋。
對于VB,素有”沉默的大多數”的說法。據說只有3%的用戶能發出VB不好,希望官方改進的聲音,其余97%的用戶覺得VB挺好,沒有什么需要改的。當VB.Net1.0的Beta1出來的時候,與VB6天翻地覆的差異,直接把提要求的那3%給搞蒙,搞害怕了,進而轉投C#去了。其余的97%仍然覺得VB6挺好,沒什么需要改的。所以,在業界VB從企業級快速開發工具淪落為小學生的玩具,也就不足為奇。
這也正是我在《明比閱歷淺,暗拼體力衰,指下講武德,碼上笑春風 》中,極力推薦VB的主要原因。太好用,太容易用,輕易就可達成初級程序員的目標,的確具有吸引力。時至今日,由這97%周轉的,機械的,功能有限的代碼,解決著很大一部分實際生產中遇到的問題。實用性是VB得以茍延殘喘的法寶,也正符合非IT人士對IT的需求。
1、幾乎很難找得到像VB這樣拖拖拉拉就能完全繪制用戶界面并快速編碼的工具,這是VB與Windows與生俱來的血脈關系造就的。
2、幾乎很難找得到像VB這樣允許程序員在IDE中運行、發現并修改錯誤、并在修改結果上繼續的編程環境,即便停更十余年也不公開源碼,可見的確獨到。
多如繁星的VB項目,使得官方不得不一而再再而三延長系統支持,據稱官方至少覆蓋了整個Win8生命周期。而實際情況卻是,在號稱最后1個Windows版本的Win10上也活得怪好。相信職員、學生一類非專業開發人員還會繼續紛至沓來,在沒有足夠投入的情況下,繼續生產功能夠用的代碼,就像打不死的”小強”,在自己的領域里堅強地做著自己的事情。或許,VB看上去就要落幕了,但即便是真的,只要WIN32開發不被淘汰,Office還能繼續為生產賣力,VB就不會消失。相反,VB會成為1個遺留產品,一個被忽視的沒有激情,也沒有未來的工具。
爭論了半天VB的好壞和前途,跟你我有半毛錢關系?這是一個關于名為VB軟件后續升級的討價還價。不升級就死掉了么?就像用鋤頭和拖拉機種地,別人說鋤頭變不了拖拉機,因此鋤頭要死了,用鋤頭的也要死了。
鋤頭郁悶了,你用或不用,我都靜靜的在那里,不悲不喜。種地的也郁悶了,是我家地不能用鋤頭了,還是鋤頭種的糧食不能吃了?縱使一馬平川的主場,也有顧不到的田邊地角,更何況還有崎嶇的山地。縱使師資再好,北大清華也是少數,允許你3%,就不允許我97%?所以,你一開拖拉機的,爬上我這山頭,對著我的鋤頭,瞎得瑟什么呀?賣拖拉機的錢裝你兜里?你種的是糧食,我鋤頭種的就不是了?你能上我山頭,我就不能下到你山腳?
VB是生產的鋤頭,只要Windows這塊地沒變天,以前種的糧也沒壞,那就可以繼續吃,鋤頭也可繼續用。允許3%的人去開拖拉機,種更多的口糧。也允許97%的人在自留地里揮舞鋤頭種點瓜果副食。
VB在4.0就轉向Visual Basic For Application,與Office的聯姻,才是VB容顏不老的秘訣。VB6雖然沒等到7.0,但VBA卻進化到了7.0,跟著Office到了64位Win10的地界。VB、VBA和VBS之間,以及與Office32/64之間的關系,隨后會專題深入介紹,請繼續關注 BtOfficer獲取相應內容。
VB6是32位Windows上COM的語言,只要Windows擺脫不了COM、擺脫不了WIN32子系統,VB6就會無比堅定的存活下去。VB6與VC6之間的關系,VB6與C/C++的互通,32位VB與64位系統的兼容,隨后會有專題深入介紹,請繼續關注BtOfficer獲取相應內容。
VB5.0就加入了本地代碼編譯器,從某種程度上說,之后的系統無論是否原生支持,對VB而言都不再是束縛。VB6的編譯器原理,編譯器的深度使用,隨后會有專題深入介紹,請繼續關注BtOfficer獲取相應內容。
縱觀VB的歷史,從其誕生那天起,VB的使命就是要打出Windows系統特性這幅王炸牌。說VB是Windows的大家閨秀也毫不為過,VB其實就是系統附帶的生產力。VB更多的角色不是編譯器的腳本,而是充當系統的命令,直接調配資源組織生產。所以,VB的虛擬機才那么短小精悍,VB的應用才那么容易既快又準的落地。VB6的虛擬機,VB6與WIN32編程,VB6與VB.Net資源共享等,以后會有專題深入介紹,請繼續關注BtOfficer獲取相應內容。
遺憾的同時,也慶幸VB6沒有繼續走遠,成了系統身邊那個永遠不嫁的姑娘。雖然系統爸爸的勢力范圍越來越大,但最核心的,始終近在眼前。撥開安全的層層迷霧,指針、線程、繼承、內嵌匯編等一眾C的手腳,托起了那97%的任性。尤其是內嵌匯編,為VB6插上了想象的翅膀,成為VB6名副其實的免死金牌。VB6的指針、安全多線程、內嵌匯編等內容,以后會有專題深入介紹,請繼續關注BtOfficer獲取相應內容。
3%的那部分從VB這個小學畢業后,升了初中,以后還會上高中念大學。也會有更多97%的這部分不斷等著VB開學。在普通人通往程序之路上,VB就像擺渡人,接來一批又送走一批。VB存世的意義,或許就在于既普世又度人。心清腦秀者,許你3%得道升華。資歷平平者,也許你97%的凡人吃喝。
VB的世界里有自由的周全,也有刻薄的束縛。她試圖讓所有人都能踏進編程的世界,并在這個晦澀的世界里護其周全。她也總拿自由不是沒有代價來告誡使用者,知其然還要知其所以然,到遠方去才是旅游的意義。