和同时代的其它语言比,VB 设计的太烂了,应景之作,充满了各种小聪明。
当时有 JS, 有 python,VB 的设计者不懂参考借鉴,给出的是一个连继承都没有的设计。
VB 的语言设计问题极多,
- 首选当推没有继承。一个没有继承的语言能干什么呢?缺乏继承,没有包管理,注定它不能走多远。同时代的 JS 都有漂亮而容易实现的 prototype 继承,其它语言也各有特色,VB 可以说起步就落后。
- 没有继承,因此也没有单根 Object。在多重继承还是单根继承的年代,争议倒是没有了,但没有明智的判断也就没有了优势
- 靠 Variant 混合值类型和对象类型,导致大量函数参数类型不明
- 大量依赖语句,继承了BASIC的语句,比如MID语句、文件语句等等
- 没有结构化错误处理机制。
- 默认成员导致大量歧义。默认成员这种小聪明理论上很难行得通。
- 数组和函数共用括号 ()
- Sub Function 两种过程,SubName args 调用形式存在歧义:
a (b), c
,你不知道是a(b)(Missing, c)
还是a((b),c)
- Property Get Property Let Property Set
当然,VB也有好的设计,比如WITH。但总体来说这就是一个应景之作,理念不通透,充满了各种投机取巧,和 Java, JS 甚至 python 比都不在一个时代,属于 80 年代的遗迹。
商业公司包装的很好的东西,市面上很流行的东西,不见得就好。
当年如果 VJ 不受诉讼影响继续发展,对于微软来说应该是更光明的场景吧。
另一方面,如果 VB 当时不理睬公司部署去适应 .NET 平台,而是利用自身市场优势,快速梳理迭代,扬弃旧时代的特征,纳入更透彻的理念,可能也可以存活的很好。毕竟当时Java生态也不成熟,浏览器还有 VBS,大有可为。