赛迪网 > IT技术 C/C++ > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Stan Lippman:C++/CLI全景体验 (1)

发布时间:2006.03.09 05:23     来源:赛迪论坛    作者:sixth

  最近我访问了中国的上海和北京,参加在两地举办的微软 Tech-ED 技术大会,在那里我非常荣幸地向大家介绍了我们在 C++/CLI 方面的工作。大家的反馈非常之好,特别是中国年轻一代程序员对 C++/CLI 的热爱和理解给我留下了深刻的印象。在那里,我还认识了来自上海的一位开发人员,同时也是一位技术作者, 李建忠 先生。我们经过讨论之后决定合作撰写一系列 C++/CLI 方面的文章,并以“C++/CLI全景体验”专栏的形式独家授权于中国《程序员》杂志发表。这篇短文旨在为大家简单介绍一下我们写作这个专栏的一些背景——有点电影中“定场镜头”的味道。

  面对 C++/CLI ,很多人的第一个问题自然是“什么是 C++/CLI ”,我个人喜欢将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。 C++/CLI 这个名称本身就包含着一组术语——而其中最重要的术语却是最不明显的那一个。

  首先来看第一个术语“ C++ ”,这当然指的是由 Bjarne Stroustrup 在 Bell 实验室时发明的 C++ 编程语言。它所支持的是一种为代码执行速度和执行体所占空间所高度优化的静态对象模型。除了堆内存分配以外,它不支持在运行时对应用程序进行任何的更改。它允许我们对底层机器进行无限的访问,但对于正在运行的程序中的活动类型、以及相关的程序基础构造,它的访问能力却非常有限、或者根本就不可能。它是一门非常成功的编程语言,但是它却不能适应目前的 Web 编程环境以及相关的安全问题——这已经成为目前程序设计中一个越来越重要的考量。

  再来看第三个术语“ CLI ”,即通用语言基础构造( Common Language Infrastructure ),这是一个支持动态组件编程模型的多层架构。在许多方面,它所表示的对象模型和 C++ 的完全相反。在 CLI 中,存在一个运行时软件层(即虚拟执行环境)运行在应用程序和底层操作系统之间,应用程序代码对底层机器的访问会受到相当严格的限制;事实上, CLI 根本不允许安全环境中的代码进行这样的访问。但另一方面, CLI 却允许我们对正在运行的程序中的活动类型、以及相关的程序基础构造进行完全的访问,甚至允许我们动态构造额外的类型和程序基础构造。这些灵活性的获得当然伴随有相当的空间(执行体所占空间)和时间(程序执行效率)代价,但是它却解决了日益增长的基于连接的计算环境中所面临的问题和需要。

  最后,再来看第二个术语,即中间的斜线“ / ”,它往往为人们所忽略。其表示对 C++ 和 CLI 的一种绑定( binding ),它正是 C++/CLI 设计的焦点所在。据此,对于“什么是 C++/CLI ”这一问题可能的一种答案便是“它是对静态 C++ 对象模型和动态 CLI 组件模型的一种绑定”。

  对于 C++/CLI ,一个 C++ 程序员只需要将其添加到她 [ 译注 1] 已有的编程工具箱中就可以了。要成为一个 C++/CLI 程序员,你无需放弃任何已有的东西,虽然你要步入一个新的技术世界,你仍然需要学习它——但愿你能享受这一过程,至少我知道我是这样的。由此观之,我们还可以将 C++/CLI 看作是一扇通往另一个世界的大门。

  C++/CLI 将动态的、基于组件的编程模型和 ISO-C++ 集成在了一起,这种集成非常类似于我们当年在 Bell 实验室对使用模板的泛型编程和当时的 C++ 所做的集成。在两种情况下,你已有的代码投资和编码经验都将得到保留。这是我们设计 C++/CLI 时一个基本的需求。

  通用语言基础构造( CLI )是一个多层的体系架构,它为所有 CLI 语言提供了各种各样的服务。例如 CLI 中定义了一个通用类型系统( Common Type System ,简称 CTS ),而各个 CLI 语言都提供了自己对 CTS 的一个映射。该类型系统由一个根基类开始被组织为一个完整的类继承体系。实际上,每一个 CLI 类型都是一个类——不仅包括像 integer 、 double 这样的数值类型,而且也包括字面常量( literal constant )。每一个 CLI 类型(或者值)都表示一种 Object (所有 CLI 类型的根基类),比如数值 3.14159 、比如字符串常量 "Homer Simpson" 。

1 2 3 4 5 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 用VC++制作播放AVI视频流的动画按钮 (03-07) · Visual C++ 6.0编程实现打印功能 (03-02)
· VC++串口编程之短信应用开发 (02-24) · 学习C++编程语言的最大难度是什么 (02-24)
· Linux下C++程序的异常处理技巧 (02-22) · 澄清 Java 的接口与继承机制 (01-04)
· 如何在C/C++中调用Java (02-17) · 微软下一代VS.NET开发包现形 (11-19)
· Oracle欲将全部业务转到Linux (11-14) · Borland推出移动版C++开发工具 (11-14)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管