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

VB 不应该是这副模样出现的更多相关文章

  1. Git哲学与使用

    -- 故国神游,多情应笑我,早生华发. Git是什么? Git是一个版本控制工具,代码管理工具,团队协作工具.它跟SVN等传统工具实现同样的目的:但从某种程度来说,它更快,更灵活.我想绝大多数读者都已 ...

  2. https原理通俗了解

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...

  3. Java课程寒假之回答问题:如何将你的兴趣化为可以立足于社会的资本

    在学校的时候干过几次兼职,算是无聊时候的外快吧,有一次是去辅导机构,在考试期间监考学生,前后大概四个小时,最后拿了四十五并且管了一顿饭,不得不说,小学生是真的皮,考试的时候有的爱讲话,有的是写完之后开 ...

  4. “AS3.0高级动画编程”学习:第二章转向行为(上)

    因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) 原作者:菩提树下的 ...

  5. 如果这样来理解HTTPS,一篇就够了!

    1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...

  6. Vue 2.5 发布了:15篇前端热文回看

    Vue 2.5 发布了:15篇前端热文回看 2017-11-02 前端大全 (点击上方公众号,可快速关注) 本文精选了「前端大全」2017 年 10 月的 15 篇热门文章.其中有职场分享.技术分享和 ...

  7. HTTPS理解

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过 ...

  8. 这样理解 HTTPS 更容易(Maybe)

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过 ...

  9. 也许,这样理解HTTPS更容易

    http://kb.cnblogs.com/page/563885/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文 ...

  10. 也许,这样理解HTTPS更容易(今天看到的, 对https总结最好的一篇)

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...

随机推荐

  1. PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(二)

    作为"贴代码"力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服!下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里 ...

  2. 填坑 CentOS7 使用 Python3 安装 Cython 编写扩展

    前文参见 <CentOS 7 下通过 Cython 编写 python 扩展>, 用的是 Python2.7,本文用的是 Python3.6 yum install python3 pyt ...

  3. 谷歌浏览器页面乱码问题在浏览器端解决,charset下载安装;

    一   下载插件(百度网盘) 链接:https://pan.baidu.com/s/1o9Zuo2m 密码:rrcz 二    将下载好的插件拖到谷歌浏览器中 三    如果谷歌浏览器右下角出现如下图 ...

  4. USB 同步字段中高速同步字段和低速全速同步字段的区别

    USB(Universal Serial Bus)有几种不同的传输模式:低速(Low-Speed).全速(Full-Speed).高速(High-Speed)和超级速度(SuperSpeed).同步字 ...

  5. CF1659 Codeforces Round #782 (Div. 2) 题解

    之前说过的题解,E应该不会补了(大概) A Red Versus Blue 题意非常简单,构造题.给定\(r\)个红色气球和\(b\)个蓝色气球,将它们排成一排,要求使得连续出现的最多的同色气球最少, ...

  6. 标准库之 datetime和time 模块

    一.time 模块 time模块是Python标准库中最基础.最常用的模块之一.它提供了各种处理时间的方法和函数,如获取当前时间.格式化时间.计算时间差等.time模块大部分函数的底层实现是 C 语言 ...

  7. for 和双重 for 的区别?

    1. 内层的循环可以看作外层循环的语句 2. 外层循环执行 1 次 ,内层循环执行全部

  8. 5.flask 源码解析:请求

    目录 一.flask 源码解析:请求 1.1 简介 1.2 请求 Flask 源码分析完整教程目录:https://www.cnblogs.com/nickchen121/p/14763457.htm ...

  9. Linux查看CPU核数

    **方法一:通过proc文件系统 获取cpu总数量 命令如下 ** cat /proc/cpuinfo |grep processor 方法二:nproc命令 nproc 方法三:lscpu 显示CP ...

  10. linux环境nginx配置记录

    nginx环境安装 1.联网下载 pcre压缩包 解压压缩文件使用命令 tar –xvf pcre-8.37.tar.gz ./configure 完成后,回到 pcre 目录下执行 make,最后执 ...