美高梅官方网站66159

那是一种面向对象的编制程序语言

作者:美高梅线上平台游戏    来源:未知    发布时间:2020-04-29 14:42    浏览量:

图片 1

翻译整理 毛竹 南海
C#介绍
最近微软宣布了它的最新编程语言C#,这是一种面向对象的编程语言,它将作为Visual Studio中的一部分推出。C#(发音为“C-Sharp”)既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。据微软产品经理透露,C#语言将在保持C/C++灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。

新闻来源:MSDN Magazine

微软还没有正式宣布这一新语言技术,该技术将以测试形式出现在微软打算在7月中旬在专业开发会议上分发的Visual Studio 7中。Visual Studio 7将于明年某个时候正式发售。

微软刚刚将其 Windows 系统对 Visual Basic 6 程序的完全兼容支持延长到了 Windows 8 的整个产品周期. Visual Basic 6 最早发售于 1998 年, 所以现在来看 VB6 程序将至少被支持 24 年. 相比之下 .NET Framework 1.1 (2002 年发行) 则仅仅被支持了 7 年, 到了 Windows 7 (2009) 便被微软抛弃了. 我的一个学生曾经开玩笑说过 Visual Basic 6 就像 Windows 环境中“杀不死的小强”. 实际上这个比喻不无道理 - 蟑螂生存的秘诀在于它的简单, 它们所做的所有事情就是在自己占据的角落里坚持活下去, 除此之外什么都没有. 同样, Visual Basic 6 也满足了开发者为它预设的市场的所有需求——允许经验不多的程序员快速开发简单的程序. Visual Basic 从未被当作一种提供给专业程序员开发复杂程序的语言.

Layman介绍说C#包含使XML编程更为轻松的技术。微软将使它的下一代工具软件、操作系统和应用支持XML技术。

Visual Basic 6 实现其价值的方式是将 Windows 的各种复杂之处简化, 因此简单的工作对于 VB 来说非常容易完成. 不过另一方面, 相对复杂的工作比如使用线程则基本是不可能的. 对我来说有一个经验规则很有用:VB 中, 用了十分钟实现不了的功能对我来说肯定是没法实现的. 此外 VB 成功的另一个关键之处是由于其提供的功能较少, 所以所需的学习时间和学习难度也较低. 举个例子说, 就是学习开巴士需要的时间显然比学习怎么开战斗机少, 而成为一个优秀的 Visual Basic 程序员需要的时间也显然比成为一个优秀的 C++ 程序员少; 而当时 Visual Basic 6 面对的主要同类对手就是 C++.

新的编程语言还将包含虚拟机设备。微软官员已经公开表示C#技术和该公司去年开发的 Java竞争技术Cool没有关联。微软官员拒绝回答是否计划在Visual Studio 7中提供微软设计的视窗版Java Visual J++的某个版本。

不过到了 Visual Basic .NET 时代微软显然没有意识到这些. 当 VB .NET 成为一个所谓“全功能语言”的时候, 微软的开发者为它加上了 C# 所拥有的所有高级和复杂的功能 —— 线程, 多态继承, 等等. 也因此 VB .NET 变成了一个和 C# 要求相同的技能, 相同的学习过程和给人完全相同体验的编程语言. 当然这并不完全是微软的判断失误: 微软员工其实做了他们认为 Visual Basic 开发者们要求他们做的事情, 满足了 VB6 用户的要求.

C#的特性

但对于 Visual Basic 来说, 用“沉默的大多数”来描述大部分开发者非常合适. 几乎所有的 Visual Basic 6 用户都对现在的产品非常满意——沿用我们前面所使用的比喻, 他们很愿意只做公交司机: 每天五点下班回家, 不用加班到半夜; 周末在家和家人在一起而不用回到办公室; 晚上和配偶在一起, 而不是坐在办公室里带着充满血丝的眼睛连夜编程, 早上吃着昨天剩下的冷饭. 他们并不在意 Visual Basic 6 既没有提供运算符重载也不提供完整的面向对象模型, 所以他们没有抱怨什么.

现在,微软仍在一边继续反驳其竞争对手Sun控告它改变了Java语言的诉讼,一边在对美国反垄断指控顽抗到底,但与此同时,微软的天才程序员们也在技术上进行着一场补救的措施。那就是他们已经开发出来的C#语言,这是一种非常类似于Java的语言,微软深知即便是微软阵营中也有着相当一部分人喜欢Java语言,所以这次干脆就用C#来满足他们的愿望,这是一种非常完美的语言,适用于各种操作系统,并且与Windows紧密地结合在一起。

而微软听到的声音则来自 3% 愿意成为战斗机驾驶员的 Visual Basic 6 公交司机——他们在闲暇时间参加业内会议, 在网上论坛中提问, 给各种关于 VB 的文章写自己的回复. 而也是这些人不能满足只在幻想中发射导弹击毁刚刚别了他们巴士的轿车——他们真的去向微软要求新的巴士必须带着和战斗机一样的加力燃烧室, 两边挂着格斗导弹, 车尾带上干扰弹发射器, 驾驶座还要有平视显示器. 因为他们是 Visual Basic 开发者中喊话声音最大的一群, 所以微软照做了.

微软表示这种新的程序设计语言并不针对Java,但它将是C++的革新。而这正是Java所追求的两个主要目标之一(另一目标当然就是可移植性)。微软一直梦想着能开发出能与Java在Windows NT系统上抗衡的语言。C#的自动内存管理以及和Java一样都使用的C语言语法,似乎让这个理想成为现实。

于是到最后, 将 Visual Basic .NET 交给熟悉了 Visual Basic 6 的大部分程序员就如同人施放魔法将一只宠物狗仅仅在生理上变成了丛林狼, 然后便对着它大喊“去林子里抓只羊回来!”适应了宠物狗生活的狼显然会这么想“哈? 您没事儿吧? 我哪儿也不去就在这儿带着等你给我开罐头.”于是 Visual Basic 6 程序员依然如故.

微软称C#是由C和C++派生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,C#意在综合Visual Basic的高效率和C++的强大功能。但这种说法是否准确呢?由于C#的结构很像Visual Basic的ActiveX,它显然是冲着RAD开发者来的。但同时,“C#提供了C++的强大功能”这种说法也稍嫌夸张,将来很可能变成空头支票。

当然 Visual Basic 6 也并非完美无缺. 最好的例子可能就是 On Error Resume Next 了——在工作的时候某一步执行出问题了, 所以我们继续按原计划该干什么干什么然后看看结果什么样? 想想都知道这明显不合理. 然而我们仍然应该记住由技能较低 (所以便宜) 的开发人员对功能有限 (便宜) 的程序进行快速 (便宜) 开发能解决很大一部分实际生产中遇到的问题, 而 Visual Basic 6 是这种情景中一种优秀的工具.

对某一对象接口的更新,微软称之为“继承”,当然“继承”是就“对象”而言的。但是,虽然“对象”这个词我们经常碰到,却很少有人真正理解了它的含义。微软的用户,甚至它自己的员工都经常把“对象”和“接口”弄混。所以微软干脆就用接口来定义各种对象,结果导致了“面向对象编程”(OOP)被微软弄得乱七八糟。现在,微软又在大踏步地前进了(虽然它内心还是很小心),它把它建立在接口基础上的“对象”集成到了开发工具里。不过它走得实在过了头,它甚至把对另一对象接口的更新称之为“继承”。

Visual Basic 6 解决的问题并不会凭空消失, 所以到微软提供一种可以替代 VB6 的工具前, Windows 系统中的小强还是会继续顽强的生存下去. 我愿意赌五块钱, 就算到了 Windows 9 还是 Windows 10, 微软也还是必须提供 Visual Basic 兼容.

这个“继承”给程序员们带来的好处就是语言无关——只要接口维持其兼容性,用Visual Basic写成的对象在C#和C++中也可以良好地运行。但此特性是以真正的OOP技术和平台的可移植性为代价的。每个对象都被编译和注册到Windows子系统,只要你能访问这个子系统,你就能访问这个对象。来吧!欢迎来到.NET和NGWS的世界!——Windows平台从来没有完完全全地让人产生这样完整的依赖性。他们的动机当然要遭到全世界对微软有偏见的人的怀疑,当然,完全依靠此技术的C#也不例外。

原文: The Silent Majority: Why Visual Basic 6 Still Thrives

事实上,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#编译程序产生的是‘微软中间语言’(MSIL)……但虚拟机或其他类似的技术则不能用于解释这种中间语言(IL)。相反地,每当应用程序载入或JIT编译程序需要编译它时,IL就会被转换成本地代码。一旦这种转换完成,可以执行的代码实际上是本地代码。”实质上,虽然这种方案有点像Java程序通过一个JIL编译程序,但这里最终的JIT编译是100%的本地代码,而Java的JIT产生的结果是不同的。

C#的弱点

这个方案也暴露了微软对C#和.NET介绍中的一些有趣的漏洞。MSIL是.NET提供的一个新特性,允许很流行的程序设计语言编译到一个单独的公用语言。(.NET支持的语言种类是相当惊人的)。这些语言都要服从一种叫“通用语言规范(CLS)”的构架。微软称之为“CLS兼容语言和类库之间可互操作的通用语言”。

编译所有的语言到一个单一的公用语言上,能让“继承”通过多重语言真正执行。这轻而易举的扫除了C#可能遇到的错误概念。.NET组件使用COM的IDispatch,它只允许接口执行。它比先前C#被评定为一种OOP语言的看法容易接受得多。它在程序设计上或许像Java一样是面向对象的。

但不幸的是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上使用。微软准备尽力为那些COM对象提供传统帮助(所有的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#,Visual Basic,甚至Eiffel和COBOL都能启动MSIL。Java运用执行转接提供真正的OOP技术。MSIL,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的初学者有害无益。

上一篇:没有了

更多新闻推荐

Copyright © 2015-2019 http://www.77zhth.net. 美高梅官方网站66159有限公司 版权所有