查看: 136  |  回复: 0
VB6 COM过时不被支持了?那先干掉注册表吧!
楼主
发表于 3月21日 21:30

1、讨论VB/VBA过时已死的多,谈论COM古老已废的也多,可是带上二者一起的却屈指可数。笔者猜测无外乎以下原因:

A、VB/VBA屏蔽了大量的技术细节,诸如指针、接口等,让学习者不必为了那些晦涩的专业概念而劳心费神,正如当年的BASIC的出发点一样,人家只是为了让非理工科也能用上计算机。所以,VB/VBA里更像是如何操作计算机,讲究的是怎么做就该有什么样的效果,很少看见讲为什么。

B、COM显而易见是个专业的东西,就连专业人士都觉得过于复杂,对于广大VB/VBA们自然是难得一闻,这就导致了两极分化。非IT科班人士,就是在操作计算机,控制更加精细的那种。而IT科班人士,在里面找半圈也没找到两个正儿八经的概念,总之VB/VBA看起来过于封装,却又什么都没有,一种很奇怪的工具。

C、一个脱离计算机常规的VB/VBA,一边是无知无畏的肆意妄为,另一边则是怎么弄都没对上号的恼怒咒怨。其实,问题大部分都出在COM这里。COM这个东西,概念上弄得巨复杂,使用上却能无脑爽。因此,作为COM的输出一哥,若不深入了解COM,就很难对VB/VBA有个客观的评价(找到其应有的使用场景)。

2、很多人信誓旦旦地说,Win10以后,微软已放弃COM了,这一技术已经被全新的概念所代替。这显然是对COM一无所知的,Office作为微软的现金流担当,怎么就放弃治疗了呢?.NET里处处都有COM的影子,如何就过世了呢?

COM早就成为Win的基石之一,这样的话说了也没人信。可是你知道吗,大家熟悉的注册表,其最初就是设计用来存储COM注册信息的。不然神奇的CreateObject怎么可能通过名字就可以召唤对象?所以,要干掉COM(VB/VBA),先干掉Office、注册表再说吧。

我们知道C++中类就是实现COM的绝佳途径,那为何大家承认C++是面向对象的,却不愿意承认VB/VBA是面向对象的呢?大概因为VB/VBA中的类有点另类?貌似看不出继承多态?那是因为所谓OO工具把一切封装的太好了,以至于无法深入理解这些东西,这跟VB/VBA的使用又有什么区别吗?

只要深入理解什么是COM,所谓继承、多态简直小菜一碟。 徒手构造轻量级COM,利用VB/VBA类实现内嵌汇编、函数指针、继承等更多高级功能。


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com