程序员的苦恼选择VB.NET还是C#

来源:岁月联盟 编辑:zhu 时间:2007-02-01
我写这篇文章的目的就是想帮您解决这个问题。我并不是想动摇你倾向哪一种语言而是想解决一些大家在基本问题上的疑惑,以便大家能够作出自己的决定,选择一种自己觉得用起来最舒适的语言。我将尽量避免讨论一些语法上的模棱两可的话,就像“C#的括弧太多了,”“VB.NET句子太冗长,”或者“我讨厌C#(或者VB.NET)因为它能(或者不能)区分大小写。”之类的话。评论语法的好坏是你个人品味的问题。相反,我将着重讨论一些我见到的关于这两种语言的技术方面的讨论。

  在C#方面

  作为微软公司最新的一种语言,并且由于它又是Java语言的小翻版,C#引起了广大的关注。

  人们看上去喜欢一种语言仅仅取决于它是最新的,程序开发者们总是喜欢用最新的工具工作。其它的一些选择使用C#的理由更为具体一些。

  领导潮流的东西总是无懈可击的

  “如果我正准备学一门新的语言,我还是应该学C#。”这也许也是你经常听到的言论。那些推理总是这样进行的:“VB6转变到VB.NET变化已经非常大了,以至于它基本上就是一门是新的语言。如果我无论如何打算学习新语言,我想还是学C#吧,因为它是特别为.NET类的库设计的。”

  这也是我听到过的关于这两方面的最苍白的争论。你也可以同样理直气壮的说,如果我无论如何打算学习新语言,我想还是学VB.NET吧,毕竟它也是一门新的语言。另外,让我们想想为什么VB.NET从其先驱者那里如此激烈地演变到现在的样子:它为了适应.NET类的库而被重新设计了。

  对比管理过的和没有管理过的代码

  “C#允许我写那些运行在CLS存储器控制之外的非管理代码,我可以直接访问存储器,并且使用指针。让代码自由地运行,包括使用存储器的管理,可以得到更高的效益。”这个观点有3个问题需要考虑:首先,我们不应该在Beta版本的开发环境下讨论性能问题。举个例子:在.NET的Beta1和Beta2版本之间有显著的管理代码运行速度的改善。第二,我们还不能把非管理代码比管理代码能获取多少利益量化,并且是否值得为了这些好处冒险。可以去看看Eric Gunnerson在MSDN上的这篇文章。第三,尽管VB.NET不能建立非管理代码,它能通过System.Runtime.InteropServices 名字空间的使用,来访问并工作于非管理存储器。

  C#有内置的XML文件编制器

  “C#编译器包括直接被嵌入成为源代码的XML文件编制器在内。如果我使用C#,我同时编写了代码并编制了文件。”使用过JavaDoc的人都知道,把你的文件编制加到你的源代码中是多么的有用。源代码和文件编制可以同时更新,因此至少在理论上讲,你的文档永远都不会过时。不过,以我的经验来看,相对少数的Java开发者还是在使用JavaDoc。这样,问题就变成“你将使用它吗?”如果你的对这问题的解答是“是”,你有足够的理由试试C#。
关于VB.NET又怎么样呢?