当前位置:
首页 > 编程开发 > Objective-C编程 >
-
C#是一种新的语言?或者仅仅只是J…… (1)
作者: 曹伟 | ||
去年夏天,微软公司宣布了一种称为.Net的新的分布式应用体系结构,这引起了媒体的极大注意。与这种.Net体系结构相配合的新的开发语言称之为C#。 本文将首先探讨一下一门新计算机语言的产生动机,并由此推断一下C#语言的产生。然后讨论一下C#与Java语言之间几个基本的区别。 C#(发音“C Sharp”)是由微软公司研究人员Anders Hejlsberg最新研究开发的一种计算机语言。它看起来与Java语言非常相似:包括了单重继承、接口,以及几乎一致的语法、编译成中间格式等众多特点。C#与Java的区别在于其借鉴了Delphi的设计特点,直接整合了COM(组件对象模块),而COM在微软的.Net视窗网络体系结构中扮演着重要角色。 走近C# 从以往的开发经验中可以知道,如果要开发一门新的计算机语言,就要解决那些用C或C++语言开发时常遇到的传统问题,如内存泄漏、多线程应用程序写入困难、静态链接、非法指针调用、很复杂的多重继承规则等等。为了减少语言学习过程中的弯路,就要使设计出的语言看起来与C和C++尽量相似。六年前,Sun Microsystems公司开发了与平台无关的Java语言,它增加了垃圾回收、整合了线程间的互锁、动态链接等概念,同时抛开了指针概念,只允许单继承,但又引入了接口的概念等。 2000年6月,微软公司向外界宣布了C#语言,它是专门被设计用来为微软新生的.Net应用开发体系结构服务的。除了C#语言之外,天才人物Hejlsberg在Borland公司时还开发了Turbo Pascal和Delphi语言,在微软公司时还开发了Visual J++语言。C#和Java语言解决了C和C++语言中存在的许多相同的问题。由于C#看起来与Java很相似,有时容易混淆它们。 那么为何要开发C#语言呢?C#是否仅仅相当于Visual J--,这意味着它只是一门没有贴Sun公司标识和商标,但带着一些新特点的Java语言;或者C#是一门提供给Windows开发者来实现Java功能,以直接与Sun公司Java语言竞争的语言? 由于在语法、设计,甚至运行的处理上C#与Java语言如此类似,就很容易对C#产生怀疑:由于微软公司一直没有撼动Java语言的市场地位,于是就通过起一个新名称和采用微软公司推广其产品家族的惯用方式,简单地编制了一个Java的复本。但实际情况并非如此,因为在COM和.Net支持的背景下,C#是很可能在以Windows操作系统为背景的的开发领域内占有一席之地的。 开发一门新计算机语言的动机 计算机技术上的创新经常会改变人们关于编程和系统开发的基本设想,新的计算机语言也会伴随着这些新思想出现。一门新的计算机语言往往是被当做一些类似研究新的系统体系结构、编程语义学上新概念的研究项目的一部分来开发的,或者是集合其它几门语言的优点而开发出的一门更强大的语言。特殊的应用有时也要求有新的语言,某一种语言的要求经常与它们应用的领域密切联系,因此经常需要功能强大的计算机语言来解决现有的语言缺点,或者是满足一些商业需要。 C#语言是用来解决微软公司近来所面临一些技术和商业问题而开发的。既管在简化性上已经做了几次尝试,但COM对象编程体系结构却并不是很容易就能使用,并且分布式组件对象模块(DCOM)增加了另外层次上的难题,因此,COM的开发仅限于那些经过高级培训过的Windows C/C++编程者、熟悉COM接口听VB使用者。而C及C++语言则专门要求能有效和安全地使用许多技术,VB又不是完全面向对象的,这些无疑就形成了许多束缚。 当Java语言从1995年出现时,人们开始谈论一个与操作系统底层应用不相关的世界。Java看上去与C和C++很相像,可以使程序员很快熟悉它。Java也在操作系统这一层次上提供了平台间的可移植性,以及解决了许多限制C和C++程序员效率的问题。 |
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程