百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

早判了,VB已死,但我说话了么?

yuyutoo 2025-02-15 18:03 5 浏览 0 评论

前言

一直想写VB相关的内容,把实践过的感悟总结成文,分享给更多在途的朋友。本篇在《明比阅历浅,暗拼体力衰,指下讲武德,码上笑春风 》的铺排下,终于等来了这个时机。前篇为广大非IT人士开启IT之路提供了务实的指引,此篇则更深入介绍其中的途径。这让人有点兴奋,又有点紧张。兴奋的是,这么多经验可让人少些浮躁,多干实事,少走弯路。紧张的是,怕不够客观,误人入了歧途。

一、细数VB几宗罪

那就拟扬先挫吧,兼听则明,偏信则暗嘛。正视自己的短处,才能扬长避短。若是无法接受,提早打住,另谋出处,也未尝不是件好事。

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的过往

这么一数落,似乎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(以下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的好坏和前途,跟你我有半毛钱关系?这是一个关于名为VB软件后续升级的讨价还价。不升级就死掉了么?就像用锄头和拖拉机种地,别人说锄头变不了拖拉机,因此锄头要死了,用锄头的也要死了。

锄头郁闷了,你用或不用,我都静静的在那里,不悲不喜。种地的也郁闷了,是我家地不能用锄头了,还是锄头种的粮食不能吃了?纵使一马平川的主场,也有顾不到的田边地角,更何况还有崎岖的山地。纵使师资再好,北大清华也是少数,允许你3%,就不允许我97%?所以,你一开拖拉机的,爬上我这山头,对着我的锄头,瞎得瑟什么呀?卖拖拉机的钱装你兜里?你种的是粮食,我锄头种的就不是了?你能上我山头,我就不能下到你山脚?

VB是生产的锄头,只要Windows这块地没变天,以前种的粮也没坏,那就可以继续吃,锄头也可继续用。允许3%的人去开拖拉机,种更多的口粮。也允许97%的人在自留地里挥舞锄头种点瓜果副食。

四、VB的免死金牌

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获取相应内容。

五、VB的生命之光

3%的那部分从VB这个小学毕业后,升了初中,以后还会上高中念大学。也会有更多97%的这部分不断等着VB开学。在普通人通往程序之路上,VB就像摆渡人,接来一批又送走一批。VB存世的意义,或许就在于既普世又度人。心清脑秀者,许你3%得道升华。资历平平者,也许你97%的凡人吃喝。

VB的世界里有自由的周全,也有刻薄的束缚。她试图让所有人都能踏进编程的世界,并在这个晦涩的世界里护其周全。她也总拿自由不是没有代价来告诫使用者,知其然还要知其所以然,到远方去才是旅游的意义。

相关推荐

墨尔本一华裔男子与亚裔男子分别失踪数日 警方寻人

中新网5月15日电据澳洲新快网报道,据澳大利亚维州警察局网站消息,22岁的华裔男子邓跃(Yue‘Peter’Deng,音译)失踪已6天,维州警方于当地时间13日发布寻人通告,寻求公众协助寻找邓跃。华...

网络交友须谨慎!美国犹他州一男子因涉嫌杀害女网友被捕

伊森·洪克斯克(图源网络,侵删)据美国广播公司(ABC)25日报道,美国犹他州一名男子于24日因涉嫌谋杀被捕。警方表示,这名男子主动告知警局,称其杀害了一名在网络交友软件上认识的25岁女子。雷顿警...

一课译词:来龙去脉(来龙去脉 的意思解释)

Mountainranges[Photo/SIPA]“来龙去脉”,汉语成语,本指山脉的走势和去向,现比喻一件事的前因后果(causeandeffectofanevent),可以翻译为“i...

高考重要考点:range(range高考用法)

range可以用作动词,也可以用作名词,含义特别多,在阅读理解中出现的频率很高,还经常作为完形填空的选项,而且在作文中使用是非常好的高级词汇。...

C++20 Ranges:现代范围操作(现代c++白皮书)

1.引言:C++20Ranges库简介C++20引入的Ranges库是C++标准库的重要更新,旨在提供更现代化、表达力更强的方式来处理数据序列(范围,range)。Ranges库基于...

学习VBA,报表做到飞 第二章 数组 2.4 Filter函数

第二章数组2.4Filter函数Filter函数功能与autofilter函数类似,它对一个一维数组进行筛选,返回一个从0开始的数组。...

VBA学习笔记:数组:数组相关函数—Split,Join

Split拆分字符串函数,语法Split(expression,字符,Limit,compare),第1参数为必写,后面3个参数都是可选项。Expression为需要拆分的数据,“字符”就是以哪个字...

VBA如何自定义序列,学会这些方法,让你工作更轻松

No.1在Excel中,自定义序列是一种快速填表机制,如何有效地利用这个方法,可以大大增加工作效率。通常在操作工作表的时候,可能会输入一些很有序的序列,如果一一录入就显得十分笨拙。Excel给出了一种...

Excel VBA入门教程1.3 数组基础(vba数组详解)

1.3数组使用数组和对象时,也要声明,这里说下数组的声明:'确定范围的数组,可以存储b-a+1个数,a、b为整数Dim数组名称(aTob)As数据类型Dimarr...

远程网络调试工具百宝箱-MobaXterm

MobaXterm是一个功能强大的远程网络工具百宝箱,它将所有重要的远程网络工具(SSH、Telnet、X11、RDP、VNC、FTP、MOSH、Serial等)和Unix命令(bash、ls、cat...

AREX:携程新一代自动化回归测试工具的设计与实现

一、背景随着携程机票BU业务规模的不断提高,业务系统日趋复杂,各种问题和挑战也随之而来。对于研发测试团队,面临着各种效能困境,包括业务复杂度高、数据构造工作量大、回归测试全量回归、沟通成本高、测试用例...

Windows、Android、IOS、Web自动化工具选择策略

Windows平台中应用UI自动化测试解决方案AutoIT是开源工具,该工具识别windows的标准控件效果不错,但是当它遇到应用中非标准控件定义的UI元素时往往就无能为力了,这个时候选择silkte...

python自动化工具:pywinauto(python快速上手 自动化)

简介Pywinauto是完全由Python构建的一个模块,可以用于自动化Windows上的GUI应用程序。同时,它支持鼠标、键盘操作,在元素控件树较复杂的界面,可以辅助我们完成自动化操作。我在...

时下最火的 Airtest 如何测试手机 APP?

引言Airtest是网易出品的一款基于图像识别的自动化测试工具,主要应用在手机APP和游戏的测试。一旦使用了这个工具进行APP的自动化,你就会发现自动化测试原来是如此简单!!连接手机要进行...

【推荐】7个最强Appium替代工具,移动App自动化测试必备!

在移动应用开发日益火爆的今天,自动化测试成为了确保应用质量和用户体验的关键环节。Appium作为一款广泛应用的移动应用自动化测试工具,为测试人员所熟知。然而,在不同的测试场景和需求下,还有许多其他优...

取消回复欢迎 发表评论: