快速业务通道

工作中的C++:基本原理,重点推荐和结束语

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
nst 函数呢?简短的回答就是:CLI 不允许您将 modopt/modreq 直接放在函数上(尽管 CLI 实际上确实有办法在元数据中编码此信息,只是未测试而已)。至少现在还不行,“基本原理”阐述得很小心,暗示可能某一天会加上这个功能。

编程的演变

C++/CLI 使 C++ 成为了一等 CLI 公民。此外,如果您阅读了“基本原理”,就会意识到做到这一点只对 C++ 作了最少的改动。而且 C++ 仍然是系统编程最好的语言,因为其相对于任何其他语言,提供了更多对 CLI 的直接访问,还因为您如果想要调用旧的 Win32® API(将会陪伴我们更长的时间,我肯定),仍可以降回到 C。

要理解 C++/CLI 有多么重要以及它代表了什么,就必须考虑我们处于编程演变过程中的什么位置。就让我给您一个简洁、特别而快速的回顾吧。在过去,程序员使用切换开关来编写程序。纸带是一个改进,但每台计算机都有其自身的“机器”语言。随着计算机的发展壮大,程序员不得不为每台新的机器都重新编写其程序。唉,那是非常烦的,因此程序员发明了像 FORTRAN、BASIC 和 C 这样的高级语言,使用了称为“编译器”的东西来将高级语言翻译为针对每台机器的机器指令。图 2 说明了这点。现在,可以编写一次程序,然后针对不同的机器进行编译。太酷了!C 语言成为系统编程的选择,因为它是“最低级的高级语言”,这意味着它在自身和机器之间引入了最少的累赘。现在使用的大多数操作系统都是用 C 语言编写的,在少数对性能要求特别严格或与硬件交互的部分可能采用汇编语言进行编码。

许多年以后,C++ 改进了 C 语言,使其面向对象,哦,而且更有趣。再次引用 Bjarne 的话:“C++ 的设计旨在于使作者和他的朋友不必用汇编语言、C 语言或各种现代高级语言来编程。它的主要目的就是使单个程序员更轻松愉快地编写好的程序。”C++ 很棒,但是高级语言互相之间的通讯不太好。如果您用 C++ 编写了某些代码,那么不能在 BASIC 中使用它 - 反过来也一样,至少非常困难。每种语言都在其自己的世界中运行。对于独立的应用程序来说,这很好,但是随着应用程序变得更加复杂和环境更加分散,共享代码的需求就变得更加迫切。从第一个子程序开始,程序员就在寻求完全封装的可重用组件的终极目标:程序员可通过组装软件小构造块来创建应用程序。那么为什么所有部分都得用相同的语言编写呢?

多年来,形成了各种各样解决互操作组件问题的办法。起初,语言与库一起提供(想想 C 运行库和 printf)。在 Windows 领域内,DLL 提供了延时加载(DLL 中的动态)来节约内存。DLL 也提供了互操作性,因为像 Visual Basic 和 COBOL 这样的语言可以调用 DLL,方法是通过引入指引编译器将正确的 C 链接调用发到 DLL 中的导入语句。但是应用程序和 DLL 之间的链接太紧密、太脆弱而且太容易中断。每个应用程序都要知道 DLL 中每个入口的名称和签名。另外,反向调用(从 DLL 到应用程序)也很讨厌,因为您必须传递函数指针作为回调。因此,程序员发明了 VBX,后来成为了 OCX,再后来成为了 COM。很高兴,COM 与语言无关:它具有“类型库”,所以语言不必在链接时知道函数;它们可以在运行时查询类型库。COM 非常酷,但众所周知,很难编写。(讽刺地是,用 C++ 编写 COM 是最困难的,而 COM 正是使用这种语言构思和实现的!)COM 也有其他问题:它太低级了,而且不处理安全性或内存管理这样的事情。

终极目标

现在是 2007 年,我们拥有 .NET Framework 及其标准子集 CLI。通过在编程语言和机器之间插入一个新的抽象层,CLI 以一种截然不同的方式解决了复用性问题。编译器现在生成的是 MSIL 代码,而不是机器指令,然后 CLI 虚拟机/实时 (JIT)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号