转载李建忠老师的一篇文章

** 为VB正名 **




** 补记 **

由于出版方一些工作环节的疏忽,很可惜这篇早已写就的译序并没有出现在本书初印的版本上。另外由于出版方坚持的成本问题,原来翻译时苦心制作的术语表,页页对译 + 英文索引也被拿掉了,很遗憾。还好,术语表大家可以到我的网站( www.lijianzhong.com )上参考。还有一些令人遗憾的排版问题,不过只要是影响理解的错误,我都会不遗余力地在我的网站上提供勘误。

虽然这本书最后出来的结果跟我当初所追求的有很大差距——我拿到书时的确有一些失落,但毕竟是我曾经的呕心沥血之作。实际上这本书很早都已翻译完毕,但是中间由于各种原因,导致它直到今天才能和各位读者见面,也算是一大遗憾吧。

这个世界上本无完美之事,放到当下中国社会的环境、尤其是技术出版环境里,就更不能奢望太多。我不敢说这本译作优秀,但有信心让读者感到物有所值。

“两岸猿声啼不住,轻舟已过万重山”——从翻译这本书开始到今天这本书出版,其间软件技术革新如火如荼,尤其是 .NET 技术在各个方向上的突飞猛进,令人叹为观止。我个人也历经技术生涯的变迁。写这篇补记的时候, Visual Basic .NET 2.0 的 beta 版本业已推出,增添了许多很好很强大的功能。各位朋友可以到 MSDN 网站上下载 .NET Framework SDK 2.0 Beta 以及 Visual Basic 2005 Express Edition Beta 来体味技术变迁的乐趣。但无论技术如何变迁, Jeffrey 和 Francesco 在本书中所展现的真知灼见、以及对技术的剖析手法都会让我们受益良久。我衷心希望那些真正喜欢 Visual Basic.NET 的人能够从这本书上获得真知和快乐!

最后,给那些喜欢 Visual Basic.NET 的人推荐一个 Blog 站点: www.panopticoncentral.net ,这是 Visual Basic.NET 之父 Paul Vick 先生的个人 Blog ,上面对 Visual Basic.NET 中各种技术的评点和咀嚼很让人享受。读这本书的同时如果能够经常阅读该 Blog ,如同吃大餐的时候佐以清汤的味道,感觉一定会不错。

2004 年 9 月

** 译序 ** ** **

Visual Basic (特指 Visual Basic 6.0 及其以前的版本,以下简称 VB )在软件界一直是令大家尴尬的一个话题。一方面它的用户量高居不下,甚至一度成为全世界拥有程序员数量最多的开发语言;一方面只要是一个人在某个场合提到自己是 VB 程序员,向他投射过来的目光绝对令人窒息, VB 程序员一开始就好像比 C++ 、 Java 等矮了一大截。我本来以为这是“同行相轻”在国内程序员圈子中的延续,只管自己修炼就是。可是后来慢慢在国外的一些技术论坛上也能感觉到这样一股笼罩在 VB 周围的阴霾气息。以至于最后看到 Don Box 先生为 Programming Distributed Applications with COM+ and Microsoft Visual Basic ( Ted Pattison 著)一书写的序言之后,我对 VB 的信心彻底遭到粉碎。 Don Box 先生在序言中写到 VB 被大家视作一张“社会安全网”,是一款专门用来为那些能力低下的开发人员提供“社会福利”的程序设计语言。尽管这是 Don Box 先生的一种调侃,并且他在那篇序言中是力挺 VB ,而且毫不掩饰地宣称 Dim me As VBProgrammer ,可那时候年轻气盛的我显然不能接受这样的“侮辱”,这也促成了我早年在 VB 方向上的匆匆出走。

后来我虽然“逃脱”了 VB ,但也渐渐认识一些将 VB 发挥得淋漓尽致的企业应用高手,以及一些将 VB 剖析得鞭辟入里的名家大师,从而也慢慢对 VB 有了新的认识: VB 有 VB 的历史地位, VB 有 VB 的用武之地。虽然在那个时候我对于 VB 已经摈除了早期的戒备心理,但如果有朋友问我学习 VB 怎么样,我还是持不赞成的态度。理由很简单, VB 已经无法融入当今各种炉火纯青的对象组件技术,还有它近乎陡峭的学习曲线——不得不承认的一个事实是几乎所有的 VB 高手和大师都拥有着 COM 技术的深厚背景,这是 VB 的技术渊源,形与影不可能分离。而取道 COM 对于大多数纯 VB 出身的人来讲近乎一场噩梦,这有 VB 的历史原因和微软的定位因素。这两个软肋无法解决, VB 就无法真正登堂入室,而且很有可能面临被分化和抛弃的命运。

那些伟大的公司之所以伟大就在于他们总能在历史的转折关头做出正确的决定。随着 .NET 大潮的澎湃, VB 被微软全面翻新, Visual Basic .NET (以下简称 VB.NET )诞生了。

VB.NET 对于 VB 是一个划时代的里程碑。 .NET 带给 VB 的决不仅仅是一个创新的概念标签,它给予 VB 从底层运行时、编程方式、框架类库到应用程序模型等等以彻底的革命和提升, VB 至此得以步入高端企业级开发的殿堂,和 C++ 、 Java 、 C# 等主流程序设计语言平起平坐。以前笼罩在 VB 头顶上所有的不公正、怀疑、和委屈都一扫而空。 .NET 为 VB 进行了一场彻头彻尾的正名运动,重塑了 VB 在软件开发界的地位。

实际上,这场正名运动的对象不光是 VB 这门语言,当然也包括和它息息相关的开发人员。随着这场正名运动的开展, VB 程序员也从此得以踏上程序人生的康庄大道。

然而为 VB 正名容易,正视 VB.NET 的价值容易,学习掌握 VB.NET 就不是那么容易的事情了。还要走 VB 时代可视化拖拉控件编程的老路吗?不,当然不是,如果还是沿着这条老路走,那么 VB.NET 将会不可避免地再次蒙羞。实际上,我本人并没有对可视化拖拉控件的编程方式有多大的成见,恰恰相反,在做企业应用项目开发时,我还是非常鼓励项目组成员使用高级 IDE 中各种方便的 Wizard 。只是这一切必须建立在对程序设计语言及其运行机制游刃有余的掌握这一前提之上。从某种角度来看,与其说是 VB 让使用它的程序员蒙羞,不如说程序员学习 VB 的方式让 VB 蒙羞。如果一个程序员一开始就使用 IDE 中的 Wizard 来构建应用程序,而弃程序设计语言本身的语法语义、编译机制、运行机制等于不顾,那么他不可能步入程序设计的殿堂。而 VB 由于本身的语言构造和微软对它的定位等因素,很容易将程序员导向这一误区,末了又用 COM 树立起一座高墙。这就像长长的一马平川之后突然竖起一座悬崖峭壁,很多人过不去是可以理解的。所以虽然有了 .NET 的正名,我们却决不能忽视对 VB.NET 学习方法的探究。要想彻底掌握 VB.NET ,必须选择一条正确的道路。

在本书中, Jeffrey Richter 和 Francesco Balena 就为我们指出了这样一条最佳路径——那就是从底层运行时学起。底层不是 FUD (害怕、不确定、怀疑),而是真真切切的结构,是可以剖析、认识、从而驾驭的知识体系。在 .NET 平台中, .NET 框架占据着核心的位置,是所有 .NET 程序设计语言的“底层”。相对于 .NET 框架而言,具体的语言学习已经是一个仅限于语法表达的次要问题了。实际上任何一门 .NET 编程语言提供的功能都只是 .NET 框架下一个子集的映射,如果您阅读本书后掌握了 .NET 框架中各个核心的概念后,掌握和精通任何一门 .NET 编程语言都将是一件非常轻松的事情。本书涵盖了 .NET 框架技术中几乎所有重要的概念和机制:程序集,元数据,引用类型与值类型(装箱 / 拆箱),类型成员,接口,特性,委托,异常处理,垃圾收集,反射等等。涵盖这些技术本身并不难,难的是如何用平实的语言和简短的代码来为读者建立起有关它们的正确观念和开发技能,而这正是 Jeffrey Richter 先生作为优秀技术作家所擅长的地方。“庖丁解牛,鞭辟入里”,这恐怕是阐述软件技术的最高境界了。事实上,本书对 VB.NET 技术的剖析方式本身就是一种对 VB 的正名运动,我相信它会改变很多 VB.NET 开发人员的程序设计学习观念。

需要说明的是,这里所言的底层有一个相对性,相对于 VB.NET 这门语言,我们说 .NET 框架就是它的底层;相对于使用 VB.NET 的应用程序开发人员,掌握 .NET 框架就算掌握了基本的底层。如果不看对象而无限推导,任何东西都可以被推导到“表层”。很简单,一个 VB.NET 编译器的开发人员不会认为 .NET 框架是底层,那么这本书对他而言也只是一本小学教材,谈不上价值高昂。所以,大家在阅读这篇译序和全书时,请务必记住本书的定位: VB.NET 应用程序开发人员。另外,本书在 VB.NET 的语法语义方面着墨不多,这方面大家可以直接到网上参考微软 MSDN 文档 中的 Visual Basic .NET Language Specification ,或者 其他类似的书 。

有了好书,也要有好的阅读方法。就本书来讲,我强烈建议大家在阅读的同时多动手演练书中的代码,否则阅读的效果要大打折扣,因为很多技术细节和观念都需要通过代码来反复咀嚼才能很好地吸收。大家演练代码时,建议刚开始准备一个 VBC.EXE ( .NET 框架 SDK 中附带的 VB.NET 编译器)和一个文本编辑器(比如记事本、 UltraEdit 、 Emacs 等),而避免使用 Visual Studio.NET 这样大型豪华的 IDE 。这样的编程方式对一些习惯了可视化编程的 VB 程序员可能有些陌生——但是,请相信我,这样的投入非常值得,从最微观的源代码和最原始的编译器工具开始对于建立正确的程序设计观念非常重要。等待熟练了之后,再使用 Visual Studio.NET 这样的 IDE 必然是游刃有余。另外, .NET 框架 SDK 中附带的 ILDasm.EXE 也是一个很好的工具,经常使用它来观察程序集反汇编后的内容对于深入理解程序运行机制很有帮助。

容我再稍费笔墨简单介绍一下本书的两位作者 Jeffrey Richter 和 Francesco Balena ,以及它的诞生过程。 Jeffrey Richter 先生是 Windows/.NET 程序设计领域享有盛誉的技术作家,著名技术刊物 MSDN 杂志 .NET 专栏撰稿人。 Jeffrey 先生早在 1999 年就参与了微软 .NET 框架的开发与咨询工作,同期写就经典大作《 Applied Microsoft.NET Framework Programming 》。可惜这本书的描述语言为 C# ,虽然其讲述的技术内容对于所有的 .NET 编程语言都同等适用。不过幸运的是,时隔不久 Jeffrey 先生就应广大 VB.NET 社区的要求,并邀请 VB 领域的卓越技术作家 Francesco Balena 先生(很多早期的 VB 程序员应该记得这位 Visual Basic 的“ guru ”)加盟,将《 Applied Microsoft.NET Framework Programming 》用 VB.NET 语言重写,本书便诞生于此。

关于 VB.NET 和 C# 等其他 .NET 语言之间的选择问题,这里不打算做过多的纠缠,笔者只是想告诉大家这实在是个语言语法风格的“萝卜白菜”问题,完全不存在技术之争。如果您已经熟悉了 VB 语言的风格,那么转向 VB.NET 是最为快捷的一条道路。

最后我要感谢所有对本书的翻译给予过帮助和支持的朋友。尤其是 Jeffrey Richter 和 Francesco Balena 两位优秀的技术作家,是他们卓越的技术能力和认真负责的态度成就了这本优秀之作。还有本书的两位技术审校陈铭和韩睿先生,他们的努力为本书增色不少。以及许许多多朋友、知名和不知名的网友,谢谢你们给我的鼓励和支持。

我不奢望每一个 Visual Basic 程序员都能够立即热情地拥抱此书,但是我期望所有有志于在 Visual Basic.NET 领域耕耘的人不要错过它。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus