C#对Java--微软的反击

标题: C#对Java--微软的反击?
发信站: 南京大学小百合站 (Thu Dec 19 13:51:09 2002)
最近微软宣布了它的最新编程语言C#,这是一种面向对象的编程语言,它将作为Visual S
tudio中的一部分推出.C#(发音为"C-Sharp")既保持了C++中熟悉的语法,并且还包含
了大量的高效代码和面向对象特性.据微软产品经理透露,C#语言将在保持C/C++灵活性的
基础上为程序员带来更高效的RAD开发方式.它不仅能用于WEB服务程序的开发,并且还能
开发强大的系统级程序.
微软还没有正式宣布这一新语言技术,该技术将以测试形式出现在微软打算在7月中旬
在专业开发会议上分发的Visual Studio 7中.Visual Studio 7将于明年某个时候正式发
售.
Layman介绍说C#包含使XML编程更为轻松的技术.微软将使它的下一代工具软件、操作
系统和应用支持XML技术.
新的编程语言还将包含虚拟机设备.微软官员已经公开表示C#技术和该公司去年开发
的Java竞争技术Cool没有关联.微软官员拒绝回答是否计划在Visual Studio 7中提供微
软设计的视窗版Java Visual J++的某个版本.
C#的特性
现在,微软仍在一边继续反驳其竞争对手Sun控告它改变了Java语言的诉讼,一边在对
美国反垄断指控顽抗到底,但与此同时,微软的天才程序员们也在技术上进行着一场补救
的措施.那就是他们已经开发出来的C#语言,这是一种非常类似于Java的语言,微软深知
即便是微软阵营中也有着相当一部分人喜欢Java语言,所以这次干脆就用C#来满足他们的
愿望,这是一种非常完美的语言,适用于各种操作系统,并且与Windows紧密地结合在一起
.
微软表示这种新的程序设计语言并不针对Java,但它将是C++的革新.而这正是Java所
追求的两个主要目标之一(另一目标当然就是可移植性).微软一直梦想着能开发出能与
Java在Windows NT系统上抗衡的语言.C#的自动内存管理以及和Java一样都使用的C语言语
法,似乎让这个理想成为现实.
微软称C#是由C和C++派生而来的一种"简单、流行、面向对象、类型安全"的程序设
计语言,C#意在综合Visual Basic的高效率和C++的强大功能.但这种说法是否准确呢?由于C#的结构很像Visual Basic的Active 它显然是冲着RAD开发者来的.但同时,"C#提供
了C++的强大功能"这种说法也稍嫌夸张,将来很可能变成空头支票.
对某一对象接口的更新,微软称之为"继承",当然"继承"是就"对象"而言的.
但是,虽然"对象"这个词我们经常碰到,却很少有人真正理解了它的含义.微软的用户
,甚至它自己的员工都经常把"对象"和"接口"弄混.所以微软干脆就用接口来定义各
种对象,结果导致了"面向对象编程"(OOP)被微软弄得乱七八糟.现在,微软又在大踏
步地前进了(虽然它内心还是很小心),它把它建立在接口基础上的"对象"集成到了开
发工具里.不过它走得实在过了头,它甚至把对另一对象接口的更新称之为"继承".
这个"继承"给程序员们带来的好处就是语言无关mm只要接口维持其兼容性,用Vi
sual Basic写成的对象在C#和C++中也可以良好地运行.但此特性是以真正的OOP技术和平
台的可移植性为代价的.每个对象都被编译和注册到Windows子系统,只要你能访问这个子
系统,你就能访问这个对象.来吧!欢迎来到.NET和NGWS的世界!mmWindows平台从来没
有完完全全地让人产生这样完整的依赖性.他们的动机当然要遭到全世界对微软有偏见的
人的怀疑,当然,完全依靠此技术的C#也不例外.
事实上,C#将是完全依靠Windows的最完美的产物.那些困绕Java SDK, MFC 和SET的
数据库已成为过去.你想放入C#的任何东西(无论何种语言),只要在Windows的.NET子系
统下建立和包装的都可以使用Windows的运行库.
用MSIL进入.NET
当人们访问Usenet或一些新闻组时,会有一些诸如新语言和平台有效性之类的问题.
什么时间和努力能解决这些问题呢?当然,如没有牢固的事实和有说服力的证据,即使是
最有帮助的响应者,权威机构也会对他的断言持保留意见.我没有参加今年的专业开发者
会议(PDC),因此我的发现都是基于那些与会者的反馈.
人们对微软过去几周的大肆宣传,最基本的错误理解就是C#只是Visual C++的改进版
本.完全不是这么回事.C#和Java没有直接联系.它的特征设定是从Java获得的灵感.它
的语法同Java一样,源自C和C++,但它的执行是完全新的,只依靠.NET结构.
C#也并非字节码(bytecode).微软一位员工罗伯特.舒密特详细描述道:"C#编译程
序产生的是l微软中间语言r(MSIL)hh但虚拟机或其他类似的技术则不能用于解释这
种中间语言(IL).相反地,每当应用程序载入或JIT编译程序需要编译它时,IL就会被转
换成本地代码.一旦这种转换完成,可以执行的代码实际上是本地代码."实质上,虽然
这种方案有点像Java程序通过一个JIL编译程序,但这里最终的JIT编译是100%的本地代码
,而Java的JIT产生的结果是不同的.
C#的弱点
这个方案也暴露了微软对C#和.NET介绍中的一些有趣的漏洞.MSIL是.NET提供的一个
新特性,允许很流行的程序设计语言编译到一个单独的公用语言.(.NET支持的语言种类
是相当惊人的).这些语言都要服从一种叫"通用语言规范(CLS)"的构架.微软称之为
"CLS兼容语言和类库之间可互操作的通用语言".
编译所有的语言到一个单一的公用语言上,能让"继承"通过多重语言真正执行.这
轻而易举的扫除了C#可能遇到的错误概念..NET组件使用COM的IDispatch,它只允许接口
执行.它比先前C#被评定为一种OOP语言的看法容易接受得多.它在程序设计上或许像Jav
a一样是面向对象的.
但不幸的是CLS这种包括MSIL的共享语言基础,只让RAD开发者受益,而损害了硬件的
核心开发者,有人认为创造一种新程序设计语言的目的就是有能力充分运用它和服务于可
微调的执行能力,这一点在CLS世界里是做不到的.老实说,加速充分利用从来不是许多语
言的唯一目标.许多语言的唯一目标(最瞩目的是像Visual Basic和Java的RAD语言)是加
速和美化开发和展开能力,而不仅仅是运行时刻的速度.
舒密特文章中所提到的确实包含了相关和值得注意的评论:你可以用C++指定.NET,并
在你的代码中运用所有C++特性.同时,因为.NET在运行时刻不能检验C++代码是否安全,
此语言并不遵从CLS规范,里面所书写的程序也受到限制.作为应对,微软往Visual C++里
添加非标准管理的扩展.用这些扩展写的代码能符合CLS规范.
C#将把微软领向何方就一目了然了.因为所有项目编写会只依靠MSIL和CLS JIT编译程
序.这样C#或任何MSIL前端语言比Java任何时候都快.但很不幸,程序设计和编译程序级
的优化不能在非微软的平台上充分利用,想在非Windows平台上展开.NET,再充分运用它们
也是不现实的.
JAVA是C#的竞争对手
尽管.NET是微软一手缔造的,它并不是只能在Windows上使用.微软准备尽力为那些C
OM对象提供传统帮助(所有的OLE, ActiveX等等在下一代Viual Studio推出后,都将成为
一个legacy平台).但.NET不会围绕COM建造.新平台无疑将补充COM,并与它几乎天衣无
缝地配合,但一点也不会依靠COM.这表明这种结构本身能够Macintosh, UNIX. BeOX展开
.这样命名,是因为除了CLS构架是平台独立的,C#将用到的和所有遵从CLS的数据库也是
平台独立的.也就是说,它们都是遵从CLS的,如果一个本机MSIL编译程序在平台上有效,
那么它们能在运行时刻为任何结构进行编译.微软也积极争取被ECMA标准接纳,他们先前
的Javascript已被接纳. 当Visual Studio. NET推出时,开发团体肯定会有不同的反应.
"微软又开发了一个新平台",这已吓倒那些本来对微软平台统治忧心忡忡的人了.然而更
重要的是C#或.NET战略不会对原始C++构成太大威胁,那么有理由推论C#和.NET将是Java的
有力竞争者.考虑相反方面:Java VM靠翻译字节码来运行应用程序.CLS在运行时刻本机
编译.Java平台只支持Java语言..NET只支持MSIL,但一些无限制的高级语言如C#,Visu
al Basic,甚至Eiffel和COBOL都能启动MSIL.Java运用执行转接提供真正的OOP技术.MSI
L,C#也是如此.在Java平台,简单地移动平级文件,项目就可以展开为产品目录.据说,
.NET平台的项目也可轻松展开而不像以registry-happy Com为基础的项目.或许Java平台
真正的优势只在于政治上的正确性--它不是微软搞出来的,且目前有成千上万的执着的宗
教追随者.
作者的看法
具有讽刺意味的是,虽然我很了解Java和C#,我仍被冠以高级Visual Basic程序设计
师的称号.人们会认为我这样一个VB设计师将是反对微软的偏执狂.但我也得面对现实.
老实说:VB是一个RAD开发工具.别只顾着精美,别记着真正的对象.迅速得到结果才是重
中之重.在商业世界里,纯粹的技术和结果不总是能相吻合的,短期结果往往胜过长期生
产力.这是不幸的,但在许多公司中,这却是事实.这些公司就是C#的主要用户.我会使
用C#吗?当然会用!我现在使用Visual Basic,但转入C#有何不好?我更欣赏Java和OOP语
言的精美,但因为我进行的所有项目中,短期成果一直胜过长期成果,我已没有时间去考
虑替换Windows平台.但如从纯技术和信仰角度来说,Java和C++的程序设计师就有足够理
由关注C#,这是微软维持垄断的又一招.
最后,C#是好还是不好?那么,因为这里的"继承"指对接口界面的再执行,所以,
它不是真正的OOP.如果你是微软,亦或如果你依靠微软技术而不准备切换平台,那C#是很
棒的,并将为VB程序设计师们搬运Java和C++上的技巧提供很好的基础(因为语法是共享的
).但因为微软将全力推出C#,所以,Java和C++的拥护者们肯定会设计出新的语言,予以
还击.同时,C#不一定可转移到其他平台,也不能真正体现OOP的价值,甚至对OOP的初学
者有害无益.
--
兜售"盲目信仰大宝丸"与配给"盲目服从万金油"的两个敌对意识形态,它们之间距离
是一万光年,是我缩短了这个距离,因为两边的顾客甚少差别,都疏于理财,却热衷暴利
.(by特留尼西特)
来源:.南京大学小百合站  [FROM: 218.2.138.66]

转载于:https://www.cnblogs.com/521taobao/archive/2012/03/17/2402525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值