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,大有可为。
VB 不应该是这副模样出现的更多相关文章
- Git哲学与使用
-- 故国神游,多情应笑我,早生华发. Git是什么? Git是一个版本控制工具,代码管理工具,团队协作工具.它跟SVN等传统工具实现同样的目的:但从某种程度来说,它更快,更灵活.我想绝大多数读者都已 ...
- https原理通俗了解
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...
- Java课程寒假之回答问题:如何将你的兴趣化为可以立足于社会的资本
在学校的时候干过几次兼职,算是无聊时候的外快吧,有一次是去辅导机构,在考试期间监考学生,前后大概四个小时,最后拿了四十五并且管了一顿饭,不得不说,小学生是真的皮,考试的时候有的爱讲话,有的是写完之后开 ...
- “AS3.0高级动画编程”学习:第二章转向行为(上)
因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) 原作者:菩提树下的 ...
- 如果这样来理解HTTPS,一篇就够了!
1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...
- Vue 2.5 发布了:15篇前端热文回看
Vue 2.5 发布了:15篇前端热文回看 2017-11-02 前端大全 (点击上方公众号,可快速关注) 本文精选了「前端大全」2017 年 10 月的 15 篇热门文章.其中有职场分享.技术分享和 ...
- HTTPS理解
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过 ...
- 这样理解 HTTPS 更容易(Maybe)
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过 ...
- 也许,这样理解HTTPS更容易
http://kb.cnblogs.com/page/563885/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文 ...
- 也许,这样理解HTTPS更容易(今天看到的, 对https总结最好的一篇)
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...
随机推荐
- SXYZ-6.27专题比赛
好的,现在正式定义今天的比赛为一场伤心的比赛. ↑这张图片首先能说明一些问题,但这并不是关键. ↓这才是伤心的关键 ↑第一题文件输入输入爆 ↑第二题文件名直接爆 评语,一个比一个离谱! 然后只是很简单 ...
- [python] 基于PyOD库实现数据异常检测
PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点.异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误.噪声或潜在的有趣现象.无论是处理小规模项目还是大型 ...
- 使用nnUNet跑BraTS脑肿瘤分割预测TC和ET非常低的原因。
使用nnUNet跑BraTS脑肿瘤分割预测TC和ET非常低,原来是预测的时候,使用了预处理后的标签.原本标签是:2:WT, 1:TC, 4:ET.但是预处理之后变为:1:WT, 2:TC, 3:ET. ...
- vue前端开发仿钉图系列(3)右侧画点线面的开发详解
项目开发是完全仿照钉图的功能,参照钉图的逻辑和高德地图的参考手册以及aip文档,一点点的把功能做出来并呈现最后的效果.选中画点,在地图上获取经纬度并进行反地理编码,添加marker并弹出右侧编辑页面, ...
- 小程序的button组件
button组件 按钮组件 功能比html的button按钮丰富 可以通过open-type属性可以调用微信提供的各种功能(客服,转发,获取用户权限,获取用户信息等): 按钮的属性 size 按钮的大 ...
- Solon-Boot 与 SpringBoot 的概念不同
平常我们是拿 Solon 生态与 SpringBoot 生态作比较.而非 Solon-Boot(仅是功能模块) 与 SpringBoot 生态,但这两名字太容易让人误解了. Solon-Boot So ...
- 实战!oracle 11g一键安装脚本分享
分享一个常用的数据库一键安装脚本,大家可以从我的网盘进行下载 链接: https://pan.baidu.com/s/1iV-0zeXrwhJxJcm9qA_P_g 提取码: apbc 脚本内容: # ...
- 『玩转Streamlit』--环境配置
尽管Streamlit的使用非常直观,但正确的环境配置对于充分发挥其潜力仍然至关重要. 本篇将介绍如何从头开始配置Streamlit环境,以及Streamlit开发过程中常用的几个命令. 最后通过一个 ...
- KubeSphere 网关的设计与实现(解读)
作者:泓舟子,KubeSphere 后端研发工程师,云原生爱好者,现专注于云原生微服务方向. KubeSphere 中为什么需要网关? 如果需要将 K8s 集群内的服务暴露到外部访问有那些方式呢?可以 ...
- 华为OpenEnler Linux系统部署LNMP
LNMP是Linux+Nginx+Mysql+PHP所构建的一个动态开发环镜 我这里使用的系统是华为的OpenEnler系统,使用了Nginx1.12版本.Mysql8和PHP7.4 如果有出错的地方 ...