1991年宣布的Windows开发工具

1991年5月20日,微软在美国亚特兰大Windows World ’91大会宣布Visual Basic编程系统,简称VB。当天新闻稿把它界定为面向Windows 3.0的图形化应用开发系统,并说明计划于6月供货,美国建议零售价为199美元。宣布与预定供货是两个阶段,不能把5月的新闻稿自动当成全部用户已经拿到产品的证明。

产品面对的是一个实际难题:程序员除了编写业务逻辑,还要创建窗口、按钮、菜单并处理它们的响应。VB把界面设计和BASIC程序结合,目标使用者包括企业程序员、软件顾问和独立软件开发商。可视化工具承担重复的界面工作,程序员仍需决定每个操作究竟做什么。

参考:[1]

从外壳构建工具转向应用开发

艾伦·库珀在2017年存档口述中回忆,一次陪同微软销售人员拜访美国银行,使他注意到同一系统要同时服务专家和普通柜员。与其只设计一种Windows外壳,不如提供可组合按钮、列表等部件的构建工具。他把原型称为Ruby,这个项目代号与后来同名的编程语言无关。

库珀说,1988年加布·纽维尔看过演示后促成他向比尔·盖茨展示;微软随后购买并验收这套技术。其团队也有麦克·吉里等程序员参与。原计划中的外壳最终没有这样上市,可视化前端后来与微软BASIC结合为VB。新闻稿直接确认窗体引擎采用了购自Cooper Software的技术,为这段回忆提供同期对应材料。

参考:[1] [2]

窗体、属性和事件怎样配合

窗体是放置界面部件的工作面。开发者拖放文本框、按钮或列表框,再设置位置、字体、颜色等属性;随后为点击、按键等事件填写代码。这种组织方式把界面的形状与其动作连接起来,不要求开发者先手写所有窗口创建和连接逻辑。

1991年8月《BYTE》的试用文章说明,点击界面部件可进入相应代码窗口,程序既可在开发环境中运行,也可生成Windows可执行文件。编辑器还会检查语法、整理大小写,并提供单步执行和断点等调试工具。设计、编程和观察运行结果因而进入一个连续的工作过程。

参考:[5]

一个按钮触发一段程序

微软Q76559技术文档列出一个适用于1.0版的例子:先新建项目,在Form1上放置按钮和标签,再进入代码窗口,在Form_Click、Command1_Click或Form_Load等事件过程中放入Print语句。可以据此理解一个最小程序:按钮被点击时,执行Command1_Click中的输出语句;窗体加载时,则由Form_Load处理初始化。

事件过程不会只因写在文件较前处就依次发生,它们由对应操作触发。开发者可用F5运行、F8逐步执行、F9切换断点,观察预想的行为是否出现。这个例子说明方法,不冒充某次发布会的演示程序:拖放负责安排部件,代码负责赋予动作,调试则检查二者有没有正确衔接。

参考:[3]

现成控件之外仍有系统接口

微软Q113329技术文档用列表框自动滚动展示了另一面。例子先在窗体放置标签、按钮和列表框,设置Caption、Visible等属性,再从事件过程中调用Windows的SendMessage接口。它把图形化设置和系统调用放在同一个程序内,说明特殊交互并不总能靠拖放完成。

该文还解释两种实现各有副作用:一种把更大范围的鼠标动作交给列表框,会干扰其他操作;另一种只处理框内移动,滚动效果又受到限制。工具降低了编程起点,却没有消除设计取舍。1991年的发布公告另说明,开发者可用C和Windows软件开发工具包制作自定义控件,通过另外提供的控件开发套件扩展VB工具箱。

参考:[1] [4]

早期便利与不能省去的知识

同期《BYTE》评论肯定了建立Windows界面的便利,却反对“任何普通用户都能轻易编程”的宣传想象:界面之下仍要写BASIC代码,没有编程知识很难走远。它还指出,生成的程序需要目标计算机具备相应运行时动态链接库,不能把生成EXE理解为不再依赖运行环境。

从这些早期材料看,经典VB的价值在于把视觉布局、事件过程、调试和可扩充部件组织为可重复的开发方法。它适合用来理解程序员怎样减少界面杂务,同时继续承担业务逻辑与异常行为的责任。这里的机制和例子限定在最初版本及明确适用于该版的技术文档,不将后来的Visual Basic .NET类库倒写进1991年。

参考:[5] [3] [4]