技术开发 频道

8月编程语言排行榜:微软锋利的刀C#

        【IT168 评论】2010年8月TIOBE发布了新一期的编程语言排行榜,51CTO看到前5名的位置还没有变化,关键是第6名的C#与之后的Python互相调换了位置。这似乎对于.NET平台来说是一个好兆头,毕竟C#是.NET平台的一面旗帜。下面我们先看一下本期的排行榜榜单。

1

  C#的降生

  最初C#并不叫C#,它有个更酷的名字,叫做COOL。微软从1998年12月开始了COOL项目,直到1999年7月,COOL被正式更名为C#。在英文中#被读作Sharp,意味“锋利”。看来微软是希望能把C#锻造成一把无比锋利的刀。

  微软在经历了与Sun关于Visual J++的大规模口水仗后,不得不舍弃原有的Visual J++项目,转而提出了CLR也就是公共语言运行时的概念。2000年6月26日微软在奥兰多举行的“职业开发人员技术大会”(PDC 2000)上,发表新的语言C#。C#语言取代了Visual J++,语言本身深受Java、C和C++ 的影响。在讲述了微软C#的诞生过程后,我们不得不提到一位天才——Anders Hejlsberg(安德斯-海森博格) 。

  天才的海森博格VS精明的盖茨

  Anders Hejlsberg(安德斯-海森博格)作为Delphi和C#之父,从Turbo Pascal、SideKick再到Delphi,Borland是Anders辉煌的起点,他在这里成为人们敬仰的软件大师,并一手铸就了Borland传奇。但是1996年一个普通的下午,几个小时前,他刚与比尔-盖茨结束了一次愉快的午餐,同为软件界的精英,他们相谈甚欢,盖茨给他开出三百万以上的年薪和数万股的微软股票。这是一个诱人的条件,但更重要的是,盖茨许诺他可以有充分的时间和资源投身自己感兴趣的技术方向。

1

  Anders Hejlsberg

  1996年,Anders最终正式加盟微软,成为Visual J++和WFC(Windows基础类库)的架构师。现在Anders Hejlsberg是微软的Technical Fellow,担任C#编程语言的首席架构师,也参与了.NET Framework、VB.NET和F#等语言的设计与开发,有关Anders Hejlsberg的更多报道,欢迎访问《Delphi与C#之父:技术理想架构开发传奇》。

  很难说到底是海森伯格的天才征服了盖茨,还是精明的盖茨成功笼络到海森伯格。但是不可否认的是,正是海森伯格的加入,是的微软拥有了C#这一柄十分锋利的刀。让微软得以在开发领域占据属于自己的一片份额,取得与Java分庭抗礼的资格,尽管C#在很多地方借鉴了Java的思想。

  利刃的威力

  微软C#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点。C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义)。但它还太不成熟,不可能挤垮Java。C#还需要进化成一种开发者能够接受和采用的语言。

  C#更像Java一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高。

  Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话)。

  C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就像已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。"

  C#从一开始就是纯粹的OOPL(面向对象程序开发语言)。C#中的一切都是对象:基本的值类型,如int和double,都从Object类继承而来。51CTO-.NET频道向您推荐《C#实用基础教程》以便于您更好的了解C#。

  所有的图形用户界面(Graphical User Interface,GUI)构件--窗口、按钮、文本输入栏、滚动栏、列表和菜单等--都是对象。所有函数都附加到对象上,这些函数称为方法。C/C++中有脱离对象的方法,而C#中没有。甚至是C#程序的入口点(现在称为Main方法)都不再独立存在,而是被绑定到类中。

  因此,C#特别适合于编写面向对象的应用程序,然而仅仅使用这种面向对象的语言并不能保证所产生的应用程序真正做到面向对象!除此之外,您必须理解两个基本目标:(a)如何从根本上设计应用程序以最有效地使用对象;(b)如何正确地使用C#语言。对于更加具体的技术细节,请参考上面的C#基础教程。

0
相关文章