当前位置:
首页 > 编程开发 > Objective-C编程 >
-
深入C#-访问微软首席设计师Anders Hejlsberg
深入C#
访问微软首席设计师 Anders Hejlsberg (一)
今年七月份,O’Reilly编辑John Osborn 参加了微软专业开发人员研讨会,并就微软的.Net框架和C#程序设计语言为主题访问了 Anders Hejlsberg -著名的软件工程师,C#语言的首席设计师。
Osborn:
我曾经看过一些出版物,根据他们的观察,C#可以说是微软版的Java。作为牵头人,你喜欢别人这么说吗?
Hejlsberg:
首先,C#不是Java的翻版。在设计C#过程中,我们参考了多种语言,象C++,Java,Modula2,C以及Smalltalk等。多种语言有一些相同的核心思想不奇怪,象 deep object-orientation, object-simplification等等,这些也是我们感兴趣的。C#语言与其他语言,特别是Java语言的最主要区别是其尽量与C++靠拢。C#保留了C++的绝大部分操作符,关键字,描述方法。我们还保留了一些被Java抛弃的程序功能,例如enum ,这么一个强大的功能没理由放弃。在C#中,我们不仅保留而且有所增强,enum 成为.NET基础类库的system.Enum中的强类型数据类。不经过映射,foo类enum 不能等同于bar类。我们还保留了操作符重载和类型转换等。
C#超越那些传统编程语言的一个概念是面向组件。我们保留了原有的properties, methods, events, attributes, 以及 documentation 等优秀的语言概念,并且新创了其他语言从未有过的attributes (用于给任意对象增加带类型的,可扩展的元数据)。C#也是第一种组合了XML注释符,以让编译器在源代码中生成可读文档的语言。另一个重要概念是“一步到位”,就是你可以在一个文件中完成所有工作,不用再去建立头文件,IDL文件什么的,使其可以很方便地插入asp页面和其他环境中。
在行业中有许多关于编程语言是否需要支持properties 或 events的争论。的确,我们可以改用methods来表述这些概念。比方用象get和set的命名模式来实现property的作用等,就象在C语言中也模拟面向对象操作,只是有很多东西需要你自己打理而已。
但我们所重点考虑的是让语言更容易地操作对象。现在的程序员所编写的组件,已经不是从头编写独立的应用软件或类库,而是在通过继承其他一些基本组件,override它们的methods,properties以及events。这是一个首先要树立的概念。
Osborn:
你最近给C#做了个描述:它是C/C++家族中第一种面向组件的语言。
Hejlsberg:
是的,这也是我的主要目标。其实象Smalltalk,Lisp这些语言实际上也能做到,但代价不菲。我认为C#的一个重要创新就是使面向组件编程更加容易。比如说boxing和unboxing这两个概念,boxing允许将任何类型的值转换为一个对象,而unboxing将一个对象的值转换为一个简单类型的值。并不是说这些概念以前没有出现过,但我们使这些概念实用化,易用化。
我们并不是要让软件工程师从头掌握一种新东西,重写软件,现在的软件行业已经付不起这个代价。我们给与开发人员更大的灵活性去兼容各种网络标准,象HTTP,HTML,XML等,以及已在使用的微软技术和将来新出的.NET技术。
访问微软首席设计师 Anders Hejlsberg (一)
今年七月份,O’Reilly编辑John Osborn 参加了微软专业开发人员研讨会,并就微软的.Net框架和C#程序设计语言为主题访问了 Anders Hejlsberg -著名的软件工程师,C#语言的首席设计师。
Osborn:
我曾经看过一些出版物,根据他们的观察,C#可以说是微软版的Java。作为牵头人,你喜欢别人这么说吗?
Hejlsberg:
首先,C#不是Java的翻版。在设计C#过程中,我们参考了多种语言,象C++,Java,Modula2,C以及Smalltalk等。多种语言有一些相同的核心思想不奇怪,象 deep object-orientation, object-simplification等等,这些也是我们感兴趣的。C#语言与其他语言,特别是Java语言的最主要区别是其尽量与C++靠拢。C#保留了C++的绝大部分操作符,关键字,描述方法。我们还保留了一些被Java抛弃的程序功能,例如enum ,这么一个强大的功能没理由放弃。在C#中,我们不仅保留而且有所增强,enum 成为.NET基础类库的system.Enum中的强类型数据类。不经过映射,foo类enum 不能等同于bar类。我们还保留了操作符重载和类型转换等。
C#超越那些传统编程语言的一个概念是面向组件。我们保留了原有的properties, methods, events, attributes, 以及 documentation 等优秀的语言概念,并且新创了其他语言从未有过的attributes (用于给任意对象增加带类型的,可扩展的元数据)。C#也是第一种组合了XML注释符,以让编译器在源代码中生成可读文档的语言。另一个重要概念是“一步到位”,就是你可以在一个文件中完成所有工作,不用再去建立头文件,IDL文件什么的,使其可以很方便地插入asp页面和其他环境中。
在行业中有许多关于编程语言是否需要支持properties 或 events的争论。的确,我们可以改用methods来表述这些概念。比方用象get和set的命名模式来实现property的作用等,就象在C语言中也模拟面向对象操作,只是有很多东西需要你自己打理而已。
但我们所重点考虑的是让语言更容易地操作对象。现在的程序员所编写的组件,已经不是从头编写独立的应用软件或类库,而是在通过继承其他一些基本组件,override它们的methods,properties以及events。这是一个首先要树立的概念。
Osborn:
你最近给C#做了个描述:它是C/C++家族中第一种面向组件的语言。
Hejlsberg:
是的,这也是我的主要目标。其实象Smalltalk,Lisp这些语言实际上也能做到,但代价不菲。我认为C#的一个重要创新就是使面向组件编程更加容易。比如说boxing和unboxing这两个概念,boxing允许将任何类型的值转换为一个对象,而unboxing将一个对象的值转换为一个简单类型的值。并不是说这些概念以前没有出现过,但我们使这些概念实用化,易用化。
我们并不是要让软件工程师从头掌握一种新东西,重写软件,现在的软件行业已经付不起这个代价。我们给与开发人员更大的灵活性去兼容各种网络标准,象HTTP,HTML,XML等,以及已在使用的微软技术和将来新出的.NET技术。
最新更新
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模块路径解析流程