|
|
Eric Lynn‧郭和杰整理
虽然.NET的进展速度比原来预期的还要稍慢一些,但是,它向整个市场的渗透却是不可避免的,而且这个过程也不曾有过任何的停顿。许多分析师都预言,在2003年的第三季里,那些采用.NET的主要软件开发组织都将会开始部署第一批.NET的应用软件。对于微软的开发社群来说,这场迫在眉睫的巨大转变,让他们对未来的软件开发不禁产生了一个疑虑──Visual Basic的开发员将何去何从?
VB为上百万的软件开发者提供了一种便利的入门开发方式。微软一方面提供了强大的工具供开发人员生产应用软件,一方面又可避免开发人员介入Windows与组件开发的复杂过程。
但是,现在的情况即将改变。微软的.Net产品虽然依然不必让开发人员涉及平台细节,但程序工程师还是得处理组件开发的部分。程序开发员还是可和以前一样,工作时不需考虑指针(pointers)、内存分配(memory allocatio)、或者如何建立一个Windows讯息处理器;但是,他们再也不能忽略诸如inheritance,namespaces,以及method overloading等等组件设计的概念了。
随着.NET通过了初期玩家阶段,VB的开发员显然只能逐渐脱离VB 6.0的保护伞。这场即将来临的「语言大地震」,让不少评论人士开始猜测,VB的程序开发者将做何反应?他们是否会转向Java?他们会不会继续使用VB,并投入.NET,如果是这样的话,他们会选择C#还是VB.NET呢?他们会要求微软继续支持VB6并且让它保持一定的发展空间么?会不会有许多无法适应转变的程序开发员只能沦落去零售通路找工作,就像之前Java和C++程序设计师所认定的一样?
对于上面的这些问题我不打算做任何的臆测,但我认为现在该是破除一些相关迷思的时候了。
迷思一:.NET改变幅度很大,因此转到Java可能会更容易
对此,Forester Research调查公司的Frank E. Gillett做出了如下的论断:
「对于VB程序设计师(微软阵营中绝大多数的程序设计师)来说,要转换到.NET与转换到Java2平台是一样的困难。这是什么意思?对于微软开发厂商而言,现在该是重新思考对微软忠诚度的时候了,同时要将Java2与.NET平台以及工具拿来作平行比较。」
这句引言应该还附上如下的警告卷标才是:「经理人注意:此项评估意见将所耗不赀。」从微软转向Java开发商是一项浩大的工程。你光是了解一下语言的部分(尤其比较Java与C#语言),就能够理解上述警语绝非凭空杜撰。当然,两者的开发与设计技巧都绝对与VB的要求全然不同,但是,有许许多多的重要的因素也要被考虑在内。
下面所列出的仅仅是其中一小部分。
Java开发环境比较复杂
Java环境中可用工具众多(这可视为Java的最大力量),很自然的就会衍生出许多新的应用程序与公用程序(如应用服务器、IDE、除错支持应用),这些都是软件开发员必须掌握的。每一种新的技能都会有学习曲线,既使在Windows环境下完成开发也是如此。另一方面,Visual Studio虽然风貌已有所不同,但VB工程师可能会觉得比较容易掌握。他们马上就能够知道如何设断点(breakpoint),或者如何使用完成编码的那些功能。若试图同时做全面性的转变(开发语言、工具组,以及基础架构),只会让这种转变成本更大,更容易失败。
.NET可采渐进式的转变
软件开发公司对自己的底限大多心理有数,但是在几个月内就要整合应用程序及基础架构应该不会是他们所能接受的计画。ASP.NET的页面能够和ASP页面平行执行,而且它还能够共享管理机制,但是,如果想要转到JSP,则需要更多的努力。从C#以及VB.NET中呼叫COM对象的机制已经在一些文章、书籍或者会议上谈到让人倒胃了。和COM+ Services的整合也都有详细的论述。
「跳脱VB6」参考书籍众多
我一直觉得很讶异,市面上探讨从VB转到Java的教材少得可怜。虽然我见过一些相关的培训课程,也见过一些相关的书籍(大部份都已经过时了),但是,这类型的资料显然不足。而可想而知的是,讨论如何转变到VB.NET以及C#的书籍却是不少,教开发者如何提升编码以及技巧。由于教案中已经有部分是他们熟悉的东西,开发人员的接受度将比较容易。
我提出以下的看法来取代以上的迷思:
转变到Java的确不像转变到.NET那样的简单,但如果你考虑要做这样的转变,现在该是下定决心的时候了。
自从VB问世以来,.NET可以说是微软要Visual程序开发员所做的最重大转变。如果你考虑过要转到Java,当然是要在投入成本之前就做出决定,而不是之后。
VB6工程师的未来在哪里?
迷思二:许多VB开发者将转到Java
过去程序开发员转到Java的最有力原因已经消失了,也就是Java语言在建立庞大及对象导向的应用程序上,远非VB6所能比。或许有人会辩称,Java还是很适于这些工作,但是,至少这是还有待争议的问题。在.NET出现之前,这个问题没有什么争议,要在Visual环境下建置功能强大的对象导向设计是不太可能的。ASP就是一种庞杂的工具,经常导致速度缓慢,以及无法维护的程序代码,VB以及ASP AntiPatterns足足可以让你写成一大本书。当然,那些要看上Java技术优越性而转向者应该也差不多都转移过去了。想要从.NET再转向Java的人应该会少之又少,且即使这么做也是因为其它因素的缘故,比如说被厂商绑住及有安全考量等。
我认为,VB程序开发者的未来其实相当光明。肯定会有一定比例的开发者无法越过这次的升级门槛。VB程序开发员的开发能力与角色都不尽相同。在较低阶的一边,他们已经和Excel电子表格胶不离漆,写的都是单一屏幕下的公用程序;但在较高阶的一边,工程师则可在撰写高度分散的电子商务应用软件。这些软件开发者之中有一定百分比的人,他们的兴趣、努力以及能力将处于VB6和VB.NET之间的不上不下阶段。零售可能不是他们的未来,但是他们可以转变成为一种支持的角色,而退出撰写程序的行列。其它绝大多数的软件开发者则会转向.NET。
迷思三:想转变到.NET,就必须改用C#
C#目前名声已经很响。它非常新,非常酷,而且炙手可热。但是不同于C语言的语法,C#基本上与VB.NET是一样的。现在这些情况也已经让人们有所了解。以下是我最近与一名C++工程师的对话,他已经从C++转到了C#。
工程师:「我不明白为什么所有的人都想要学习VB.NET。」
作者:「怎么说?」
工程师:「有许多事情是VB.NET做不到的,但是C#却可以做到。」
作者:「真的吗,举个例子?」
工程师:「VB.NET不能做attributes!」
作者:「VB.NET可以啊。」
工程师:「是可以,但它能不能delegates呢?」
作者:「是的,这个它也可以做到。」
所以,在专业人士中也存在着一定的误解。Dan Appleman在他的电子书「Visual Basic .NET还是C#…到底该选择哪一个?」将这个问题处理得很漂亮,这本电子书可以在Amazon.com上找到。除了缺乏对于超载的支持和不支持XML?n以外,VB.NET拥有C#所拥有的所有强大功能,而且还有一些额外的功能特性,比如说它可以提供完全实时的错误检测,光是这一点就可以让C#程序开发人员羡慕不已了。
我提出下面的另类看法:「既然VB.NET与C#是如此的相似,那么这个抉择是非技术性的问题。」
「认知」(Perception)仍旧是就业市场的一个驱动力,而且对于程序开发者们来说,C#也是一个全新的领域。另外,若VB.NET无法形成气候的话,第三方工具的支持也将会是个问题。C#可能是许多VB工程师的最佳选择,但这并不是因为它在技术上拥有先天的优势。
弄清楚问题核心
在摆脱了以上迷思之后,我们就能够进一步检验一些演生的问题。未来,.NET还是会在现今的VB开发者圈子中拥有一片天。
|
|