Programming 版 (精华区)

发信人: lizhenguo (夸父·追日), 信区: Programming
标  题: Visulal C++是什么? -- 兼谈其他(转载)
发信站: 哈工大紫丁香 (2001年12月12日12:45:05 星期三), 转信

【 以下文字转载自 Computer 讨论区 】
【 原文由 pilot 所发表 】
Visulal C++是什么? -- 兼谈其他
  weizhisheng    原作 

这个问题很奇怪吗?大概是。不过,当我又看到有人发表诸如“Windows/Office是VC编
写的”或者“VC是无所不能的”这种高论,我就禁不住这样问自己。

Visual C++究竟是什么?你平常在其中工作的那个标记着“Microsoft Visual C++”的
窗口,真的就代表Visual C++吗?

按照我的理解,Visual C++是一个开发工具包,它大概可以分成三个主要的部分:

1.  Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完
成的,再加上它的标题赫然写着“Microsoft Visual C++”,所以很多人理所当然的认
为,那就是Visual C++了。其实不然,虽然Developer Studio提供了一个很好的编辑器
和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后
英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于
VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成
Visual C++, 它充其量只是Visual C++的一个壳子而已。这一点请切记!

2.  MFC。从理论上来讲,MFC也不是专用于Visual C++,Borland C++,C++Builder和
Symantec C++同样可以处理MFC。同时,用Visual C++编写代码也并不意味着一定要用M
FC,只要愿意,用Visual C++来编写SDK程序,或者使用STL,ATL,一样没有限制。不过
,Visual C++本来就是为MFC打造的,Visual C++中的许多特征和语言扩展也是为MFC而
设计的,所以用Visual C++而不用MFC就等于抛弃了Visual C++中很大的一部分功能。但
是,Visual C++也不等于MFC。

3.  Platform SDK。这才是Visual C++和整个Visual Studio的精华和灵魂,虽然我们
很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C++编译器为核心(不
是Visual C++,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Deve
loper Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,
和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。
为什么我会觉得“Windows是用VC开发的”这种说法很奇怪?因为它太含糊了。用VC,可
以编写MFC应用,也可以编写纯SDK程序,不论哪一种方式,都不一定是非VC不可。只要
乐意,我完全可以用UltraEdit来写出一个MFC程序,再用CL编译之,没有必要一定动用
VC这个大家伙。而且有许多黑客和买不起Visual Studio的人就是这么干的!用SDK编程
就更不需要VC了,Down一个Borlan C++ Compiler下来,或者用lcc之类的编译器,同样
可以达到目的。再说了,Windows可不是一个单纯的产品。用VC来编写Windows外围程序
是完全不成问题的,可是操作系统的核心部分呢?就算可以用VC来编写代码,调试怎么
办?VC自身的调试器对一般的应用功能是够强大的,可是对于系统级的调试根本无能为
力,因为这个调试器本身就是依赖于操作系统的。只有系统级的调试程序如debug,Sof
tIce和Wdebug这些工具才能完成如此重大的任务。

从历史上来看,Visual C++ 1.0的出现晚于Windows 3.0,而且那时候的MFC只有一个雏
形而已,用来开发操作系统根本是不可能的事情。在Visual C++ 1.0的前面倒是有一个
Microsoft C/C++ 7.0,但是它整体水平不如Borland C++ 3.1,在扩展内存管理方面的
功能又不如Watcom C++ ,所以一直没有占据很大的市场。它现在已经不作为单独的产品
,但仍然作为Platform SDK的主要组成部分而存在于Visual Studio产品中,而且其功能
比过去也不可同日而语了。到Windows 95问世的时候,MFC仍然在尽力追赶操作系统的功
能。应该说Visual C++ 5.0是一个转折点,一方面MFC已经发展比较完善,另一方面,操
作系统的基本结构也已经稳定,后面就主要着眼于系统整合与完善作为商务平台的功能
。已经稳定的系统不可能再进行翻天覆地的修改,所以,我比较能够接受“Windows系统
是用Microsoft C++和MASM作为编译器完成的”这种说法。研究Windows的系统文件可以
看出,很多文件显示出来的Linker Version明显是Microsoft C++编译器。至于代码是用
什么编写的?我不知道,也不想知道,除了Developer Studio的编辑器之外,任何好的
文本编辑器都能够做到这一点。

Visual C++是无所不能的吗?唔,最好也是分开来说。Developer Studio肯定不是—它
只是个外壳而已。MFC呢?也不是。一方面它是对API的封装,离开了API它就什么也干不
了;另一方面,MFC对API的封装也不够全面,有些时候还是要直接调用API函数才能够“
为所欲为”。至于Platform SDK,倒真的可以说它几乎是无所不能的。不过,过分强调
这一点并没有太大意义。只要有一套完整的编译器,和必须的支持文件,其他开发工具
也可以说是“无所不能”的,比如Borland C++ Compiler或者lcc都可。
老实说,我并不喜欢“无所不能”这类字眼。关键在于各人的理解不同。如果我较起真
来,说能不能写个VC程序让电脑拿起鼠标砸向我不喜欢的老板,你说它能办得到吗?所
谓的“无所不能”究竟有何意义?让我用VC写一个Server,能在普通工作站上支持每秒
几千万的访问量,杀了我也办不到,不管VC的优化手段是多么有效。在具体的平台上,
在特定的操作系统中,不论多么强大的工具,最终还是要受到平台和系统本身的限制。
大家应该知道这个悖论吧:上帝能否制造出一块他自己也举不起来的石头?

我也常常看到“MFC永远不会过时”或者“C++是不会灭亡的”这种发言。我理解发言人
的心情,不过这种说法绝不客观。一种语言也好,一个Application Framework也罢,它
们之所以有今天的地位,并不是纯粹自然形成的,有许多复杂因素的作用,也有时势造
英雄的理由在内,所谓“居高声自远,非是籍秋风”是也。历史的舞台从来不是为某人
专设,即使真有所谓万古长青的怪胎,恐怕也正应了那句老话:“众人都死了,只剩咱
们两个老妖精,有什么意思!”我们现在使用的语言,不论Basic,Pascal还是C++,甚
至如日中天的Java和C#,终究都会有功成身退的一天。这并不是我们的损失,相反,薪
尽火传,一种语言中好的,合理的因素,肯定会被后续者所继承和发扬,自然界的新陈
代谢本该如此。

天空没有飞翔的痕迹,而飞鸟已经飞过。一种语言只要曾经在历史上留下浓墨重彩的一
笔,完成它“为先贤继圣学,为万世开太平”的历史使命(有点夸张),这就够了,何
必缠绵不舍作儿女之态!不知道我有生之年会不会看到C++的消亡,如果真有这么一天,
我会拍手欢呼,因为这说明已经有了另外一种更新更好的语言来代替它(或许是几种)
。不过照我猜想,像C++这种轰动武林惊万教的语言,其灭亡恐怕也不会是悄无声息,而
多半属于“始皇既没,余威震于殊俗”那种情况。

最后请允许我发表一点感慨。语言的优劣其实是一个无需讨论的问题,个人的经历和所
处环境在很大程度上就决定了你对某种语言的看法,这是很个人的东西。好比碰到一位
法国朋友,他多半会自豪的告诉你:法语是世界上最好最优美的语言。对这种说法我会
微笑表示赞同,并且欣赏他的民族自豪感,而不会觉得这是对汉语或者英语的贬低—虽
然我心底里一直深信,汉语才是世界上最好的语言。当然,如果他对我说“你们那些破
烂中文是些什么玩意”,那我可能就是另外一种反应了。

说了这么多,意思无非是想少些无谓的争论罢了。常在论坛上看到“XXX是最好的语言(
编译器),XX是什么东西”之类发言。我不想和他们争论,一个人对一样东西既然完全失
去了接触和了解的兴趣,那么说什么大概都没有用了。只是觉得遗憾而已。人世间的隔
膜与误会,大多是由于彼此不了解而引起,而多少悲剧正是由此而发生呵。在编程的世
界里大概不会这么严重,不过言为心声,多少也可看出个人的品行。如果某个人A常在我
面前说B的坏话,那么我对B不会有恶感,相反我对A的印象分要减去20。自己不了解的人
或者事,不管,不说,也就是了。何至于恶言相加呢。

我参加工作的时间不长,各种各样的软件工程师倒是见过不少。就我看到的情况,程序
员实在是很沉默寡言的一类人,平时总是表现的温文尔雅,有时候却难得的能见到他们
大发脾气,扔鼠标,砸键盘,捶显示器,干什么的都有(这种情况多半是遇到没有办法
除掉的Bug了)。面对亲人和朋友的时候他们有时候会选择长久的沉默,只有坐到机器前
面时才会发现他们的痴迷和狂热。虽然普遍的不善言谈,但是他们似乎总能在游戏或者
网络中找到发泄的方式。所以我在各种各样的论坛上看到语法错误不忍卒读的文字,看
到互相指责乃至于人身攻击的情况,甚至看到许多不雅的词汇,虽然心情无论如何愉快
不起来,但是我想我能理解。只是,我仍然感到担心,毕竟程序员这一行干几年就了不
起了,而人生还有很长的路要走呢。没有一个健全的心态,没有足够为人处世的技巧,
30岁以后的人生该如何把握呢?

www.csdn.net

--
深沉忧郁的眼神
玩世不恭的微笑
成熟男人标志--肚子
看似随意的短裤
怀旧风格的拖鞋

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]
--
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: 202.118.229.154]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.485毫秒