为何VB/VBA不需要所谓的标准DLL?(图)

VB/VBA更注重如何使用,尤其是作为系统脚本!

前言

在《为什么VB/VBA不需要所谓的标准DLL?》中向大家介绍了什么是标准DLL,为什么VB/VBA不需要这样的标准DLL。简单来说,标准DLL就是导出指定函数的DLL,方便通过函数指针直接调用。在VB/VBA中,可以通过Declare机制进行声明和使用。但是VB/VBA远比通过COM接口的Declare方法高效灵活,所以VB/VBA不需要所谓的标准DLL。

Declare相关讨论请参考《VB/VBA的Win32API声明中你必须知道的真相》、《聊聊VB/VBA函数》、《在VB/VBA中Declare声明API时效率会提高一点点! ”…

但是VB/VBA是COM语言,编译出来的DLL本质上是ActiveXDLL,也就是说自然会有4个标准的COM导出函数,那你为什么还要强调它是不是标准的呢?网友直截了当地表示,标准的DLL并不是为了让VB/VBA方便Declare。想想其他编程语言如何调用VB/VBA的DLL?这就是今天要和大家分享的,《为什么VB/VBA不需要标准的DLL,而其他语言VB/VBA不需要标准的DLL?》。

一、为什么 VB/VBA 不需要标准的 DLL?

《为什么VB/VBA不需要所谓的标准DLL?》还讲解了COM接口的使用,在VB/VBA的IDE中,通过object+“.”,使用起来非常方便高效。从使用Dll函数的角度来看,无论是Declare还是直接使用函数指针,这是无法比拟的。

Declare 不仅需要编写自己的声明,而且还具有用于导入类的内置机制。为了避免用户直接面对函数指针,可以用一个大圆圈来形容。在VB/VBA中直接使用函数指针很方便,但是要知道怎么用,不然不会让Declare故意隐藏的。

这显然与VB/VBA的定位和用户群不符。但不管怎样,最后大家还是去找了函数指针,因为指令级认出了这个超级GOTO+行号(调用/跳转+函数地址)。

如前所述,ActiveXDLL会导出4个函数,这4个函数是使用COM对象函数的关键,也是指向函数指针的。事实上,其他语言通过导出/导入表使用DLL函数指针,与COM对象使用成员函数的机制相同,即VTable绑定。这是 VB/VBA 唯一可以与其他语言平等谈论专业性的地方,但遗憾的是,VB/VBA 仍然通过类和对象将其紧紧覆盖。

需要了解VTable相关知识点的朋友,请继续关注后续文章。VB/VBA的很多高级用法都离不开这个机制,比如函数指针的动态调用,处理C调度(调用C调度API,提供C Debug回调函数),适合IDE和编译的嵌入式汇编等。

VB/VBA的COM接口中的VTable绑定机制,既兼顾了源码编写的方便和高效(对应IDE的智能提示和自动补全),又兼顾了代码运行的高效率,与其他专业语言兼容。可比(例如 C/C++)。因此,VB/VBA 不需要所谓的标准 DLL。

二、为什么你不需要VB/VBA 的标准DLL?

1、 先问VB/VBA的鼻祖BASIC是做什么的?

事实上,从BASIC一开始,作为老师,它就专注于如何让有文科背景的人使用计算机,所以如何操作计算机是后来VB的核心基因之一。当然,这种使用并不是专业程序员的精细控制,而是更粗粒度的操作体验。早期的 BASIC 没有当前的鼠标窗口环境。这种使用方式大概和很多人心目中的黑客风格差不多吧。

如果我调整字体和背景颜色,我认为这是一个黑客在做什么!

图片[1]-为何VB/VBA不需要所谓的标准DLL?(图)-老王博客

如果你现在想得到它,它会劝阻很多人吗?但在那个年代vb程序设计简单小游戏,这可是非常亲民的,毕竟学生不用花钱买半导体专业知识让机器跑起来。后来微软加入了鼠标驱动的Windows环境,BASIC再次重生为VB/VBA。以一男一女的气势,撑起了大家对Windows的好奇,微软自然赢得了新手们的选票。,真正诠释了“胜小白胜天下”的道理!

2、又是什么 VB/VBA?

如果说MS-DOS是微软背靠IBM积累财富的量变阶段vb程序设计简单小游戏,那么VB/VBA就是微软硬着头皮与IBM分道扬镳的资本。在现在的电脑环境下,很难理解VB有这么牛。相信很多1980、1990年代进来的程序员都非常清楚那个时候编程的门槛有多高。

专业的程序员是宝藏,找不到的那种。突然一个,拖拽,三五分钟就可以从示例软件中得到一个工具,一定是爆款。不仅因为编程的种子可以在普通人的心中种下,也为后来程序员职业的繁荣做出了贡献。也是因为微软千方百计通过VB向广大白人展示Windows的优越性。

要展示系统的优越特性,哪有方便的门。时至今日,仍有不少老程序员认为微软为VB倾斜了太多资源。甚至有极端分子认为,比尔盖茨只懂BASIC,不惜修改C/C++规范,只为让VB使用C/C++库资源。虽然有点夸张,但是对于VB/VBA来说,系统的一些功能确实是用的很到位。这就是VB/VBA在Windows中根深蒂固,难以跨平台的根本原因,在Linux平台上也是类BASIC。语言很难超越VB/VBA,它没有灵魂是有原因的。

以后我们会继续分享VB/VBA如何使用系统特性,以及VB/VBA用户如何利用这些特性来提高代码性能和编写效率。欢迎关注!

VB/VBA曾经是Windows功能的演示工具,不仅有历史原因,也有历史机遇。一方面,当时BASIC的教学设计侧重于通用的人机交互。以 BASIC 起家的微软自然一清二楚。因为说到底,再厉害的技术和机器,都得为人服务。另一方面,在IBM背靠的十几年里,BASIC不仅为微软绘制出了市场的真实需求(痛点),也为微软培养了无数的BASCI粉丝。所以,在微软和IBM分道扬镳的时候,具有通用性(windows+鼠标)的VB自然占了上风,并随着Windows的不断完善而不断完善。

其实这是一个相互成就的过程,而不是微软一心一意偏爱VB。虽然今天的VB/VBA确实老了,但不可否认的是,VB/VBA是真正的武侠精髓。这是一个不深入 Windows 和 VB 就无法理解的真理。

“什么是脚本语言?为什么VBA不是脚本语言?”是VB的冰山一角。更多背景知识,可以阅读《以史为鉴,编程语言,天启系统觉醒》和《VB前传,从教学到游戏到系统,似乎每一步都经过精心设计》等文章。

VB/VBA作为一种与系统一起成长的可视化编程工具,是历史遗留下来的,前所未见,后无来者。笔者之所以强烈推荐那些没有太多精力,但又想通过编程提高效率的专业人士,学习VB/VBA,其实是对VB/VBA这个系统功能的粘合能力感兴趣。VB/VBA 是 Win 上最强的胶水语言!

3、为什么你不需要一个用于 VB/VBA 的标准 DLL?

了解了VB/VBA的背景之后,自然就明白为什么不需要VB/VBA来制作所谓的标准DLL了。如前所述,VB/VBA 本身对标准 DLL 没有必不可少的要求。大家都怪VB/VBA不能输出标准的DLL,可能是因为其他编程工具使用函数指针来使用VB/VBA编译的DLL函数。时间,它不起作用!

这个原因,其实在前面的VTable关键字附近已经有答案了。我不知道如何调用 ActiveXDLL 中的函数。更重要的是,VB/VBA可以在编译时导出函数。不过笔者会认为VB/VBA的标准DLL会跟市场反应一样,没有人需要。

VB/VBA作为一个具有系统特性的表演者,只是一个看食物吃东西的家伙。一切都只是工具。拼凑是她的能力。它保留了多种代码执行模式。它不仅可以作为命令行的终极宿主执行各种系统命令,还可以在代码海中随机抽取并逐句执行,可以直接执行指定的机器命令。不仅面向过程,而且面向对象,功能更强大。不仅用作脚本,自动化,轻代码,做鲜花的好使者,还可以独立编译走江湖。不仅是编译器语句库,还有内置函数、系统和非系统 API 的修饰。它们不仅是所谓的标准 DLL 的朋友,而且还是 COM 的朋友。

用过的人都知道VB/VBA在语句和内建函数中的封装性不高,在IDE中甚至无法实现代码折叠。一方面,VB/VBA易上手好用,另一方面,VB/VBA很难掌握。因此,她注定无法离开自己在代码流水线上的位置。

以胶水作为函数,自然而然地用广为人知的 Python 作为类比。Python的强大在于其丰富的库资源和她的匹配能力。然而,有多少是直接用 Python 来干轮子的呢?道理是一样的,VB/VBA善于利用系统中的各种资源,而不是制造资源。VB/VBA在使用中的安全性和包容性,都是基于资源的使用。VB/VBA的编译器(解释器)里塞满了大量专业人士嗤之以鼻的模板化指令,也就是说VB/VBA不是为了轮子,她是轮子的使用者!

原因还是一样,这个产品做的轮子不是很好!虽然可以通过手术进行二次加工,使其更加优化,但它已经摆脱了VB/VBA的高效率和低风险错误。所以,其他语言VB/VBA不需要标准的DLL,而VB/VBA也不打算提供标准的DLL,就这么简单!

欢迎关注BtOfficer(收藏、点赞、关注+转发),更多精彩还在进行中(栏目会更系统全面,但需要你的支持),有正经技术,有轻松闲聊,期待您的加入!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论