说到“优秀”,我阅读了微软研究院(Microsoft Research)发布的许多材料。坦白说,那些都是相当不错的材料。当然,其中有许多内容我不懂,但我的理解水平正在逐步上升。我记得微软研究院没有发表任何有关VB.Net的材料。
实际上,与VB.Net相比,我看到更多讨论F#(再者,这是微软研究院的一个项目)的作品。微软自己的研究员也故意避开VB.Net。例如,我看到一组优秀的线程安全组件库,它们没有为了超高速性能而使用锁定——它们就是用C#编写的。
在最初推出C#时,似乎(很可能就是)微软提供了一个结束Java的策略,以帮助Java程序员轻松过渡到.Net平台。这样说有一定道理,VB.Net非常接近典型的VB语言,所以他们可以实现轻松过渡,.Net已经支持C++,那么剩下的唯一功能真正强大的语言就是Java。
我一直认为,微软用C#吸引Java程序员使用.Net,然后又对他们置之不理。相反,我看到微软投入大量资源,使C#不仅在语法上结束Java,而且在特性组上成为一种令人异常兴奋的语言。
C#不再只是与Java竞争——它在吸引VB.Net程序员方面也表现得相当不错。
现在,揭示一个残酷的事实:由于以下这些原因,我从未真正使用过C#:
- 我一直可以编写出VB.Net程序员能够维护的代码。
- VB.Net总能满足我的需求。
- 用VB.Net可以写出简明的代码样本,因为它的语法十分详细,人们不需要学习VB.Net就能够理解代码的用途。
说到这里,我读过大量的C#代码,也知道它非常优异。我确信经过几个小时的应用之后,对Java的记忆(我又一次讲到“结束Java”的陈词滥调)就会蜂拥而至;另外,对C风格的语法的深入理解也会造成影响,我马上就会感到得心应手。只是现在我还没有使用C#的动机。
暂时来说,VB.Net是我首选的.Net语言;F#也开始赢得我的心;出于商业原因,我需要研究IronPython(我怀疑,在不远的将来,我们需要一种动态的语言)。
我向自己承诺,我会在下一个小型项目(为期一天或更短)中试用C#。我觉得VB.Net不会比现在有更大的发展,虽然它不会被废弃。随着我不再把库胶合在一起,并将编码时间用于技巧研发等此类事情上,我需要一种具有前瞻性的语言。
VB能够与C++程序员编写的COM组件兼容,就像VB.Net可以方便的嵌入.Net Framework(还包括通常的Windows API)一样。F#非常优秀,但现在还缺少商业支持。
IronPython(我最后一次提到)不能与Visual Studio兼容,这是我书中的一个重点内容。那么,就只剩下C#了。我感到非常激动?并不是这样。我喜欢他们使用C#,但不是C#本身。但我感到VB.Net已经走到了极限。