和同时代的其它语言比,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. Java日期时间API系列32-----Jdk8中java.time包中的新的日期时间API类应用,时间工具包 xk-time 1.0.0 版本完成。

    从Java日期时间API系列第一篇博客开始,利用业余时间对Java日期时间API源码进行了系统的.多次的阅读实践,包括Date.LocalDate.LocalDateTime.LocalTime.In ...

  2. element设置table某个列的样式

    <el-table style="width: 100%;" height="250" :data="tableData" borde ...

  3. 多平台文章同步浏览器插件 – ArticleSync

    ArticleSync - 多平台文章同步插件 ArticleSync 是一个浏览器扩展,帮助用户轻松将文章同步发布到多个社交平台.支持将文章从本地草稿发布到各大平台,如知乎.Bilibili 等.它 ...

  4. python项目实战——一元线性回归预测模型

    文章目录 1.一元线性回归简介 2.环境准备 3.数据准备 4.可视化数据 5.构建线性回归模型 在数据科学领域,预测分析是一项核心技能.一元线性回归作为预测分析的基石,能够帮助我们理解一个自变量如何 ...

  5. 工作中的技术总结_ form表单的前后台交互 _20210825

    工作中的技术总结_ form表单的前后台交互 _20210825 在项目经常会使用 form 表单 进行数据的 页面展示 以及数据的 提交和后台处理 1.数据是怎么从后台传递到前台的 model.ad ...

  6. Python随笔之英雄联盟皮肤、炫彩爬取练习

    翻了网上爬皮肤的帖子,很多都是爬英雄的皮肤,没有获取到炫彩皮肤的文件 以下代码就是先获取所有的英雄id,再拼接成新的链接再遍历 把获取到的数据保存CSV文件到本地 (之前从事过游戏账号交易行业,还有很 ...

  7. Python爬虫基本库

    3 基本库的使用 1)使用 urllib 是python内置的HTTP请求库,包含request.error.parse.robotparser urlopen() urllib.request.ur ...

  8. python的迭代器和生成器?

    python中的迭代器和生成器都是用来处理数据序列的. 迭代器 迭代器是一个可以记住遍历位置的对象,使用iter()创建一个迭代器,使用next()方法依次返回迭代器中的每一个元素,如果数组里面的数据 ...

  9. delphi Image32 动画演示2

    Image 32 自带的Demo,添加一些注解. unit uFrmAnimation2; interface uses Winapi.Windows, Winapi.Messages, System ...

  10. JAVA反序列化学习-前置知识(基于ysoserial)

    本人在学习Java反序列化中,发现网上大多都是自己分析一些逻辑内容,导致可能每一个版本的payload都不相同,对于学习时并不友好,所以我在学习了cc链之后,准备总结一下cc链中的内容,并以ysose ...