Visual Basic 十年风云

我从来没有想到过,撰写这篇文章需要十年的光阴
有时我自清晨的睡梦中醒来,望着窗外高楼间透露的微稀曙光
耳畔都不免响起那些岁月烙印后的沧桑
那些原本可以避免或是终就注定的结局

我不是一个诗人,也不是一名作家
只是一位信息历程的过客, 静静沉醉在这不一样的感动

历史象河流,也象镜子,它让我们看到过去,也见证现在的自己……

春雷乍响花开暖 – Visual Basic 1.0

1991年2月的某一天,Copper发展的Thunder软件吸引了市场的目光,它有个粗略的设计环境,可以完成Windows环境下旷日费时的作品,当时大家只是感到新鲜,很少有人多加留意……

1991年5月,Visual Basic 1.0诞生,在此之前,Quick Basic是Basic编程人员的最爱,不同的是Quick Basic主要用来开发DOS应用程序,而Visual Basic却是用来设计Windows程序,就象青出于蓝胜于蓝的那句谚语,Visual Basic比Thunder赢得更多注目与掌声,不仅因为工作环境更加完备,直观性也更强。

即使全美已经为这个创新的软件开始疯狂,台湾看到东西却是好几个月以后的事,那时微软中国在北京还尚未设立办事处,而微软台湾分公司只有几十个员工,一个产品经理必须负责好几个不同类型的软件,由于知识产权的意识尚未形成,真正购买合法软件(或者我该说 “能买到合法软件” )的用户并不多,更别提市面上屈指可数的书籍了。

虽然我接触Visual Basic的时间很早,但对它废寝忘食却是1991年冬天的事,当时Windows3.0英文版开始风行,中文化的战争打得震天价响,能够在Windows环境进行编程是件非常新鲜的事,但市面上可以获得技术的渠道却十分有限。

有一天,我在书店寻找中文书时,看到一本由台湾基峰出版,何立起先生撰写的《Visual Basic程序设计》,这应该是相当早关于Visual Basic的中文书了。

一般人大概很难想象十年前的信息环境,由于互联网尚未普及,很多技术都得靠自己一点一滴地积累和钻研,基于对Visual Basic的热爱,我几乎把当时所有Visual Basic原文书都翻过了,并且深深感到这个软件的未来不可限量,也在寻找台湾是否存在使用Visual Basic进行开发的软件商。

1992年3月底,我进入友立资讯(ULead Systems),原以为这是外资企业,但它的确是道地的台湾公司,我记得当时比尔盖兹提到台湾未来十年最具潜力的公司,分别是:友立、趋势、华康和倚天,然而十年后,倚天已经从市场上渐渐淡出了,华康在台湾依然是字型的翘楚,趋势在防毒市场打下一片天,友立则早已将触角伸向全世界。

友立在当时培养了许多Windows和Multimedia领域的人才,我也从这家公司受惠良多,它自由专业的风气是由非常努力的元老们构建起来,我或许是友立最熟悉Visual Basic的玩家了,是的,我称玩家而不是编程人员,因为在友立很少人认为使用Visual Basic开发Windows程序有什么了不起,这件工作看起来就象是任何孩子都能完成的事情一样。

我会在文章里特别提到友立,那是因为友立曾经承揽过Windows最早的中文化工作,看过Windows系统完整的源代码,了解整个Windows如何被设计,所以它在Windows的影像处理领域如此出色,但也因为它的努力,现在还未从市场上消失,这实在是台湾非常具代表性的一家软件公司…

Visual Basic 1.0的诞生就像注定的事,如果我有一部相机,多么希望可以记录当时开发工具市场的头角峥嵘,特别是从DOS过渡到Windows的这个阶段,Realizer或许是当时对Visual Basic威胁最大的软件了,它是一个类似Visual Basic的编辑环境,不同的是和Quick Basic完全兼容,而不是象Visual Basic采用事件驱动形式的写法,它让 Basic编程人员不需学习新的语言,就可以完成简易的Windows程序,而且功能更加强悍。

后来Visual Basic推出Professional Toolkit和Realizer较劲,薄薄的三张磁盘包含一些控件,却开启了全然不同的视野;此后,大量第三方厂商相继投入控件开发的行列,Visual Basic终于成为最多第三方厂商支持的开发工具,3RD Party成为出现在广告最多的名词。

飞入寻常百姓家 – Visual Basic 2.0

也许正因为我没有Quick Basic的旧包袱,因此学习Visual Basic之路还算平坦和顺利。

1992年11月,有关Visual Basic 2.0问世的报导振奋了市场,在某天快下班时,我打电话给微软,找到当时负责Visual Basic的产品经理 - 蔡祖馨(目前是MSN台湾区副总),我询问到: “Visual Basic是非常好的产品,为什么在美国如此爱欢迎,台湾却默默无闻呢?”

祖馨说,他正着手规划一些事情,希望有人可以帮忙,于是就这样,我们相约在惠普大楼附近的一家牛排馆,他看着我提出的许多建议,觉得是不错的尝试,就这样,我成为台湾微软最年轻的Visual Basic顾问。即使当时的微软总部都还尚未成立顾问服务团队(MCS Team),我却受宠若惊的接受了这个新鲜的称谓,在无数个夜里,我们一起为Visual Basic的市场擘画长远的梦想和蓝图,包括杂志文章和研讨会内容;他给了我很多建议,并成为我生命里重要的伙伴。

在此之前,我在杂志已经陆续刊出几篇文章,当时市场并不象现在这么多元化,我拿到Visual Basic 2.0后,写了一篇 “Visual Basic 2.0粉墨登场” 的介绍文,投稿到微电脑信息传真(PC Magazine中文版),为了这篇处女作,我反复琢磨好几天,最后终于获得主编的青睐,特别开辟了一个Visual Basic专栏,那时文章要登在技术性杂志并不容易,我的文章很快引起了回响,也结识了不少Visual Basic的狂热分子。

透过媒体结识相同兴趣的同好是项奇妙的经验,这比现在的网路交友更加刺激,你真的会收到读者的来信,有鼓励、有讨论也有仰慕,为了拓展更宽的视野,我订阅了Inside Visual Basic这本原文杂志,它是Cobb Group的出版品,每期只有16页,它看起来就象薄薄的技术通报,但你每每总是会为那些隐藏在技术背后的巧思兴奋不已;BasicPro则是另一本讨论Basic的杂志,后来改名为Visual Basic Programmer’s Journal(VBPJ),也是相当普遍的Visual Basic原文杂志,内容虽然简单但更加丰富。

现在回想起来,超时代资讯和知讯科技或许是对台湾Visual Basic市场最具贡献的公司了。超时代资讯的郭东峰先生引进了许多西文杂志,他的眼光和热情让更多Visual Basic的爱好者得以取得和国外同步的信息,而知讯科技则是引进第三方厂商的各式控件,几乎所有在杂志上可以看到的产品,都可以在这家公司买到,而不需要写信到国外订购,当然,台北重庆南路的天龙书局和曾经盛及一时的松岗图书,也进口了许多关于Windows编程方面的原文书。

当提及这些影响台湾Visual Basic市场的主力时,我们很容易忽略了时间背景,想想看,那可是在1992年啊,一个互联网还不发达的年代,14400 bps的数据机可能是顶级的贵族产品,但现在还有谁在使用这种过时的东西呢?我常常想如果没有人耕耘这块市场,那么台湾可能还要更晚才能和国外取得同步的信息,相信也就没有这么多前辈影响后进了。

有些人或许会认为即使没有这些人,Visual Basic还是一样会蓬勃发展,但我对这点持保留态度,“软件在市场的成功取决于三个重要因素:那就是产品本身、公司态度和精神领袖,缺一不可” ,这三者的结合会酝酿出市场的追随者和商机,形成良性循环,不论Borland的Delphi、微软的VBA还是DHTML,都说明软件是需要格外用心经营的市场。

1993年春末是个关键时期,微软举办了Visual Basic 2.0上市发表会,在客户/服务器构架还只是雏形概念时,我就尝试完成了一个计划管理的子系统。当时SQL Server还不是微软的产品,前端使用Visual Basic 2.0进行开发,后台则是SUN平台的SyBase数据库,从Visual Basic连结后台数据库时,必须透过专门的DBLibrary调用复杂查询子句,因为那时还没有ODBC这种东西,只能撰写更低阶格式的语言。

为了完成这个项目,我几乎将Visual Basic发挥得淋漓尽致,也从许多优秀工作伙伴身上,获得了学习的机会,基于对Visual Basic的热爱,我成为微软企业主从架构的项目顾问,也开启了往后截然不同的职业生涯……

Visual Basic 2.0的最大特色是整合了Visual Basic 1.0和Professional Toolkit,并且首次推出标准版和专业版。VBX文件从此成为Visual Basic形影不离的伙伴,但这种文件在运行时,必须使用Visual Basic运行阶段函式库(VBRUNXXX.DLL),也因此使得它和别的开发工具很难共享这项便利。

微软想将这个成功经验转移给其它开发工具,于是开始思考如何让VBX得以跨越应用程序的藩篱,这也正是OCX概念的形成,可惜当时内存昂贵,对象嵌入链结概念一直处于实验阶段,但这并未阻碍技术继续前进的脚步……

此情可待成追忆 – Visual Basic 3.0

1993年5月,Visual Basic 3.0引起了市场讶异,因为两个版本间只相差六个月,或者说根本不到六个月,这创下了微软有史以来,最短产品生命周期的记录。

Visual Basic 3.0强调几个重要特性,一个是OLE 2.0的概念,另一个则是数据库存取,包括ODBC数据库连结、数据存取控件和数据显示控件,特别是在数据库改进方面,说明了微软将Visual Basic打入企业的决心;透过可视化操作方式,编程人员不用撰写复杂叙述,就可以轻易完成数据库的应用程序,这也使得企业开始认真考虑Visual Basic的 “开发工具” 定位。

由于Access数据库的诞生,Visual Basic采取JET数据库引擎,微软原本期望Access吸引更多开发人员,但数据库用户却为Visual Basic的炫丽功能深深折服,特别是Visual Basic在多媒体方面的运用,我记得当时在微软演讲厅举办的各项活动可说场场爆满;Visual Basic 3.0在台上市成功是项重要指标,它说明华人在编程领域有很大的发展空间和潜力,当然整个市场成功也归功于延续到其它城市的活动以及无数合作伙伴的投入。

在此之前,Visual Basic很少在重点城市以外举办过产品发表会,但只要往前推进一步,就会有更多的人了解和接受,很多企业是在这个时期开始采用Visual Basic作为开发工具,包括:报业和银行业等等,也有些企业还始终在开发工具的抉择上摇摆不定。

Visual Basic受到争议的是关于面向对象语言的论战。Visual Basic 3.0不是面向对象语言,它并不提供有关面向对象的四大特性:抽象、封装、继承和多态,尽管学术派对Visual Basic 3.0的能力质疑,但它的确可以解决企业面临的问题,并且成为当时编程人员选择的考虑。

从历史回顾,当时提及面向对象分析和设计还言之过早,因为大环境并没有提供相应的标准和工具,Booch,Jacobson和Rumbaugh三位大师提倡的UML(Unified Modeling Language)的标准,直到97年末才被广泛接受与认可,但我们可不能因为如此就不工作了,现实还有许多的事情等待著解决,如果过于致力空泛理论的追求,反而会忽略实际生活的运行。

楚河汉界终有道 – Visual Basic 4.0

1994年11月,Visual Basic进入全新的境界,Visual Basic 4.0终于可以开发Windows NT的应用程序,许多软件独立开发商开始关心16位和32位程序转换的问题,我在因缘际会中成为台湾经济部软件服务团的辅导顾问,并且结识了不少业界好手,也逐渐发现了Visual Basic对企业的使命和重要性。

Visual Basic 4.0的一项重要改变是在标准版和专业版外加入企业版,并且提出几个创新,例如:加入类模块概念、透过RDS存取后台数据库以及Visual SourceSafe的程序版本管理机制等,这些功能大大增加了Visual Basic企业开发的能力。而新的对象构架终于使Visual FoxPro、Access和EXCEL其它软件,得以和Visual Basic共享OCX的对象技术。

为了让更多使用者接触这项开发工具,微软将Visual Basic 4.0标准版中文化后,推出了Visual Basic中文教育版,提供给学校及入门使用者,而专业版和企业版维持原来的英文版,其实,如果从长远的竞争力来看,“开发工具中文化” 的目标有待商榷,毕竟开发工具的使用对象并不是像一般Office的使用者。

中文化工作必须投入大量兼顾技术与中文表达能力的人,否则效果将会大打折扣,许多技术好手都是忙于项目开发,而文字表达能力优秀的人又不一定懂技术,还不如维持原来的英文版好些;印度在软件开发能有那么多信息蓝领工人的重要原因,不仅因为他们重视构架分析,同时也重视英文教育。

毕竟开发过程遭遇问题时,求助国际讨论组可以获得更多参考答案,如果编程人员只能接受中文化环境,那么如何搜寻更多讨论信息?而在国外受训时,又如何适应英文版环境呢?

可惜,微软最后还是决定中文化了,而且在Visual Basic 5.0后,微软也将其它版本中文化,并且停止在台湾发售Visual Basic的英文版了,我称这是Visual Basic历史的黑暗时期,市场虽然迎接了更多新手,但技术层次也很难普遍提升了。

Visual Basic 3.0的销售成绩是史无前例的,即使Visual Basic 4.0也很难与之相较,从4.0到5.0版短短时间,台湾微软替换了至少四任Visual Basic产品经理,看着这些伙伴在微软舞台来来去去,我突然有种忧伤的感觉,我是少数一直到Visual Basic 6.0还使用英文版的人,但这项坚持直到来到上海这个简体的中文化环境后,才发现当初的执着有多么重要。

Visual Basic 4.0 的销售量消退有很多原因,其中部分来自号称Visual Basic的杀手产品-Delphi,这个Borland的开发工具使用PASCAL语言,可以编译出真正的运行文件,不仅档案更小,而且运行速度更快。Borland在台推出这项产品时,张书良先生(当时Delphi的产品经理,现任职于微软)曾经询问过我对Delphi的兴趣,希望我能协助Borland,但我最后推辞了……
¬¬¬
尽管Visual Basic 4.0某些功能不如Delphi,但我当时已经看到微软是非常有潜力的公司,一时的落后并不代表永远的差距,微软终会赶上这些特性,并且开创不同的局面,我对微软非常有信心,这份信任看在今日VS.NET的发表更是令人欣慰。

开发工具市场有流派之分是正常的,编程人员总是带着叛逆并且愤世嫉俗的风格,他们希望创新并改变现状,而不是一味顺应舆论。对于工具,他们有自己的喜好与坚持,但不要忘记了,任何兵器(程序语言)到了大师手中都是神兵利器,而这也正体现了.NET 构架的Common Language Runtime精神,那就是 “语言本身并不是最重要的,重要的是整体构架呈现的精神” 。

雨过天青云破处 – Visual Basic 5.0

1995年下半年正好是微软决定跨足互联网的时刻,这个时期有几个重要的区隔,编程人员就象踩地雷般,必须看清每种技术的未来,包括:Java、VBScript、DHTML、ASP 和VBA,如果方向选错了,损失的不只是时间,还有无数个机会。

微软在这个时期提出了ActiveX技术的概念,Visual Basic从来没有象这个时期的发展这么多元化:Visual Basic Script语言的诞生、Visual Basic Control Creation Edition免费版本的推出、Visual Basic for Application 5.0以及Visual Basic 5.0的问世…

ActiveX技术虽然源于COM,但并没有脱离OLE 2.0的基本构架,ActiveX控件可以视为特殊的OCX控件,它消除了不必要的程序负担,并且可以经由网络下载到使用者机器安装和使用。

早期控件的设计工作只能通过C语言和SDK工具进行,这使得控件的构建就象神秘的黑盒子,编程人员必须有很好的C语言基础,并且了解Windows系统和Visual Basic的运作,才有办法建立控件,如果发现某个第三方开发商的控件不满意,除了通知厂商建议修改之外,唯一能做的就是静静等待下个版本的发行,这是令人扼腕的事情。

因为每当系统需要进行升级,这些使用的控件就成了新的桎梏,Visual Basic 5.0的改进是让控件的构建跟设计Windows程序一样容易,你可以修改现有控件,也可以组合不同控件成为新控件,当然也可以设计一个全新的控件,这真是一大迈进!

从技术层面来看,VS.NET或许是革命性的改变,但Visual Basic 5.0对Visual Basic编程人员却是最关键的版本,它采用多文档界面(MDI)的开发环境,即使Visual Basic 6.0也不例外,我猜这是因为整合VBA 5.0的缘故,Visual Basic 5.0很可能短时间内不会有大变化了,而现在是转变方向的时刻了,那就是走出Visual Basic。

就在 Office 97问世时,当时 Office 的产品经理陈国桂(现任职于台湾微软副总, 前微软中国市场行销总监)应该是对我影响最大的人了。编程人员容易掉入一个陷阱,觉得Office软件没什么学问,似乎只有在编程领域混不下去的人才会想到学习Office软件。这个心结让我挣扎了好长一段时间,他鼓励我把所有赌注放在Microsoft Office开发平台,于是我从编程人员变成一般用户,开始学习以最谦卑的态度摸索Office的应用。

Microsoft Office解决方案是所有企业都该走的路,它是恩赐给Visual Basic编程人员的丰富矿藏,也只有好的Visual Basic编程人员才能实现Office对象的神奇与魅力,做到真正的办公文档自动化。

我从美国田纳西州参加第一届的Office研讨会后,回台湾办了两场技术研讨会,其中一场是和RUN!PC杂志共同举办,并且在杂志上陆续发表一些文章,表面上我好象离开了Visual Basic这个领域,但实际上却是以VBA整合了更大的技术资源,这使我顿悟了 “你只有在离开一个最心爱的东西后,才能更深刻地拥抱它”。

也曾共同经历过 – Visual Basic 6.0

1998年6月中旬,微软发表了Visual Basic 6.0,它不仅改进了Visual Basic 5.0,更整合了其它开发工具成为Visual Studio家族性产品,尽管许多编程人员奋斗于ASP与ADO的开发,Office开发平台却在此时不断展现出它迷人的一面。

Office 97可说是进入Office平台的最佳敲门砖,Office 2000更将VBA的功能延伸到其它Office应用程序,由于Office XP的VBA变动不大,因此,过去使用Office 97/VBA开发的企业可以轻易升级和维护,这符合企业的经济效益考量,可惜很少Visual Basic编程人员察觉到这份价值。

在我推广Office解决方案的过程始终强调Office 97的重要性,这并不是炒冷饭,而是Office软件是向上兼容,一个Office 97设计的解决方案可以在现在的Office 2003环境运行,而Office 2003设计的解决方案却要考虑到用户的环境是否全面升级,真正高明的解决方案提供者不会在追求梦境的同时,忽略了现实。

从现在的.NET角度来看,Visual Basic 6.0的DHTML Designer 和 IIS Application Designer已经是过时的技术了,一个有远见的Visual Basic编程人员,应该在当时把时间投资在操作系统的管理和后台服务器的了解,而不是将焦点局限在Visual Basic而已。

编程人员的工作是神圣的,我们的责任是解决生活所面临的实际问题,而不是以理解或发明晦涩的名词沾沾自喜,如果我们将过多的时间浪费在花俏的理论,就没有多余的精力专注在基本功夫的养成了。

这个阶段有两个发展方向值得特别注意,一个是商业组件开发,另一个则是互联网应用,前者包括Business Object和建立控件,Wrox出版的 “Visual Basic 6.0 Business Objects” 是本非常好的书,它从基础概念出发,详细解释了多层次程序的相关细节,如果你真的读过这本书,不难发现Rockford lhotka是位用心的作者,他对Visual Basic的投入并非只是临时起意或半路出家。

至于网络应用程序的开发得从基础的部分学起,包括:网络基本概念、TCP/IP基本构架,最后才是熟读DHTML所有特性,ASP程序也许只是信息发展历程的一个意外,早在ASP刚推出时,我就看到ActiveX文件发展的潜力远比ASP编程更重要,可惜不是所有人都能理解这点,面对早期ASP和现在ASP.NET的缺陷比对,真是一点都不令人感到惊讶。

你又曾经感动谁 – Visual Studio.NET

2002年4月,VS.NET在台湾上市,我受邀回台湾担任发布会的司仪,我看到许多为科技努力而接棒的新生代,不仅对未来充满希望,同时也忧心忡忡后进对微软产品的感悟。

信息本身只是一种力量,它不是永恒;永恒应该是象艺术、历史、神硛这些不会随着时间轻易淘汰的东西。我们从前学过的OLE、ActiveX、COM已经被更新的技术取代,.NET的未来或许也会有更好的改进,这条路永远不会停息,翻翻书架上过时的书籍,谁又深思在这些朝代的替换中留下了什么?

微软只能提供工具,它没有办法提供你知识,知识在你心里,只是透过微软的工具加以适时放大,工具追随者的快感只会持续一阵子,它没有办法让你十年后写一篇历史的感想与回顾,因为记忆里的每个阶段都是如此模糊。

如果你为编程的前途感到困惑,那么不妨看看过去的前辈现在都在做什么?

我不知道有多少人听过Alan Cooper,它是Visual Basic之父,如果VS.NET非常重要,如果VB.NET是不可忽略的工具,那么这位在业界超过30年的人物可以带来一些启示,我最近读到他的一本早期着作 “The inmates are running the asylum” ,有些人可能会好奇,他为什么不写一本Visual Studio.NET Programmer’s Guide或Visual Basic.NET Fundamental的书?因为有比工具更重要的东西 - 那是你的思想。

.NET Framework的精神是 “交互无所不在” ,当计算机的运算越来越快,生活的接触也将不限于个人计算机,我们需要走出 “个人计算机” 的历史印象,把过去对信息的热诚带到其它移动设备。

对过去转换到Office开发平台的编程人员,现在是关键时刻,开发的重心应该在XML网络服务器的设计,并且将它和Office充分整合,Office的对象模型将更丰富,亟须具备巧思的编程人员发挥它的威力,你可以预期Office和Visual Studio将更加整合,未来将充满挑战与希望……

即使Visual Basic历经了这么多版本的改进,回首最初1.0版本,我们仍然可以发现它最重要的精神,那就是 “将可见与不可见的状态抽象成组件,并用这些东西构筑成梦境的延伸” ,Visual Basic并非全部,它只是实现理想的工具,只有跳脱工具,我们才能看到更真实的自己。

走过十年来,七个版本的更替与无数合作的伙伴,我们的前辈造就了今天的学习环境,我们的努力也将影响未来的后进。在信息市场有很多无名英雄默默努力带动经济的成长,他很可能只是某家书商的老板、陪伴成长的工作伙伴或教授Visual Basic的老师。无论如何,这十年来的成就值得所有爱好Visual Basic的编程人员共同喝采。

作者

郭安定 (Andy K.)

 

在非营利性的前提下, 你可以在任何场合, 无偿转用这篇文章的所有内容

但记得注明出处, 以示对作者的基本尊重

1
 in 动态新闻, 思考淬炼, 生活学习
  1. 发展了这么多年可惜国内实际使用VB.NET非常少。哎~~~郁闷啊。。。