前言

语言之争,向来肤浅,却又总是让人津津乐道。计算机的硬件不仅遵循着摩尔定律,软件更可谓是日新月异啊。5年便可以划分一个时代出来,更别提上世纪60年代以来的技术了,半个多世纪,是人也都老了,更何况软件技术,考古才堪描述。所以,就连C一类的工具都一度被人标榜为过时的象征,更何况VB/VBA了。

对于高级开发工具,推陈出新是一种必然,不同的场景需要不同的工具。随着商业边界的扩张,头部工具集团内部,又演化出一个又一个的框架。这些框架,其实就是一个个新的开发工具。以前那种百家争鸣的时代,一去不返了!在这种新的格局里,古时候留下的遗产,是否真的没有用武之地了呢?这便是本篇要讨论的。

上篇说Python不太可能替代掉VBA,结果有朋友不太高兴了,说争论这些没意义。的确如此,不过众口铄金,谣言传久了,就跟真的一样。Python作为跨平台胶水,自有其用处。尽管丰富的轮子可以让小白们不费吹灰之力体验一把数据分析,但让Python真正具有生产力,绝对有一道绕不过的专业门槛。Python的门槛从来不在语法层面,Python的锋利也从来不在经典的桌面问题上,更别提要废掉VBA了。为了给广大非IT专业人士树立一个客观的选择环境,将有关争论的核心理出来,以正视听吧。

谣言不一定止步于智者,骗子都是聪明人

在下,并非VB系的培训卖课者,只是一个恰好对VB系有一定了解的安全工作者。从专业实践的角度,VB系的工具的确适合非专业人士在编程道路上进行拓荒!这是笔者N年编码的忠告。既然如此,就不能把大家往坑里面带。写此文只不过,想回到这样的理念:要想做好产品,往往在适合的场景使用适合的工具,让工具回归其主场,才是最优的技术路线。当然,还有个前提,是使用者对各个主场的工具都熟悉,否则熟悉的才是可靠的。

一、VBA终归是没死成

尽管VBA与VB同属1个技术阵营,但毕竟隔了一道,VBA充其量背上过时和不好用的罪名,而VB要背负的就惨多了。因为VBA被替代的谣言,很容易被Office实锤。而Office的二开体系,本来又很完善,无论是专业的还是业余的样样都齐全,犯不着自己跟自己斗狠,毕竟各有各的场景。VBA跟着Office,又获得了平滑升级,看来是要与Windows同寿了。

微软说从未提供64位VB的IDE,然而...

二、VB之死,何时休?

既然VBA稳如磐石,那动摇VB总可以吧,毕竟还有那么大的市场份额摆着呢,毕竟VB太老了很难说与时俱进,毕竟有那么多新工具得找个地方坐下来,毕竟VB之流实力最弱...,于是从VB6到VB.NET,各种死法被祭上台面,下面就来一一回顾VB之死吧。

抢食,当然得从软的捏啦!

VB6,这款自1991年发行的桌面开发工具,一经发行便大受欢迎,也曾是红透半边天的存在。但是它太成功了,很快就将编程的门槛降到玩具水平。大量小学生、高中生、文职人员纷纷加入开发者队列,成为VB6的绝对用户群。甚至可以夸张地说,会开关机电脑,就会VB编程。

这让很多专业程序员大为光火,明明啥也不懂,却操纵着各色复杂的配件,组装出奇丑无比却可以工作的程序。关键是,他们还自称程序员,简直欺人太甚。我等寒窗十年,考取计算机专业,专攻数载春秋,亲历大小项目数十个,也不敢妄称为工程师。他们录制宏、抄下代码,前后不过数十秒,何德何能啊!一定要鄙视他们,一定要异化他们,一定要排斥他们...

吃了奶的劲也搞不定COM,他们却在无知

1、借VB.NET打击VB6,拿到VB6的FirstBlood

VB.NET肿么回事?排名还那么靠前,微软还在支持...,停,停!VB.NET可是高级货,高中生怎么用的来?原来是VB6,考古下,原来是20世纪的产物,早就被VB.NET取代了。为此不惜给出VB6为经典VB的称号,微软为对抗JAVA不得不放弃VB6而转向.NET。经典VB止步上世纪末,新世纪的钟声未能复活昔日的巨星,经典VB落下帷幕,致敬!

排名里再无VB6,VB的江湖那都是VB.NET。要想继续VB6的风格和情怀,请出门.NET。人往高处走,水往低处流,大势所趋的,都是一个方向,你见过VB6升级到.NET,但你见过VB.NET能回滚到VB6的么?这就是趋势!VB6的存在,就是在开历史的倒车,终究会被滚滚洪流碾压得魂飞魄散!谁不愿意一招鲜吃遍天,三板斧论天下?谁愿意学没有未来的东西?所以,VB6请颤抖吧!

然而,VB6与VB.NET的名字里虽然都有VB,甚至很多专业人士只将VB.NET视为VB(防止降低档次),但后者的确与VB6是两个事物。我们知道.NET是为对抗JAVA的,而JAVA当时的主战场是网络应用,.NET自然也是瞄准这个领域的。而VB1到VB6,一直都是Windows特色的表达者,所以二者的基因都不同,何来替代一说呢。结果嘛,就大家该干嘛干嘛,VB6继续在不同手法的人中,或高级,或低劣地舞动着。这一晃,10年过去了,VB6早已获得了"打不死的小强"称号。VB.NET和C#并驾齐驱,继续对抗着越来越强大的JAVA。

2、VB6IDE停更,VB6再送人头,只是很难修饰为DoubleKill

时间来到了新世纪的08年4月8日,对于很多厌恶VB的人来说,太令人振奋了,因为微软终于官宣停止支持了。数年的预言得以验证,充分彰显了技术见解的独到和深刻,这可不是什么马后炮啊,这可是堵上了专业权威和信用的。结果可能会迟到,但不会缺席,正所谓不是不报时候未到啊,兄弟们!于是,坊间VB6的社死,被钉在了2008年4月8日这一天!这个事件,后来不断被人引用,终成典故!这年头,都2021年了,还有人吹捧VB呢?死十几年了都,Python不香么!

就连笔者也曾深信不疑,对于VB6仍可用的现象,则简单粗暴地解释为,毕竟是比尔盖茨的亲儿子啊,面子还是要留滴!随着对X86兴趣的陡增,突然想看看微软系的产品。这一看不打紧啊,VB6社死的谣言不小心给戳破了。2008年的那个典故,原来是对VB6的IDE停止更新支持,并非对VB6停止更新支持。还以为多大回事,VB6的IDE,写VB代码足矣!大家也看到了,VB6该干嘛继续干嘛。

VB.NET假借VB6的名头,将自己打扮得很像VB6,企图招安广大VB6的开发者,然而这就是一出经典的,隔行如隔山,专业不懂非专业的苦。VB6早已是穷苦百姓当家做主的枪杆子,过惯了粗茶淡饭那样简单可靠的生活,至于VB.NET的天堂福地,懒得去追求了。事实证明,VB.NET为了招安VB6,给VB6提供了大量的可用资源。这就是为什么笔者曾说,与JAVA对抗的战场,早有VB的兄弟去做了,VB退居幕后确保江湖仍有传说便足矣!

3、VB6SP6面世,VB6之死终遭疑

转眼又过去了4年,时间来到2012年8月,Visual Basic 6.0 Service Pack 6 出来了,不仅解决之前累计的各项问题,更解决了32位与64位之间的兼容问题。这可是Office2010面世2年后,才出来的汇总更新。VB6与VBA之间关系,在之前的文章《早判了,VB已死,但我说话了么?》已有所提及。Office2010又是首个32位与64位版本,这下热闹了,VB6不死,也成了很多业余人士的坚定信仰和心头爱!

很多人开始质疑那些说VB过时的言论,越来越多的证据表明,真正专业人士反而不屑于参与这样的讨论。参与讨论的,几乎清一色与培训机构有关,不是培训机构的从业人员,就是从培训机构出来的学员!

VB6的基因里就带有教育用途(可参考《VB前传,从教学到游戏,再到系统,似乎每步都是精心设计》),国内外广泛用于计算机教学,尤其是作为非计算机专业的计算机课程。这是让培训机构没饭吃的节奏啊,所以他们得想法子。

当VB.NET出来的时候,他们鼓吹VB.NET的天生不同,与其兼容恶梦,还不如从头VB.NET或C#。当VB.NET解决了VB6项目的升级问题后,他们继续鼓吹升级的单向性,全然不理VB6也可以使用.NET的资源。当Python在AI中大放异彩后,下一代全能且不掉头发的语言顺势诞生了。他们对VBA颐指气使,对VB更是嗤之以鼻,到处播散Python才是人类的未来!其实,这都是换汤不换药的老调门!

4、VB.NET迎来命运的审判,VB6还会远吗?

在这场旷日持久的口水战中,VB/VBA坚挺到了2020年,Windows也来到了Win10的天下。只不过,JAVA更加强大了,移动互联网不断威胁着传统PC市场。跨平台,全面成为面向对象以来,新的时髦儿!这一年的3月份,微软的.NET 团队在《Visual Basic support planned for .NET 5.0》中,提到了被视为VB.NET的命运的信息。

没错,就是这段!

VB.NET以其作妖的姿态,丢失了VB6群体的好感。当视窗可视化编程不再是VB6的专长时,专业人员迅速投靠了C# 。终于让微软意识到,要对抗已是巨人的JAVA,维护两套一样的东西太过浪费了。于是,哀鸿之声再度响起!很多人都不愿再提及的VB6,行将就木似乎真的板上钉钉了。

不得不承认,JAVA开启的时代,重塑了整个编码生态。前手恰恰是VB6这类工具完成了历史使命,使用计算机的门槛早已低到地平面,编程不再是使用计算机的唯一途径,而是成为一部分职业者的生计。分工的发展需要这样,让更专业的人做专业的事,而商业会让分工走向垄断。再造JAVA、C/C++、Python一类的,都是痴人说梦罢了。

精简指令的代表ARM,性能越来越强劲,也越来越费电。谁会弱水三千而只取一瓢饮呢?VB6退出专业市场,也就在所难免。然而,毕竟VB6和VB.NET是两个完全不同的物种,众多VB6们被一道无形的高墙挡在了专业开发工具的外面。只要Win10/11上继续可以写VB6/VBA代码,VB.NET是死是活,又有什么关系,反正从来没去过!微软与JAVA之间的跨平台战斗,哪怕昏天暗地,只要在Windows上,更甚至在Office里,能阳光灿烂,我管他呢!

三、VB6之光,在于微软内核的千锤百炼

对于有一定拓荒经验的VB/VBA们,说不想知道技术前景的,都是假话。越老越吃香,投入的保值增值,是世人普遍愿意尊奉的价值哲学。在面对32位转向64位的过程中,有太多可以蛊惑人心的东西。

1、VBA跨过去了,可是VB6没有啊

当大家心情忐忑地装上64位Office后,ALT+F11后,那个经典的VBE窗口欢快地跳出来了,试一试录制宏,还是熟悉的味道。这让悬着的心,终于放下来了。对VBA有深度了解的,会发现32位时代的VBE6.DLL,已经是VBE7.DLL了。也就是说VBA版本已经从32位时代的6升级到了64位时代的7,VBA得到升级了。

都说VB/VBA是一家,既然VBA都升级了,VB6会不会也悄悄升级了呢?搜寻一番,Nothing!在2012年8月后,也没有后继更新推送,看来VB6的确没有升级。终于在2021年3月,微软在回复大家关切的VB6生命周期问题时,写到:

还是IDE的事,跟VB6程序没有半毛钱关系

这下可以确定,微软官方目前为止还没有提供64位版本的VB6编辑器,之后也不会再提供。有什么影响呢?反正VB/VBA们不会拿VB6的IDE去写C之类的,专用编码工具,不挺好么!信誓旦旦地宣称不支持扩展更新,一大帮人还不需要呢!

但是,真正影响在于,VB6无法编译出X86-64位指令的EXE/DLL/OCX,只能停留在32位。不能充分利用64位CPU,的确是一大遗憾,但这不代表着VB6无法继续工作。下图便是微软给出的,对VB6的支持情况:

谁TM说VB6死好久了?

一个IDE的停止更新,竟然引来如此多的是非混淆,不禁让人感叹,江湖不易啊!处心积虑抹黑VB/VBA的人们,你们辛苦啦!

2、VB6跨不跨过32位,有什么关系!

32位时代,是X86缔造帝国的时代,是Wintel联盟生态结晶的时代,其重心至今都在32位。还记得《32位的Win是可以使用4G以上大内存的,别再瞎传了!》吗?今天的所谓64位,也不过是扩展到了48位而已。Intel曾经意气风发地出了全新的64位CPU,但很快就被X86生态给抛弃了。

不了解X86,就很难解释32位生态在64位上的过渡,也很难解释VB6强大的生命力。X86才是VB6不死的坚强后盾,而在X86最好的年华里,VB早已在微软的千锤百炼之下,变得健壮无比。还记得,当初VB是如何宣传Windows的么?这些基于系统最底层的东西,一直都是那么稳定!VB若要死,也是Windows要死的时候。

至于32位与64位之间的恩怨情仇,早已有成熟的解决方案,这便是WOW。虽然都叫仿真环境,但跟ARM版Windows导入Win32生态不同,32位程序在64位CPU上,都是使用真实的硬件。微软都说了,性能几乎没有损失。看到了没?VB6只不过不用64位指针而已,也仅此而已,人家说了VB6不能使用64位资源了么?说了在64位上就是孤家寡人了么?

要理解这些,就得回到X86的体系上来,自从1976年的8086以来,X86指令体系就一直处于可兼容的扩展之中,这是其被称为复杂指令集的根本原因之一。新的需求,用新的硬件扩展,旧的仍然被保留。好处自然是强大的兼容,坏处是更新设计越来越困难。为何复杂指令集的CPU那么贵,是有道理的。

再回到VB6的COM属性上,COM是二进制级别的重用实现,其接口设计的哲学,像极了X86的指令体系,一旦暴露1个接口,便会确保其稳定性,不重构已有的接口,是COM最起码的职业操守。Windows的生态便会源源不断地在COM上面繁衍生息,无论是曾经的OLE,还是后来的ActiveX,无论是曾经的VB,还是现在的.NET,Windows早已离不开COM,这些都是VB6取之不尽用之不竭的生命源力。

只要还能CreateObject,江湖里VB的传说就仍将继续!

欢迎支持和关注BtOfficer,吵完这一架,让我们安安心心地继续VB/VBA未完的故事吧!

VB/VBA之死,何时休?相关推荐

  1. VB/VBA,请让我点名表扬你

    前言 本不想再刻意强调VB什么,怕说多了,成了误导.用与不用,其实都无需解释.但,既然在<互联的围城,已春暖花开,我却心向罗盘荒野 >中给了大家学习内化的承诺,又在<明比阅历浅,暗拼 ...

  2. Python取代VB/VBA,弄了个寂寞!

    谣言终于实践,而不一定终于智者! 1.最近一直比较忙,系列文章迟迟未开工,索性抽个小空弄些VB/VBA人士关心的几个争论,算是辟个谣吧.这年头,好酒也怕巷子深,谣言也粉上智者了.但是,毛主席说,实践是 ...

  3. VB/VBA的整数,你真的了解?

    前言 经过<VB的任性,从Variant开始 >.<变量,还有这些秘密 >和<VB的天地,横看成岭侧成峰 >的铺垫,似乎可以隐隐约约地感觉,VB变量背后肯定不是平常 ...

  4. VB/VBA中实现数据库与文件的存取

    编程完成数据库与文件的数据相互存取 'VB/VBA中实现数据库中的文件存取 '示例数据库为ACCESS数据库,用SQL数据库的话,只需要改连接字符串 ' '********************** ...

  5. opc client for php,使用vb/vba作为OPC client

    使用vba/vb做client可以使opc的访问变得简单,以下是基于excel的简单opc client代码: Option Explicit Public WithEvents MyOPCSvr A ...

  6. VB / VBA 自制二维码小工具

    现在二维码的使用越来越广泛了,广告.网址等等都用上了 从网上找了一个二维码的控件,自己做了个小工具. 二维码可以把一串字符,不管长短(没试过最长能多长),做成二维码图片 现在的的智能手机软件很多都有扫 ...

  7. VB VBA VBS有什么区别?

    VB和VBA本就是同宗的姐妹,只不过姐姐VB的功夫要比妹妹VBA历害些.不过姐姐只会单打独斗是女强人:妹妹却只会傍大款(例如Office).姐姐有生育能力,是真正的女人:妹妹却不会生崽(生成.EXE) ...

  8. VB.net是个弥天大谎,VB.net已死(海康威视 SDK 开发有感)

    这几天用海康威视的 SDK 开发个抓图工具,因为要求要 VS2013 ,就搞了一个来装上,发现 SDK 里面只有 java 和 C# 的 Demo ,没有 VB.net 的,起初还有点担心,因为我只熟 ...

  9. VB/VBA的变量,竟还有这些秘密

    1.变量的意义 任何一门高级开发语言,都离不开变量.通过变量,编程语言才能搬运和表达我们的小心思.变量是机器指令语义化的第一步,却是高级开发语言进化的一大步. 2.变量的起源 在计算机编年史里的蛮荒时 ...

  10. VB 程序大揭秘(转载)用VB的不得不看的好东西!

    http://cnprogram.myrice.com/article/vb/vb396.html 程联盟--技术文章 VB 程序大揭秘 1.Visual Basic程序概况 我用W32Dasm(Ve ...

最新文章

  1. python的动态性以及 使用__slots__
  2. Kali Linux 安全渗透教程第五更1.4 安装Kali Linux
  3. ssh错误 server not ready for puppeth err=“ssh: handshake failed: ssh: unable to authenticate... 解决方法
  4. 忘记Oracle中System和Sys密码的解决办法
  5. linux常见面试题
  6. 最新综述:用于文本分类的数据增强方法
  7. 如何理解Nginx, WSGI, Flask之间的关系
  8. 大话数据结构 :排序
  9. uniapp怎么引入css_CSS 三种基础选择器
  10. 如何备份及恢复 Linux 文件权限
  11. 谋而后动:解读数仓计划生成中行数估算和路径生成的奥秘
  12. linux 网络定时断链,客户端连接linux经常间隔性断开链接
  13. 下载文件扩展名php,[宜配屋]听图阁
  14. C# 启动与停止进程
  15. 由0.1+0.2-0.3不等于0说起
  16. spring事务失效二:业务代码捕获异常
  17. 抗癌中草药彩色图谱——西洋参
  18. 考研-数学经验贴(总结)
  19. 峨眉山徒步休闲三日游攻略内附详细时间
  20. 移动设备管理与OMA DM 协议 V5(3)

热门文章

  1. 网际风全推数据接口_网际风千钧版 飞狐配套全推接口最新版(2013年5月10更新)...
  2. 巴特沃斯、切比雪夫、贝塞尔滤波器详解:(区别,特点,电路图)
  3. N卡驱动版本与NVCUDA驱动版本和CUDA toolkit的关系
  4. mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询
  5. html选择日期选择器
  6. dirent.h和dirent.c下载
  7. 巴菲特致股东的信pdf_2020年巴菲特致股东的信
  8. 多台欧姆龙PLC通过智能网关实现HTTP协议对接MES系统
  9. 主板诊断卡的使用方法视频教程
  10. 【0.96OLED屏幕】原理图及SSD1306引脚功能