2016 年 2 月

第 31 卷,第 2 期

别让我打开话匣子 - VB6: 唤醒沉睡的巨人

作者 David Platt | 2016 年 2 月

David Platt撰写本期内容时,是我在这个专栏中引起轰动的第七个年头了。为了庆祝这一历史性时刻,我将继续做我一直以来最爱干的一件事,就是捅马蜂窝:无论针对的是继续热爱 Visual Basic 6 的开发者,还是对 Visual Basic 6 因爱生恨的开发者。

我曾撰写过两篇文章(msdn.com/magazine/jj133828msdn.com/magazine/dn745870),旨在强调 VB6 在当今软件开发界的独特地位,将它比作是蟑螂、公共汽车和弹指球。我的这些专栏文章取得了非常广泛的反响,热烈程度超过了我曾撰写过的任何一篇文章。今天,我将加大火力,引起更强烈的轰动。我就要引爆“核爆炸”了,把 VB6 变成永不过时的开发语言。不相信? 请往下读,我的朋友。

几周前,我与一个客户共进了午餐。他的基于 Silverlight 的解决方案可用于播放监控摄像机视频。不过,Microsoft 现在已弃用 Silverlight,建议开发者改用 HTML5。我的客户抱怨道:“这真讨厌。凭借所掌握的技能,我一直都干得很好。现在,我不得不学习另一种语言,然后还要迁移我的所有代码。我的应用并没有那么复杂,只是包含一些视频流和按钮。我希望能有某种方法让这真正简单起来。”

然后,我灵光一现: 这正是 VB6 对其当前目标(即非托管 Windows 应用)所起到的作用。能不能开发可生成 HTML5 的 VB6 版本? 这样一来,输出就可以在所有浏览器、操作系统和平台(桌面或移动)上运行。

去年 5 月,我撰写过一篇文章 (msdn.com/magazine/dn973019),其中介绍了天花病毒,及其是如何设法在人类最终消灭天花病毒之前转换寄主(从人类到计算机)的。VB 可借此机会转换非托管 Windows 应用这一目标,呈现出爆发势头,在整个软件界蔓延开来;既具有 Java 承诺的用途,也具有 Java 从未履行的用途(撰写代码一次,即可在所有位置上运行)。这将打造真正的跨平台应用。而所用语言竟是地位低微的老式 VB6。有人这样想过吗? 因为它可在所有位置上运行,所以我将它称为新语言 VB*。

从概念上讲,VB* 编程模型会与 ASP.NET Web 窗体模型相似,其中的控件将内容呈现为 HTML。但这样的呈现需要服务器端有 ASP.NET,而 VB* 则需要避免依赖任何特定的服务器。因此,VB* 会向下编译到 HTML5 元素和 JavaScript 代码的独立页面,就像 VB6 通过 Windows 函数调用向下编译到 x86 汇编程序一样。您将能够把页面强加到任意 HTML5 服务器上,并从任意 HTML5 客户端访问。

VB* 将使用 VB6 超简单的语法和组织。我们会特意省去复杂功能,以期通过最容易的方式对简单事例进行编程。例如,我们可能不会在 VB* 语言中显现线程。如果我们发现 VB* 应用需要后台操作,一些高手程序员会编写后台操作控件来处理所有这些蹩脚的详情(就像在 VB6 中一样)。

因此,VB* 需要一种支持两级开发者的设计,一级是编写控件的超级达人,另一级是使用这些控件的应用程序员。我们之前曾两次这样做过(一次是对 VBX 控件,另一次是对 OCX 控件),所以我们毫无疑问可以再做一次。

我们该如何开发和发布 VB*,以及如何筹措资金和提供支持? 开放源代码? 也许一些工具供应商想要做出承担? 联盟如何? 我很乐意提供帮助。当然,这是要收费的。(学生: “Plattski,你真是一个愤世嫉俗、唯利是图的家伙吗?这样做只是为了钱吗?” 我: “如果我告诉你,你会付我多少钱?”)我甚至已经构建了 Web 地址 vbstar.org 作为起步。

我现在能听到厌弃 VB 的人齐声批评道: “这不是真正的语言! 他们也不是真正的程序员! 你甚至应该因提出这样的建议而被枪毙。[这个]、[那个] 或 [另外那个],VB* 都不能做到。”

或许做不到。但我之前写过:“…由技术水平不高(因此比较便宜)的人员快速(因此比较便宜)开发有限(因此比较便宜)的应用程序是解决一大类问题的重要解决方案。” 如果一切顺利,VB* 将成为这样的解决方案。

VB* 永不过时!


David S. Platt在哈佛扩展学院和世界各地的公司教授 .NET 编程。他著有 11 本编程书籍,包括“Why Software Sucks”(Addison-Wesley Professional,2006)和“Introducing Microsoft .NET”(Microsoft Press,2002 年)。Microsoft 在 2002 年授予他“软件传奇人物”称号。他想知道是不是应该绑住女儿的两根手指,以便她学习用八进制计数。您可以通过 rollthunder.com 与他联系。