.NET占领市场的速度比原来预期的要稍微慢一些,但是,它向整个市场的渗透却是不可避免的,而且这个过程也不曾有过任何的停顿。许多分析人士都预言,在2003年的第三度,那些采用.NET的主流软件开发企业将会开始设计生产他们的第一批.NET应用软件。这种转变对于那些使用微软产品的团体产生了一定的震撼,而且,现在对于‘VB程序设计人员将要去向何方?’这样的与软件开发的未来密切相关的问题也已经有了答案。
VB为上百万的软件开发设计人员提供了一种便利的开发方式。微软公司在为人们提供足够强大的功能以生产应用软件和让软件开发者远离容易出错的Windows以及各种开发组件的过程中,也品尝到了甜头。
但是,现在的情况已经发生了很大的改变。对于.NET产品,微软公司已经决定创建一个仍然能够把软件开发设计人员同特定的平台分离开来的开发环境,但是这样的话,程序设计人员就将不得不去处理各种有关组件开发的工作了。程序开发设计人员还可以像以前一样在不考虑指针、内存分配、或者如何创建一个Windows消息处理器的情况下来继续他们的工作,但是,程序开发设计人员们不再能够忽略诸如名字空间、过载等等有关组件设计的问题与概念了。
当.NET经过了早期的被熟悉被接受的阶段之后,VB程序开发设计人员将来只能拥有更少的选择,只有选择进行一定的改变。这是一次有关开发语言的震动,而且它也令许多的评论人士开始猜测对于这种种情况,VB程序开发设计人员会产生什么样的反应呢?他们会不会转而去使用Java来继续他们的工作呢?他们会不会继续使用VB并且完成到.NET的这次跳跃呢?如果是这样的话,他们会选择C#还是VB.NET呢?他们会要求微软公司继续支持VB6并且让它保持一定的发展空间么?会不会有许多无法完成转变的程序开发人员将以打零工的方式工作呢?
对于上面的这些问题我是不会做出任何预报的。但是我认为现在已经是时候来把围绕这些问题的三个神话式的说法都澄清一下了。
神话一:.NET是一个从基础上就要发生的转变,因此,转变到Java可能会更加容易一些
对此,Forester Research调查公司的Frank E. Gillett做出了如下的论断:
“对于VB程序设计人员来说,完成到.NET的转变并不比完成到Java2平台下工作的转变要容易。这意味着什么呢?对于微软公司来说,现在是到了让他们重新考虑对Redmond的承诺,并且重新评估Java2、.NET平台以及各种工具软件的时候了。”
我们需要提醒的是:“管理人员要注意的是,这样的做法将会花费数额巨大的一笔资金,这是没有人愿意看到的!”如果你能够注意到这些语言的基础元素(尤其是在Java与C#语言之间的),你就能够理解这种观念是从何而来的了。因此,与VB应用软件的要求有所不同,开发和设计技巧所要求的都是相似的或者是相同的。但是,有许许多多的重要的因素也要被考虑在内。下面所列出的仅仅是它的一个子集。
Java开发环境总是显得要更为复杂一些
在Java环境中可以被使用的为数众多的工具,作为已经经过证实的那些强大能力中的一种,很自然的就导致了许多新的应用软件和工具的产生(应用服务器、IDE、调试工具),这些都是软件开发设计人员必须掌握的。每一种新的技能都拥有它自己的学习曲线,即使当这些开发将会在一个Windows的环境下被完成情况下也是如此。从另一个角度来说,经过许多改进的Visual Studio,对于那些VB程序员们来说会觉得更加简单而容易掌握。他们马上就能够明白如何设置断点或者如何使用完成编码的那些功能特性。试图同时完成从开发语言、开发工具以及各种基础结构转变是有很多不利之处的,很有可能会不得不需要增加更多的资金投入,而且失败的可能性也会比较高。
使用.NET可以提升完成转变的可行性
绝大多数的软件开发公司都有自己的可以接受的最后期限,并且,在完成项目的计划中,并不会包括用来完成应用软件以及基础结构转变的那少数几个月的时间。ASP.NET的页面能够和ASP页面并行的运行,并且它还能够共享管理机制,但是,如果想要完成到JSP的转变,则需要做出更多的努力才能实现。从C#以及VB中调用COM对象的机制已经在一些文章、书籍或者会议上被讲解过了。COM+ Services的结合体也被很好的记录了下来。
大量“来自VB6”的东西也是可用的
有一件让我感觉十分惊奇的事情,那就是,只有很少的资源能够帮助我们完成从VB到Java的转变。虽然我曾经见过一些帮为了助人们完成这一转变而开设的客户培训课程,也见到过一些相关的书籍(其中绝大多数在现在看来已经是过时的知识了),但是,这些课程和书籍对于帮助完成这样的转变是远远不够的。正如你可能期望的那样,有很多的书籍是关于如何完成到VB.NET以及C#转变的,其中包含了非常详尽的各种编码以及技巧性内容。在有了这些材料之后,程序开发设计人员可以更为快速而便捷的完成他们的转变。
我建议以下面的内容作为上面那个神话的一种替代:
转变到Java并不象转变到.NET那样的简单,但是如果你考虑要进行这样的一次转变,现在是到了该下决心的时候了。
自从出现了VB以来,到现在这次要求程序员完成到.NET的转变,是微软公司让Visual程序开发设计人员所做的最大的一次改变了。如果你已经考虑过要转而使用Java,一定要考虑清楚这样做的后果以及紧随其后的费用。
神话二:有大量的VB程序开发设计人员将要转而使用Java
过去,这些程序开发设计人员转而使用Java的其中一个原因就是,Java语言在性能方面要远远的超出VB6,这种超前的距离可能是以光年为单位的,而且,Java在编制大型的、面向对象的应用软件方面的表现也尤为突出。人们可以争辩说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文件以外,VB.NET拥有C#所拥有的所有强大功能,而且还得加上一些额外的功能特性,比如说它可以提供完全实时的错误检测,光是这一点就可以让C#程序开发人员羡慕不已了。
我非常同意下面的这句话:“既然VB.NET与C#是如此的相似,那么做出决定可能并不需要那么多的技术背景。”
Perception仍旧是这个市场的一个驱动力,而且对于程序开发设计人员们来说,C#也是一个全新的领域。如果VB.NET的动作不是那么迅速的话,第三方的工具支持的出现也并非不可能。C#有可能成为许多VB程序员的最佳选择并不是由于它在技术上拥有先天上的优势。
弄清楚问题的实质与核心
没有上面这些所谓的神话扰乱我们的视线,我们就能够进一步的弄清楚问题的实质。在在以后的文章里,我将会向大家介绍一些完成了到Java、VB.NET或者C#转变的VB程序员以及开发小组。而且,我还会检查他们为完成转变所花费的代价,并且还要从他们的经验中学习,如何才能够让转变的影响变得最小,以及如何以最少的资金投入就可以完成转变。