zoukankan      html  css  js  c++  java
  • VB 不应该是这副模样出现

    和同时代的其它语言比,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,大有可为。

  • 相关阅读:
    C++操作Kafka使用Protobuf进行跨语言数据交互
    聊聊Disruptor 和 Aeron 这两个开源库
    DTrace arg0-kernel mode and arg1-user mode
    top
    how to write your first linux device driver
    how to compile and replace ubuntu kernel
    linux du
    c++ rvo vs std::move
    【Android】wifi开发
    无线局域网络 WIFI/WAPI/WLAN区别浅析
  • 原文地址:https://www.cnblogs.com/inshua/p/13970984.html
Copyright © 2011-2022 走看看