C#断想

荣耀  2002

C#是现代语言的杰出代表,是C/C++语言家族里第一门面向组件(component-oriented)的语言。

C#酷似Java,这没什么好奇怪的。语言发展到今天这个份上,类型系统和控制结构肯定都会大差不差,是不是非得换几个反习惯的关键字才叫创新,我想,任何一名理智的开发者都不会赞成这个观点。

今天,谁要能发明一种跟Java或C#很不一样的深度面向对象的程序语言,我不惊讶才怪。

从大的方面来看,C#借鉴了Java语言设计思想,这一点毋庸置疑。纵然如此,我仍然不赞成简单地把C#看成是Java的克隆。

C#保留了枚举,并进一步增强了对枚举语言特性的支持。更重要的是,尽管它的设计者不赞成在C#中使用指针,但仍然完整保留了使用指针的能力,这一切,都使得C#远比Java更亲近C++。

本质上,C#更是.NET CLR语义的C风格的语法表达。

C#在一些语言细节上的改进,比如布尔值和整型值不能象在C++中那样互换,体现了一门现代语言应有的严谨。当然了,这是个仁者见仁、智者见智的问题,或许C/C++程序员并不这么认为。

C#程序的变量命名方式,不再鼓励使用老式的匈牙利记法,而推荐使用Pascal记法,这也使得这种语言看上去更加现代。或许在一个一切都是Object的语言里,为变量加上表示类型的前缀,意义的确不大:)

在我看来,C#语言难度介于C++和Java之间,且应在Object Pascal之上。

C#不但是Java强有力的竞争对手,它也会削弱Delphi(Object Pascal)的势力。

尽管微软一再申辩,中间语言(IL)之类的东西,绝不是什么新思想,特别是,它并非由Java首创,但Java字节码(byte code)的巨大成功,无疑增强了微软的信心。走这一条路,不会有太大的商业风险。

目前没有 将来也不会出现语义和CLR完全映射的.NET语言。即便是C#,在很多语义细节方面,和CLR之间亦存在诸多微妙的差别。

但是,纵然如此,C#仍然是.NET最佳语言拍档 — 尽管Visual Basic .NET也是.NET平台上一等语言。假如你打算要做一名地道的.NET开发人员,C#就是最佳语言选择。

C#和Visual Basic .NET本质不同点之一在于C#允许编写不安全代码(unsafe code),而Visual Basic .NET不可以。

脱离.NET谈C#意义不大,C#的应用离不开它赖以生存的土壤。和C++标准库对C++语言的重要性相比,.NET框架类库对C#语言的重要性,有过之而无不及。

C#和.NET框架类库之间的关系,就象是鱼和水的关系。.NET水中可以没有C#这条鱼,.NET水中肯定也不止C#这一条鱼,但C#这条鱼一旦离开.NET,也就不会有什么生命力。而且,C#无疑是.NET水中最引人注目的鱼。

假如SUN允许微软定制Java的话,还会有今天的C#吗?我的观点是,微软肯定会弄出个C#语言来,C#的出现,有其历史的必然。

道理并不复杂,微软并不拥有C++,它只能在C++规范所允许的范围内,做出某些扩展。怪模怪样的Managed C++,绝对不会成为普及的.NET语言。C++本来就够复杂的了,现在,Managed Extensions for C++又向C++里增添了更多的复杂玩意。

Visual Basic是微软自己的语言,它可以爱怎么改就怎么改,但Visual Basic留给广大开发人员根深蒂固的难登大雅之堂的小气印象,使得纵然Visual Basic.NET已经脱胎换骨,也难以吸引更多的开发人员。

作为一门年轻的语言,C#还有很大的发展余地,泛型技术绝对是其潜力最大的发展空间。

但我认为泛型技术不太可能进入通用语言规范(CLS),道理很简单,并不是每一种.NET语言都有能力支持泛型编程。

C#会吸引C++编程人员吗?世界上最自命不凡的编程人员恐怕就是C++程序员了,尽管绝大多数C++程序员并不能游刃有余地运用C++。

C#会吸引Visual Basic编程人员吗?那是喜欢C#的人的一厢情愿。不管你如何地讨厌Visual Basic,但Visual Basic编程人员自己大都不会这么认为。叫一个早已习惯了不区分大小写的Visual Basic程序员来使用C#,说不定是一种受罪。

C#会吸引Delphi(Object Pascal)程序员吗?Delphi程序员认为自己拥有世界上最好的开发工具,或许Anders Hejlsberg的个人魅力,会使得一些Delphi爱好者转投C#。

C#会吸引Java编程人员吗?看起来C#和Java势不两立。自C#诞生以来,两大阵营的争吵就没有停止过。让一个使用Java的程序员转用C#,那和逼迫一个虔诚的教徒改变其宗教信仰一样困难。

新事物的出现,总会伴随着鲜花掌声和诋毁谩骂。

Java问世之初,好评如潮,但也受到了大批想不开的C++开发人员的群起围攻,但Java终究取得了巨大的成功。现在,C#的来临同样招致了大量的怀疑和诽谤,就象Java当初所遭遇的一样。

假如说有什么不同的话,那就是这一次除了狭隘的C++人员外,一些Java程序员也加入了叫骂的行列,完全忘记了自己当初被C++人员骂得狗血喷头的狼狈相,完全忘记了直到今天自己仍然被某些C++程序员蔑称为二等公民。

那么,C#究竟会吸引哪些人呢?

他们可能会是:任何理智的“面向微软”的企业级软件开发公司,决定要走微软.NET技术的路线的企业软件开发人员,初涉软件开发领域的生力军,勇于尝试新鲜事物的朝气蓬勃的学生。还有,象我这样的总是对老技术感到厌倦、喜欢不断变换口味的、希望跟上技术进步的程序设计者。

C#不会吸引哪些开发人员呢?

任何“技术守旧者”。这些人,要么害怕学习新东西,要么对自己已经掌握的技术过于自信。

我曾遇见过一位老兄,他说,***是世界上最好的开发工具。这种开发工具的名字,说出来,能把你笑死。这种人,怎么能干好软件开发这个行当?

-完-