标题: 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

C#对Java--微软的反击相关推荐

  1. 在平板电脑与移动3G大爆炸的时代,昔日霸主微软的反击

    在Android已经如日中天的时刻,在苹果的市值超过微软的时刻,微软已经意识到错过了未来,但是微软不会坐以待毙,犹如三国争霸的时代,云计算微软投入重兵,但是移动3G,微软会放弃吗? 微软的对抗战略如下 ...

  2. 在平板电脑与移动3G大爆炸的时代 昔日霸主微软的反击

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在And ...

  3. 要闻君说:谷歌云重磅发布两大技术平台;以后可以打飞滴了?SAP重组动荡;微软宣布 Azure Functions 支持 Java...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  4. java、jvm与.net

    现在sun已经被oracle收购了!也从侧面验证了作者的一些论断! 当然从技术上看,这篇文章也是分析很精辟.反正我自己感觉c很好用,java以及所谓的OO更多是一些概念. Java在自取灭亡     ...

  5. 【转】Kotlin 新版来了,支持跨平台!

    作者:Tamic 原文链接:juejin.im/post/5cd8f9- 谷歌在今年的 I/O 大会上宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言(谷歌宣布 Kotl ...

  6. 直接拿来用!Visual Studio 扩展工具利用 AI 强化你的代码

    开发者如何利用人工智能强化代码?现在,Visual Studio IntelliCode 就能简单实现!下面来详细了解下具体如何操作. 作者 | Dirk Strauss 译者 | 弯月,责编 | 郭 ...

  7. 微信公众号开发移动端应用

    目录 1 基于手机API开发 2 基于手机浏览器开发 2.1 混合开发 3 微信公众号开发 3.1 帐号分类 3.2 注册帐号 3.3 自定义菜单 3.4 上线要求 1 基于手机API开发 手机端使用 ...

  8. XX健康:移动端开发-体检预约设计和实现微信公众号注册阿里短信服务

    1. 移动端开发 1.1 移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等,以前只 ...

  9. 百度IFE前端学院-DAY1-Web开发概览

    以下内容主要来自知乎https://www.zhihu.com/question/22689579 用户@张秋怡 的回答: ## 1. 网站访问过程: 本地发送请求 --> 网站服务器接收请求 ...

  10. Unix哲学学习笔记

    语句摘录: Preface 知识和专能差异巨大,凭借知识可以推断该做什么,而专能可以让你在无意见,条件反射似的把事情做好. 少一些技术,多一些共享文化:显见和显微的,直观和潜流的,不止与方法,更重乎理 ...

最新文章

  1. 万引大佬自曝这样被MIT拒掉:“系里不喜欢你”,找校长对峙后悟了
  2. pymysql的相关操作
  3. nginx负载均衡常用的策略
  4. 利用钩子机制取得Windows的消息监控权
  5. (十二)RabbitMQ消息队列-性能测试
  6. R-基础测试(2)——在线帮助(转)
  7. BT5无法启动图形界面问题
  8. HTML led字体包
  9. AMS中控推送系统安装使用说明
  10. 财务需要哪些计算机能力,建设财务共享中心,财务人员应具备哪些能力?
  11. iOS 模拟各种网络环境
  12. 主板有电无法启动_主板灯亮,主板电池有电,但无法开机
  13. 从word中提取图片的三种方法
  14. 装机记录Win10专业版可以做的事……
  15. 中日韩文字Unicode表
  16. 使用Fiddler/Charles+Jmeter进行接口自动化测试和接口性能测试(关联接口测试、接口自动化测试、脚本录制、软件测试、性能测试、测试工具)
  17. 把废旧监控改无人机遥控车红外远程摄像头
  18. 负数在计算机中如何表示
  19. android app安装在存储卡,怎么把应用安装到sd卡?节约手机空间的诀窍
  20. SML中的local

热门文章

  1. numpy 矩阵对角线_python – 使用numpy将矩阵更高的对角线清零
  2. AHU-743 多重部分和问题 【多重背包变种】
  3. python通讯录管理系统
  4. 西奥电梯服务器故障维修,电梯维保须知:西子奥的斯电梯故障分析及解决
  5. 阿里云RDS的内存一直增加
  6. UIUC计算机科学系博士,伊利诺伊大学香槟分校计算机系统博士排名
  7. 免费物流快递单号查询接口快速对接(顺丰、韵达、申通、中通)
  8. 安全站点导航(感谢backlion整理)
  9. python seek(0)_seek() 方法
  10. Ubuntu 16.04 系统装机、编译环境配置及代码编译过程小结