软件开发专业名词解释.doc

上传人:ni****g 文档编号:543514124 上传时间:2024-03-28 格式:DOC 页数:12 大小:70.01KB
返回 下载 相关 举报
软件开发专业名词解释.doc_第1页
第1页 / 共12页
软件开发专业名词解释.doc_第2页
第2页 / 共12页
软件开发专业名词解释.doc_第3页
第3页 / 共12页
软件开发专业名词解释.doc_第4页
第4页 / 共12页
软件开发专业名词解释.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《软件开发专业名词解释.doc》由会员分享,可在线阅读,更多相关《软件开发专业名词解释.doc(12页珍藏版)》请在金锄头文库上搜索。

1、Win32编程”很不幸,我从开始学习编程到理解这个名词中间隔了很长的时间(上个世纪的学习环境可见一斑)。很长时间里我都不明白32是指什么,我用过Dos, Win31,win95,win97.但好像没用过名为Win32的操作系统啊?很久以后我才知道,32在这里并不是指操作系统的版本号,而是指32 位。微软操作系统在win31及其以前都是DOS系统,windows只是在dos下运行的一个大程序而已。在其后win95则稍有改变,windows 除了DOS核心以外也真正成为了操作系统的一部分,提供着各类操作系统提供的服务。应该说,在win95之后的windows(新近的64位win系统以 前)都可以称

2、之为win32系统平台(95/98实际上是16与32位混合)。所以在这样的平台上,直接或间接使用系统提供的API编程,就称之为 Win32编程。对VisualStudio而言,Win32编程一般指SDK、MFC、ATL这几类开发方法,其中ATL在国内应用不是很广泛,一般 应用于以COM组件为架构的中大型软件产品。SDK:SoftwareDevelopmentKit,常译为软件开发(工具)包在Win32编程领域一般指与MFC这类框架编程相区别的,直接调用Windows提供的API的开发方式,与字面原意有一些区别。另外一个经常见到 的说法就是某软件(硬件)带有自己的一套SDK,这里其实一般是指一套

3、API库函数或者类库,供上一层的开发者调用。又譬如常说的DX的SDK,其实是微 软开发的一套COM组件,供上层开发者使用。总之,供程序员使用的比较完备的代码库,就可以称之为SDK;“MFC”:MicrosoftFundationclasses微软基础类库大家都知道,使用SDK编程方式往往有很多每次都重复的固定不变的一些代码,为了提高编程的效率,减少上千个API带给开发人员巨大的精神压力,微软 开发出了这么一个类库,注意,这个类库与操作系统本身无任何关系,它只是对API进行了一个面向对象的封装,当然,还给出了一系列编程的框架。使用SDK 的方法,使用VisualStudio,通过调用Window

4、sAPI,MFC你也可以做得出来。MFC把一些固定不变的代码已经写好了,只在编译时 候链上,所以我们的代码里看不到WinMain(),而事实上整个程序的运行,和SDK的方式无任何区别,初学者请记住这一点。另,补充一点个人感想, MFC的初衷,带给开发人员更多的便利,我觉得并不太成功。学习MFC所费的力气和最终的所得,并不太成正比。API:ApplicationProgrammingInterface,应用程序接口这个词的出现频率很高,从某种意义上来说,也可以看作是SDK的一个子集。这也是做给程序员的程序,不过一般指用导出函数的方式提供服务的函数库,不包括类库和组件。“GDI”:GraphicD

5、eviceInterface,图形设备接口这个是Win32程序下最常用的显示方式,与DirectX、OpenGL处于同一级。在DOS要显示一些东东可不是容易的事,最简单的是调用一些C 的图形库函数来实现显示,不过一般也就是些画线,填色,输出几个文字,效果很弱(所以DOS程序界面一般都不怎么样,且实现起来不是一般的复杂),要复杂 一点的动画/图片显示什么的,经常要用到的就是硬件中断,调用一些显卡自身的子程序(固化在显卡内的)来做。因为每一个显卡都不同,所以DOS的游戏兼容 常常由于显卡的差异而很糟糕。到Windows下大家就幸福多了,Windows将硬件这一层屏蔽起来,用一个表格(DeviceC

6、ontext)来代 表一个显示,我们要做的就是在这个表格上填好相关参数,然后画上我们想画的东东,然后操作系统会依照这个表格(DC),把相应的显示内容(一般是一块显示 内存)传送到指定显卡的指定的显存,再由显卡传给显示屏。我们不再需要与不同的显卡打交通,这是一个十分伟大的胜利!GDI中最常用的是双缓存技术,就是 说你可以在内存中创建(也就是复制)一个DC,只不过在这个DC中显示的不再被传送到显示器上。有什么用呢?因为它的各参数是与当前屏幕DC一致的 (COPY嘛,当然是这个结果),所以它的显示内容可以完整无失真地传送到屏幕DC上。我们通常在内存DC上画图,譬如画一圆,再画一条直线,画完后一 次性

7、地传送到屏幕DC上,这样对用户来说屏幕只刷新了一次,可以解决你画一点内容屏幕即刷新一次导致的闪烁问题。当然,双缓冲甚至多缓冲还有很多别的用 处,那就要靠自己揣摩了。DirectX通常简称为DX(读音:低叉)这是个很吸引人眼球的名词,读起来就很上口:)。Windows为我们作了许多屏蔽底层硬件的工作,其中DX是最知名的 技术之一。操作系统要与各类硬件打交道,特别是多媒体相关的,譬如显卡、声卡、手柄输入、多媒体流的网络传输等等,这些事情如果都自己来弄的话,那就太要 命了(这些一般都涉及系统底层,自己也很难做出来)。而DX则正是这么一套操作系统提供的隔离多媒体硬件与程序员的间质,DX自身一般并不实现

8、处理的能 力,它是一个标准,要求硬件来满足,好比DX提供一个函数名,硬件来实现函数内容一样。通过它我们可以非常简单而快速地调用硬件提供的各类服务。它主要包 括DirectDraw(通过直接访问显示硬件来提供快速的图象处理能力),DirectSound(提供了软硬件的低延迟声音混频和回放,以及直接访问 音频设备的能力),DirectPlay(它明确的提供了通用环境连接能力来简化你应用程序之间的通讯服务),Direct3D(DirectDraw 的3D版),DirectInput(简化你的应用程序访问鼠标、键盘和操纵杆设备的能力),DX5.0之后又增加了一些(如DirectShow),不 再详述。

9、DX一个重要的特点就是你可以通过它直接访问硬件而无需知道硬件的具体细节。譬如DirectDraw,就能够越过内存而直接访问显存,这样的速 度将比GDI快很多,不在一个数量级上。补充一点:DX是以组件的方式提供的,而不是通常的导出API的形式。DXSDK的最新版本是9.0COM”:componentobjectmodel,组件对象模型,一般简称组件。这是微软为了解决代码重用的一个重要机制。重用代码的最简单办法是源代码重用,把写好的函数和类加到自己当前的代码中,编译即可。简单是简单,敝病却 显然的多。另一个常用的方法是单独做成模块,以DLL的形式分发,DLL导出函数或者类,客户程序用动态/静态链接

10、的方法将其加载,这显然比前一种源代码 的方法好一些,难度也不大,最为常用。但DLL也有一些不足,最根本的,它不是二进制兼容,DLL版本升级一次就需要与客户程序代码重链接一次,有些时候 这几乎是不可能的任务。为了更好地让编程像“搭积木”一样简单,让模块可以完美地配合,完美地替换,COM产生了。COM不是类库,不是代码,不是操作系 统的服务,而是一套编程模型,理论上来说,它与语言无关,与操作系统无关,unix下同样可以做COM。COM是一种程序结构模型标准,你做的DLL或 EXE在结构上满足这么一个标准,那这个DLL或EXE就是一个组件,它将在该平台上成为二进制兼容。COM主要利用了注册表来登记本

11、模块的信息。客户程 序调用时首先查注册表,找到所需组件的位置(这实现了位置透明),然后就用Loadlibrary把它加载进来,这和普通调用没有本质区别,区别在于由于 组件特殊的实现方法使得整个过程中用户程序都不知道组件的位置,组件的类的实例化过程,如何销毁,不能直接访问组件的任何实现细节,用户只与组件的几个 public接口打交道。这将实现真正的模块之间的独立。对用户程序而言,对于目标组件的认识,除了接口,一无所知。在接口不变的情况下,组件可任意替 换而客户程序不作任何改动,无需编译,仅这一点,在中大型程序的模块集成的过程中就将节约相当多的时间。STL:StandardTemplateLibr

12、ary,标准模板库这是最早由AlexanderStepanov和MengLee(蛮像中国人的名字)完成,于1994年提交给ANSI/ISO标准C+委员 会并通过而成为标准C+的一部分。望文生义即可知这是一个代码库标准,不是语法标准。简单地说,STL是以C+中的模板语法为基础建立起来的一套包含 基础数据结构和算法的代码库。STL的特点是实现了“类型参数化”,即STL的代码中可处理任意自定义类型的对象,如果不使用模板技术的话,这是一件相当 困难的事。也因为这个原因,在最新的java及C#语法中均加入了对模板语法的支持,可见其重要性。另外一个有关STL重要的话题是GP (GenericProgram

13、ming),泛型。这是与面向对象相并列的另外的一个编程模型,它以模板为基础,弱化了实体类型的差异,简化了编程时问 题抽象的模型,提供了更好的封装性和弹性,对于繁杂的面向对象编程毫无疑问是一种解脱,至少是精神上的。GP并不是用来取代面向对象的,而是作为一个有益 的补充体,是面向对象很好的合作伙伴。是最近几年软件架构的一个研究热点,但国内真正的应用似乎并不多见,这项技术本身还基本处于研究前沿。一书对C+中的GP应用有很好的诠释,而这本书对脑细胞的杀伤力之大,也是其它C+书藉望尘莫及的。想知道C+的代码技巧可以做到怎样的出 神入化吗?不妨看看这本书。ATL:ActiveTemplateLibrary

14、,活动模板库这在VC编程下应该算是比较高级的话题了,它集COM和模板技术于一身,带来了极方便的组件编写方法和极高的学习门槛。可以说,进入ATL领域就算是 进入了中级以上的编程领域。ATL是为组件而生,它的目的是为了让程序员更方便地编写组件(纯用C+写一个最简单的组件实现一个“Hello World”对初学者来说都是要命的),同时它使用模板技术来类似于MFC一样建立了一个开发COM的框架代码库(模板库),使用该框架及模板库可以相对 方便地进行组件开发。ATL中的一个特点就是你自己的类将成为代码库中某些类的父类,这是一件很有趣的事(这也是模板技术的一个特点)。HANDLE:句柄这是一个中文翻译很古

15、怪的字,对初学者来说是百思不得其解的东东。这其实等价于void*(顺便提一下,初学者往往对VC代码中各种古怪的符号、类型 标记/宏等百思不得其解,其实它们大多来自基本类型的#define或者typedef,请将光标移到这些符号上(譬如HANDLE),然后按下F12, 编译器自会把你带到它的声明处,反复使用几次,你终会见到它的原貌,然后长吁一口气:原来不过如此而已。没用过的初学者请牢记:F12)。很多初学者总想 知道一个HANDLE代表一个什么对象,我的建议是不要去理解为某对象,而就是理解为访问某一个对象的入口,事实上HANDLE大多数时候是一个整数索引 (标志该对象在操作系统的某表中的位置,就

16、好像一个数组的下标一样),Windows系统核心中主要是几张大表,这样一个整数索引就是标记目标在这个表中 的位置,供操作系统访问时查询用。偶而它的确是指向某对象的指针,有时它还携带一些额外辅助信息。总之,我们不要去直接访问它,把访问HANDLE的任务 交给操作系统好了,除非你还嫌写程序不累:)。DLL:DynamicLinkLibrary动态链接库DLL的一个特点就是可以动态加载(顾名思义),即在主程序(我更喜欢称为客户程序)需要该模块时才由操作系统加载到内存。毕竟一个大型应用程序我们 经常使用到的功能并不多,这样一些不常用的功能模块(DLL)在程序运行时一般将不被载入,可极大节省内存开销。DLL同时也是目前最常用的分发模块的方 法,便

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号