导航:首页 > 源码编译 > 起源编译器适用第二款应用

起源编译器适用第二款应用

发布时间:2023-03-24 04:45:10

A. 起源引擎的引擎沿革

Troika游戏公司最早宣布他们的游戏《吸血鬼:避世血族》将使用起源引擎,它们也是第一个获得使用许可的公司。Valve之后宣布Arkane Studios(制作第一人称角色扮演游戏《魔法门之黑暗弥赛亚》的公司)和Smiling Gator Proctions也获得了使用许可。
Ritual Entertainment在2005年7月4日宣布他们的新游戏获得了使用起源引擎和Steam系统的许可。这证明,起源引擎的效果再次让大家接受。
引擎原理 【着色器】
最高性能的着色器为基础的渲染提供给游戏开发商可以迅速简单的开发,哪怕是最复杂的场景。起源渲染。多核心处理和SIMD,以及通过DirectX的最新图形处理器的功能,先进的处理器技术,使自己的梦想世界成真。
渲染库。使用Valve的资料库或用自己的算法扩大现有的着色。现有的技术包括所有从非
实感渲染(NPR)即《军团要塞2(即卡通样式游戏)》到《半条命2》集都在同一个引擎超现实的复杂灯光效果。
LOD模型。目前是世界上LOD模型的最高水平(所有几何判定都是引擎自主完成的。)
亮度(阿尔法)覆盖。启用高超的动态渲染和抗锯齿α测试,如树叶,栅栏和花格。
无限分辨率掩蔽。使用距离式编码亮度以无限分辨率的纹理掩蔽,阿尔法测定在不同状况下不同。
【动态照明和阴影】
辐射照明。世界的任意几何顶点光藏匿与辐射照明。用编码信息制作真实的光照效果,使照明与自然相结合的凹凸地图,更精确的照明表现细节的地方,包括自我造成的阴影。辐射照明是使用分布计算求解的辐射度(vrad),他可以快速的实现光影的效果。
高动态范围(HDR)照明。所有照明灯,包括地图数据,地图和现场环境的动态灯光均由HDR计算。高动态范围照明支持在DirectX 9级别的硬件上,起源依然支持,同时还可以打开抗锯齿和景深。
辐射传输/间接照明。动态对象和世界中的所有反射光合并在一起进行计算。 更加真实的体现人物的所有动态反光效果。
高解析动态阴影。所有与阴影投射物体或动态物体附近的光源对其照射的角度、距离、明度和光源亮度排列顺序都会进行计算,达到真实的光照阴影效果。
Rim照明
突出模型的边缘照射效果,非常震撼,有些类似于闪电,《求生之路2》和《军团要塞2》均有体现。
先进材料绘制。拥有弥漫、镜面、细节、发光、闪光和其他特殊效果。
【影响】
范围作用。包括颗粒,物体,烟雾体积,火花,血液和环境影响,像雾一样的雨
粒子影响。起源的先进的粒子系统可以发出魔法或火灾的逼真模型,爆炸,雪,等等。多核图形
优化改进粒子渲染性能
粒子编辑。游戏编辑和创建粒子系统和其完全互动的能力,系统预览可立即看到刚才的编辑。
软粒配雹灶子。设定粒子的软硬度来以此模拟物体的反弹、跌落受伤程度,并且这一系统无需耗费过多的资源
运动模糊。运动时摄像机会产生有规律的模糊,完全像人的眼睛。
水。可以生成逼真生动的效果和菲涅尔水面反射和折射的效果。
【材料】
材培扮料系统。起源定义,指定教材套的对象是怎样制成的对象为该使用和纹理。指定的材料如何将一个对象断裂破碎时,它会听起来像是发生时或跨越另一面拖,哪些该对象的质量和浮力的。该系统是远远超过其他质地的只基于系统的灵活性。自阴影凹凸映射创建预先计算的辐射度灯光柔和阴影以及环境与动态和闭塞。来源呈现自阴影对当前和老一代图形硬件凹凸映射。
褶皱贴图(*Wrinkle Maps)。特别有用的拉伸面部皱纹和衣服,更多的纹理贴图,并在模型的混合压缩到提供动态的表面细节的地方。
细节贴图。结合高频低频质感与细节,以节省显存,同时保持明显的质地密度。
多功能多纹理混合。定义边缘融合变肆亏化锯齿,使用多种不同的纹理相结合的模式,校正表面颜色。
动态色彩校正。交互式编辑偏色和对比度的场景,以配合设计者想要的艺术风格。 高兼容,与流行的图形和3D建模软件兼容可以创作出具有高度风格化的人物、武器
、车辆-起源合并工具组。一套强大的工具帮助高效地编辑、拓展动画,并定义的文字和对象范围内的广泛的物理交互作用。
数码肌肉效果。模拟肌肉组织的项目性质的情绪,言语和身体语言。 球型的眼睛真实地反映情况和家。集中对象上,而不是一直朝某个方向。
独立语言系统(*Language independent speech)。特征准确和自然的唇在任何语言上同步。
改善人类皮肤着色。皮肤呈现包括自然的人体皮肤着色,包括查看相关的菲涅尔现实影响。
模型及材料编译器。集成用Studiomdl和Vtex编译模型和材料工具。
模型查看器。在线框预览模式中查看阴影、纹理或视图模式。设立击中范围(HitBox),播放的动画,并微调物理限制。 骨骼动画系统。复杂的运动模型与关节是使用Valve的专有骨骼动画系统。
脸部动画系统。Valve的专有面部动画系统和运动完美结合成一个范围广泛的语音驱动的自然面部表情和感情。40多个不同的脸部“肌肉”,可以让玩家体会到游戏中人物的充沛的感情。
程序动画工具。调整布娃娃物理、骨骼动画追随、场景物理和自定义的程序控制器
动画融合。姿态的无缝融合创造连续运动或制作添加任何命令的情况。分层动画的融合,可合成成多种有趣的动画 VALVE编辑器,起源的地图制作工具,是一个直观的“所见即所得的”建筑设计和环境建设水准(几何,纹理,照明)。配售的脚本模型、实体和NPC,以及编译和运行游戏的水准。包括了VMPI工具,大大降低了地图建立时由多台计算机之间分配的编译时间。
曲面位移(*Displacement Surfaces)。可自由创建各种造型的自然山丘、山谷、沟渠、坡地,利用隧道位移几何刷表面。用刷子和顶点工具变换和剪辑位移表面。
实体刷工具(*Brush Entities)。Valve独创的属性。用刷子定义对象如何与世界全面的交互,包括障碍物、门、触发器、地区入口、背景音等等。
环境映射(*Skyboxes.)。立边体和环境映射(skyboxing)扩展了视野,增加了对遥远的物体的视差。
照明预览。轻松地查看一个内部光的水平影响源。 起源有高度可扩展的网络功能的物理系统,重视处理器和带宽效率。灵敏构建的物理反应,世界里人物互动与身体人工智能对象的模拟,以及声音和图像都遵循从物理学。起源的物理特性可以控制最高水平的设计
机械。构建与运作机制的相同的机械,可以有齿轮、皮带和滑轮
车辆。任何情况下,在多人游戏中,所有玩家可以一起乘坐一辆汽车,每一个现实的汽车功能根据表面材料不同而不同像是弹簧悬架和滑橇表面。独立可调的参数包括马力、传动装置、最大速度、转弯速度、轮胎材料、轮胎摩擦、弹簧张力/抑制等等。依靠完全真实的数据来模拟最真实的驾驶体验。
对象变形(*Deformable Objects)。用娃娃物理与预定义的动画,以物理为基础的动画模拟灵活的头发、混纺布衣服。比如绳索和电缆可以按风或运动水平动态摇摆。
互动约束系统(*Constraint System Manager)。约束骨骼的所有效果,设定所有的情况并自由运算,其搭配几率可谓无限。反转动力学(*Inverse Kinematics)确保人物的肢体对环境地形有正确的反应,如周围障碍物移动的不平衡及调整。 起源引擎的标志在于玩家之间的随机交流和非玩家角色的互动。人工智能系统可以让NPC跟随玩家,并根据情况选择加入战斗。人工智能可以移动、飞行、跳跃、蹲、爬楼梯进入洞穴或地下。
调谐系统。先进的导航系统拥有本地路径搜索回避功能,以帮助周围的NPC进行导航;比如路线调谐统,和充满活力的关卡设计师设计的道路相连接。在该系统的控制下,他们可以提前知道类似于死路,并自动进行道路的计算和修正前进路线。人工智能可以模拟人类的感官,视觉、听觉,甚至用味道来跟踪和识别物体。调谐系统可以用于几乎任何事物的判断。
互动人工智能。设置玩家或NPC的关系,单个NPC,大量NPC,单个玩家(或更多)用实体进行危险度判断,以此确立对其的感情,如仇恨、喜欢或恐惧。
战斗人工智能。人工智能的小队可以分享敌人数据或共同操作物品。 一个队员前去突击,其他的火力掩护。对目标的感知,感知其他人的移动或更换子弹。
I / O系统。灵活的I / O系统带来的前所未有的代码设计。 完全应用于C++中,起源引擎的架构考虑到拓展性、灵活性和性能。Valve用起源引擎的代码来建立屡获殊荣的游戏,无需单独开发。这使您的开发人员把时间花在实现有趣的游戏设计,而不是从头开始。
多平台兼容(*Multi-platform)。兼容PC和Xbox360平台,从2005开始年代码库统一使用Microsof Visual Studio。
多核处理(*Multi-core)。起源引擎游戏利用PC和Xbox 360的多核心处理器均能够提供高性能的游戏体验。
代码克隆(*Code Reuse)。容易和迅速建立新的游戏路线、人工智能行为、游戏对象,更以此作为Valve出发点的测试的基础程式。
完全控制(*Complete Control)。被授权人可以获得起源引擎代码库中的任意部分。
效率计算。以Valve发展的产品优势和自身优化。
监控(*Profiling)。利用Valve的现有的有用的工具进行视频监控,网络、游戏整体的业绩。
演示。Valve的GUI模仿Windows的控制界面,但其效果和起源引擎代码用途一致。 起源引擎包括一个功能强大的数字音频技术套件,创造游戏世界内充满活力的音乐。无缝地混合音效、对话,并加以配合衬托身临其境的超越现实的音乐效果。
螺纹声音引擎(*Threaded Sound Engine)。可以单独在多核系统的核心运行混音处理。
内存管理。可以异步加载声音、流媒体,缓存到一个固定的文件夹或预载文件。
环绕声。支持立体声、耳机、四声道和5.1甚至是7.1环绕声混音。
三维空间化。计算闭塞和阻塞的影响,依照距离和环境,使用自定义的三维空间化混响计算法。
数字信号处理器(*DSP)。一个可预设堆叠的用途广泛的DSP滤波器,包括混响、
合声、ADSR、低频振荡(低频振荡器),低通道、高通道、全通道滤波器。自定义或预设的DSP效果可以触发游戏中基础的声音环境。
音频格式压缩。起源支持无损预读取ADPCM、MP3播放*(*需要Miles音响系统)与XMA。这样可以不用创立音效文件,直接使用外来音效文件。
先进的预处理效果。声音设计师可以定制多普勒效应,频移、距离和其他多声道效果。16位44kHz,支持立体声和波形文件的所有功能。
波形文件实时拼接。一个简单的脚本系统可以让音频设计人员排出恰当的声音序列,利用波形文件制造宏大的声音场景。
整体组合控制(*Overall Mix Control)。音频设计师可以使用建立的几个整体混合脚本以便游戏可以动态切换混音。以便突出对话场景的设置等其他动作。
声音脚本环境系统。VAudio设计者可以自定义脚本环境的事件随机、循环,以及基于玩家的空间位置触发的DSP效果。这也可以修改游戏逻辑的动态效果。
基础材料影响(*Material-based Effects)。音频设计师可以定义脚本来确立材料的具体影响,DSP参数可以设定物体摩擦、脚步声以及空间声音自动反射效果(*EXA)。 起源的多人游戏全世界都有百万家在同时测试,每月全世界多人游戏超过90亿分钟。 起源多人连接提供方便的服务器查看和朋友即时信息。可以预先查看所有在线服务器的流量和延迟,以及好友的所有动态,减少不必要的连接方面的麻烦。
服务器浏览器。显示所有活动的游戏服务器,并允许家选择参加哪一个。玩家可以过滤和排序服务器列表,以加快显示和选择服务器。
好友即时信息。允许玩家之间进行游戏,添加好友和与现在的好友进行游戏。好友间共享游戏信息。没有什么服务器可玩时可以选择和朋友聊天,管理系统让列表不会那么混乱。 起源提供了一个次世代的理想的游戏机发展环境平台,包括主流的Xbox 360。
资源转换(*Asset Conversion)。自定义工具,转换PC资源(地图,模型,贴图)到XBOX360兼容格式。
使用特殊装载机(*Xbox 360 Specific Loaders)。专有工具编写游戏数据转换成
定制格式,下载速度快、读取时间短。
跨平台游戏。多重网络的设计,让PC机和360平台可同台竞技,此外还可以简化平台的开发和测试环境中的问题。
集成Xbox LIVE代码。有丰富的兼容、界面和日志。 引擎的第一个特点是模块化,带来可极高度的扩展性和简易的开发难度,可以轻松的制作各种类型的游戏。第二个特点是开发者优化待遇(得到即可用)。自2004年以来,起源引擎开始面向第三方开发商。这是一种新的开发机制,开发商只需付一次授权费用,就可以获得起源引擎的最新版本及其后的所有更新,而不必二次付费。第三,系统还专为第一人称和第三人称战斗游戏优化,不过也对任何的视角、任何的游戏类型提供支持。第四,提供了对人物动画和AI的高级支持,这些AI拥有业界最先进的人工智能,带来令人喜爱、刁钻又有趣的盟友和敌人。第五,拥有专利的渲染系统。可以创造美丽的世界、精密的物理和强大的音效,让玩家沉浸其中。这使开发人员不用在纠结于编程方面的问题,专注于内容的创新,“起源”让游戏业开启了全新游戏风格创作的大门。
联机性能
“起源”的多人游戏平台——Steam支持世界上最大规模的联机游戏,包括《胜利之日:起源》、《反恐精英:起源》和《军团要塞2》,也是世界上最大的网上游戏文化聚集地之一。“起源引擎”所制作的游戏原生支持强大的网络连接和多人游戏功能,包括支持高达64名玩家局域网和互联网游戏。引擎已集成服务器浏览器、语音通话和文字信息发送,开发者无需二次开发。

B. 编译器的发展史

编译器
编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

一个现代编译器的主要工作流程如下:

源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)
目录 [隐藏]
1 工作原理
2 编译器种类
3 预处理器(preprocessor)
4 编译器前端(frontend)
5 编译器后端(backend)
6 编译语言与解释语言对比
7 历史
8 参见

工作原理
翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。

编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

编译语言与解释语言对比
许多人将高级程序语言分为两类: 编译型语言 和 解释型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用解释型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些解释型语言,很难用编译型实现。比如那些允许 在线代码更改 的解释型语言。)

历史
上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。

有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。

人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。

当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最着名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。

在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。

编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。

在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。

大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。

C. 请问,编译软件最早是由谁发明出来的

Grave of Grace

后记

Grace Hopper是个非常amazing的人 (常被称为Amazing Grace),崇拜她的人相当多。虽然她的事迹很多,但是还有很多有类似事迹的人并没有像她这样受到众人的崇拜。由其中一点我们可以看出来:从1947年开始 (二战结束后第二年),她获得了第一个荣誉博士学位 (宾州大学),从那以后,她先后被40多所大学授予荣誉博士学位,其中包括芝加哥大学、华盛顿大学、马里兰大学等知名学府。各种妇女社会团体和学术组织都曾授予Grace各种称号和奖励。1991年,布什总统在白宫授予她的“美国国家技术奖” (National Medal of Technology) 是其中的最高奖项,她也是至今惟一获此殊荣的美国女性。她的名言有很多,她自己最喜欢的,也是她最喜欢对所谓的“年轻人”说的 (在她年老时,她所谓的年轻人就是“年龄不到我的一半的人就叫做年轻人”),这句话是:

“A ship in port is safe, but that is not what ships are built for.”

语录

下面Grace的语录中有几句比较有意思的话。

D. linux系统和windowsXP,Visita有什么不同啊

1.Linux的操作比较复杂,windows的比较简单.
Linux速度比较快,安全性比windows好
但是有很多软件只能在windows里运行
与Linux兼容的软件正在开发中.
Linux适用在网络方面.

2. 什么是Linux?
简单地说, Linux是一套免费使用和自由传播的类 Unix操作系统,它主要用于基

于 Intel x86系列 CPU的计算机上。这个系统是由世界各地的成千上万的程序员

设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自

由使用的 Unix兼容产品。 Linux的出现,最早开始于一位名叫 Linus Torvalds

的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一

个代替 Minix(是由一位名叫 Andrew Tannebaum的计算机教授编写的一个操作系

统示教程序)的操作系统,这个操作系统可用于 386、 486或奔腾处理器的个人

计算机上,并且具有 Unix操作系统的全部功能,因而开始了 Linux雏形的设计。

Linux以它的高效性和灵活性着称。它能够在 PC计算机上实现全部的 Unix特性,

具有多任务、多用户的能力。 Linux是在 GNU公共许可权限下免费获得的,是一

个符合 POSIX标准的操作系统。 Linux操作系统软件包不仅包括完整的 Linux操

作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有

多个窗口管理器的 X-Windows图形用户界面,如同我们使用 Windows NT一样,允

许我们使用窗口、图标和菜单对系统进行操作。
Linux与其他操作系统有什么区别:
Linux可以与 MS-DOS、 OS/2、 Windows等其他操作系统共存于同一台机器上。它

们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。
目前运行在 PC机上的操作系统主要有雀掘Microsoft的 MS-DOS、 Windows、 Windows

NT、 IBM的 OS/2等。早期的 PC机用户普遍使用 MS-DOS,因为这种操作系统对机

器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来

越碧雹低,人们可以相对容易地提高计算机的硬件配置,于是开始使用

Windows、Windows NT等具有图形界面的操作系统。 Linux是新近被人们所关注的

操作系统,它正在逐渐为 PC机的用户所接受。那么, Linux与其他操作系统的主

要区别是什么呢?下面从两个方面加以论述。
首先看一下Linux与 MS- DOS之间的区别。 在同一系统上运行 Linux和 MS-DOS

已很普遍,就发挥处理器功能来说, MS-DOS没有完全实现 x86处理器的功悔岁帆能,而

Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。 Linux可以

直接访问计算机内的所有可用内存,提供完整的 Unix接口。而 MS-DOS只支持部

分 Unix的接口。
就使用费用而言, Linux和 MS-DOS是两种完全不同的实体。与其他商业操作系统

相比, MS-DOS价格比较便宜,而且在 PC机用户中有很大的占有率,任何其他 PC

机操作系统都很难达到 MS-DOS的普及程度,因为其他操作系统的费用对大多数

PC机用户来说都是一个不小的负担。 Linux是免费的,用户可以从 internet上或

者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。 就操作系统

的功能来说, MS-DOS是单任务的操作系统,一旦用户运行了一个 MS-DOS的应用

程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而 Linux

是多任务的操作系统,用户可以同时运行多个应用程序。 再看一下 Linux与

OS/2、 Windows、 Windows NT之间的区别。
从发展的背景看, Linux与其他操作系统的区别是, Linux是从一个比较成熟的

操作系统发展而来的,而其他操作系统,如 Windows NT等,都是自成体系,无对

应的相依托的操作系统。这一区别使得 Linux的用户能大大地从 Unix团体贡献中

获利。因为 Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年

代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少

相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是

Unix的作者还是 Unix的用户,都认为只有 Unix才是一个真正的操作系统。

3. 首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件


只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司
都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些
Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区


是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置,
各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之
没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到


所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志
得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了,
或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下
安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜
是不希奇的 -- 当然,我觉得这是值得的。

所以,面对那么多Linux distribution,你应当选择哪个呢?

比较着名的Linux distribution有:
RedHat:最新版本6.2, 7.0beta。由于RedHat公司已经上市,获得了很多
商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的
工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为
Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你
自然会只认准一个Linux。

Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了



SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。

另外还有Debian,CorelLinux等dist,不一一介绍了。

还有你会看到国内媒体上吹捧的各种“中文Linux”,他们的优势主要是有
中文处理。但是如前一篇文章提到的,想用中文,用windows 2000最好。实际上
我觉得一个老7字班的前辈跟我说的一句话很好:“(对我们来说)在计算机上看


中文本身就是一件很古怪的事情”。如果你是抱着学习计算机的目的而来,那么
你不可能避免阅读英文文档。即使是microsoft的文档,有关编程的文档,最新的


全是英文。当然,要上BBS,看中文网页等,用英文的dist一样能做到

4. Linux和Windows的区别

和Linux 一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口

、网络和安全性。但是,Linux和Windows的真正区别在于,Linux 事实上是Unix

的一种版本,而且来自Unix的贡献非常巨大。是什么使得Unix如此重要?不仅在

于对多用户机器来说,Unix是最流行的操作系统,而且在于它是免费软件的基础

。在Internet上,大量免费软件都是针对Unix系统编写的。由于有众多的Unix厂

商,所以Unix也有许多实现方法。没有一个单独的组织负责Unix的分发。现在,

存在一股巨大的力量推动Unix社团以开放系统的形式走向标准化。另一方面Windo

ws系列是专用系统,由开发操作系统的公司控制接口和设计。在这个意义上这种

公司利润很高,因为它对程序设计和用户接口设计建立了严格的标准,和那些开

放系统社团完全不一样。一些组织正在试图完成标准化Unix程序设计接口的任务

。特别要指出的是,Linux完全兼容POSIX.1标准。

安全问题对于IT管理员来说是需要长期关注的。主管们需要一套框架来对操作系

统的安全性进行合理的评估,包括:基本安全、网络安全和协议,应用协议、发

布与操作、确信度、可信计算、开放标准。在本文中,我们将按照这七个类别比

较微软Windows和Linux的安全性。最终的定性结论是:目前为止,Linux提供了相

对于Windows更好的安全性能,只有一个方面例外(确信度)。

无论按照什么标准对Windows和Linux进行评估,都存在一定的问题:每个操作系

统都不止一个版本。微软的操作系统有Windows98、 Windows NT、 Windows 2000

、 Windows 2003 Server和Windows

CE,而Linux的发行版由于内核(基于2.2、2.4、2.6)的不同和软件包的不同也

有较大的差异。我们本文所使用的操作系统,都是目前的技术而不是那些"古老"

的解决方案。

用户需要记住:Linux和Windows在设计上就存在哲学性的区别。Windows操作系统

倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合;而Linux不同

于Windows,它的内核空间与用户空间有明显的界限。根据设计架构的不同,两者

都可以使操作系统更加安全。

Linux和Windows安全性的基本改变

对于用户来说,Linux和Windows的不断更新引发了两者之间的竞争。用户可以有

自己喜欢的系统,同时也在关注竞争的发展。微软的主动性似乎更高一些――这

是由于业界"冷嘲热讽"的"激励"与Linux的不断发展。微软将在下几个月对Window

s安全进行改观,届时微软会发布Windows XP的WindowsXP Service Pack 2。这一

服务包增强了Windows的安全性,关闭了原先默认开放的许多服务,也提供了新的

补丁管理工具,例如:为了避免受到过多无用的信息,警告服务和信使服务都被

关闭。大多数情况下,关闭这些特性对于增强系统安全性是有好处的,不过很难

在安全性与软件的功能性、灵活性之间作出折衷。

最显着的表现是:微软更加关注改进可用性的同时增强系统的安全性。比如:200

3年许多针对微软的漏洞攻击程序都使用可执行文件作为电子邮件的附件(例如My

Doom)。Service Pack2包括一个附件执行服务,为Outlook/Exchange、 Windows

Messenger和Internet Explorer提供了统一的环境。这样就能降低用户运行可执

行文件时感染病毒或者蠕虫的威胁性。另外,禁止数据页的可执行性也会限制潜

在的缓冲区溢出的威胁。不过,微软在WindowsXP Service Pack

2中并没有修改Windows有问题的架构以及安全传输的部分,而是将这部分重担交

给了用户。

微软的重点显然是支持应用程序的安全性。WindowsXP Service Pack 2中增强的

许多方面都是以Outlook/Exchange和Internet

Explorer作为对象的。例如:Internet Explorer中有一个智能的MIME类型检查,

会对目标的内容类型进行检查,用户可以获悉该内容中是否存在潜在的有害程序

。不过这一软件是不是能将病毒与同事的电子数据表区分开来呢?

WindowsXP Service Pack 2的另一个新特性是能够卸载浏览器的多余插件,这需

要终端用户检查并判断需要卸载哪些插件。Outlook/Exchange可以预览电子邮件

消息,因此用户可以在打开之前就将电子邮件删除。另一个应用安全的增强,防

火墙在网络协议栈之前启动。对于软件开发者来说,远方过程调用中权限的改变

,使得安全性差的代码难以工作正常。

WindowsXP Service Pack 2也为Windows用户提供了许多华丽的新特性,但是问题

仍然存在:这些特性会不会对管理员甚至是终端用户造成负担?是不是在增加了W

indows操作系统代码安全性的同时让系统变得更加复杂?

Linux 与 Windows 的不同
虽然有一些类似之处,但Windows和Linux的工作方式还是存在一些根本的区别。

这些区别只有在您对两者都很熟悉以后才能体会到,但它们却是 Linux 思想的核

心。

Linux 的应用目标是网络而不是打印

Windows最初出现的时候,这个世界还是一个纸张的世界。Windows的伟大成就之

一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows

的后期发展。

同样,Linux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的

设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较

简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文

本为基础。

对那些熟悉图形环境的人来说,Linux服务器初看可能比较原始。但是Linux开发

更多关注的是它的内在功能而不是表面上的东西。即使是在纯文本的环境中,Lin

ux同样拥有非常先进的网络、脚本和安全能力。执行一些任务所需的某些表面上

看起来比较奇怪的步骤是令人费解的,除非您认识到 Linux 是期望在网络上与其

他 Linux系统协同执行这些任务。Linux的自动执行能力也很强,只需要设计批处

理文件就可以让系统自动完成非常详细的任务。Linux 的这种能力来自于其基于

文本的本质。

可选的 GUI

Linux有图形组件。Linux支持高端的图形适配器和显示器,完全胜任图形相关的

工作。现在,许多数字效果艺术家在Linux工作站上来进行他们的设计工作,而以

前这些工作需要使用IRIX系统来完成。但是,图形环境并没有集成到 Linux 中,

而是运行于系统之上的单独一层。这意味着您可以只运行 GUI,或者在需要时才

运行 GUI。如果您的系统主要任务是提供Web应用,那么您可以停掉图形界面,而

将其所用的内存和CPU资源用于您的服务。如果您需要在 GUI 环境下做一些工作

,可以再打开它,工作完成后再将其关闭。

Linux 有图形化的管理工具,以及日常办公的工具,比如电子邮件、网络浏览器

和文档处理工具等。不过,在 Linux 中,图形化的管理工具通常是控制台 (命令

行) 工具的扩展。也就是说,用图形化工具能完成的所有工作,用控制台命令同

样可以完成。同样,使用图形化工具并不妨碍您对配置文件进行手工修改。其实

际意义可能并不是特别显而易见,但是,如果在图形化管理工具中所做的任何工

作都可以以命令行的方式完成,这就表示那些工作也可以由一个脚本来实现。脚

本化的命令可以成为自动执行的任务。Linux 同时支持这两种方式,并不要求您

只用文本或者只用 GUI。您可以根据您的需要选择最好的方法。

Linux 中的配置文件是人类可读的文本文件,这与过去的 Windows 中的 INI 文

件类似,但与 Windows 的注册表机制在思路上有本质的区别。每一个应用程序都

有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的

配置文件都存放于一个目录树 (/etc) 下的单个地方,所以看起来它们在逻辑上

是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件

的备份、检查和编辑工作。

文件名扩展

Linux不使用文件名扩展来识别文件的类型。相反,Linux根据文件的头内容来识

别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来

说没有任何作用。不过,有一些应用程序,比如 Web 服务器,可能使用命名约定

来识别文件类型,但这只是特定的应用程序的要求而不是 Linux 系统本身的要求



Linux通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予

可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。

这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防

止许多脚本病毒。

重新引导是最后的手段

如果您使用Windows已经很长时间了,您可能已经习惯出于各种原因(从软件安装

到纠正服务故障)而重新引导系统。在Linux思想中您的这一习惯需要改变。Linu

x在本质上更遵循“牛顿运动定律”。一旦开始运行,它将保持运行状态,直到受

到外来因素的影响,比如硬件的故障。实际上,Linux系统的设计使得应用程序不

会导致内核的崩溃,因此不必经常重新引导(与Windows系统的设计相对而言)。

所以除了Linux内核之外,其他软件的安装、启动、停止和重新配置都不用重新引

导系统。

如果您确实重新引导了 Linux 系统,问题很可能得不到解决,而且还会使问题更

加恶化。学习并掌握 Linux 服务和运行级别是成功解决问题的关键。学习 Linux

最困难的就是克服重新引导系统的习惯。

另外,您可以远程地完成Linux中的很多工作。只要有一些基本的网络服务在运行

,您就可以进入到那个系统。而且,如果系统中一个特定的服务出现了问题,您

可以在进行故障诊断的同时让其他服务继续运行。当您在一个系统上同时运行多

个服务的时候,这种管理方式非常重要。

命令区分大小写

所有的 Linux 命令和选项都区分大小写。例如, -R 与 -r 不同,会去做不同的

事情。控制台命令几乎都是小写的。我们将在“ 第 2 部分. 控制台速成班”中

对命令进行更详细的介绍。

广泛的硬件支持可能是任何流行操作系统最基本的要求,也是可伸缩性的一个重要方面。Windows操作系统在这个方面做得的确非常出色:一方面, Windows的广泛使用使得任何硬件厂商在推出新的硬件时都会把Windows当作标准的平台加以支持,并且不断为新的Windows版本更新驱动程序;另一方面,大量的硬件支持又反过来推动了Windows平台的进一步普及。
Linux的硬件驱动程序通常都是由那些需要这些硬件的用户自己来开发的. Linux的共享性能够很快地给那些常用的硬件提供驱动程序,这些驱动程序需要后续的支持和帮助,来克服潜在的不稳定性。至于一些尚未普及的组件,如各式各样的USB设备,其驱动程序的开发将需要更多的支持,来满足不同用户的需要。
SMP(对称多处理器)支持
CPU是计算机系统的核心部分,是否具有良好的SMP支持将直接影响大型应用下的性能。
Windows 2000 Advanced Server的零售版本最多支持四路SMP,OEM版可以支持最多达32路的SMP。对CPU的支持级别和Windows 4.0相比没有什么变化,但是对SMP的实现代码进行了改进,使得高性能的缩放可以更为“线性”地进行。Windows NT Server 4.0企业版已经实现了创纪录的性能价格水平,随着对SMP缩放的改进,这一趋势将在Windows 2000 Advanced Server和Datacenter Server中得到延续。在采用八路设计或者多于八路设计的系统中,性能的提高最为明显。
而Linux正致力于解决核心部分中的SMP支持,以提高Linux在大型应用下的性能。尽管Linux不是为SMP而设计的,Linux Torvalds也曾经说过Linux的SMP评测表现很差,但是我们期望这些问题能够在2.4版本内核中得到解决,使更多的学校或者企业可以使用经过考验的Linux来实现他们的核心程序。
对群集的支持
Windows 2000 Server具有强大的群集功能。Compaq最近之所以能在TPC-C比赛中傲视群雄,击败所有对手,靠的就是一个巨大的有着12个节点,96个处理器的群集,而它们运行的是Windows 2000 Server。
尽管Linux没有在高端系统中运行关键性应用程序方面有出色记录,但最近Linux在群集项目也发布了不少东西,希望Linux的开发者大军可以开发出更完善的群集功能
对特定计算环境的支持
使每一个系统都有适合于自己的工作场合,这就是系统对特定计算环境的支持。
微软开发了不同的操作系统来完成不同类型的任务。Windows CE适用于小型的手持式电脑和笔记本电脑,Windows 95/98和Windows 2000 Professional适用于桌面计算机,而Windows NT 4.0和Windows 2000 Server则适用于大型服务器应用程序。作为一个系列操作系统家族,Windows对各种不同的工作环境提供了良好的伸缩性支持。
由于Linux大部分可用的平台处于开发的初始阶段,对于各种不同计算环境的支持将是Linux系统的下一步目标。
文档编制
众所周知,随着系统变得越来越复杂,功能越来越强大,编制一个好的文档是非常重要的。这有助于用户对系统的理解和管理。详尽的文档说明,有助于我们熟练地掌握它所有的功能和特性。
微软通常为其产品提供了深入细致的文档说明,在文档的本地化方面也做得很好。Linux产品的文档说明需要进一步的规范。
回答者:可爱的小刚丝 - 试用期 一级 9-6 13:12

1、从系统构成上来说,linux是开源软件,而windows不是。那就意味着,如果你喜欢你可以对linux系统做你想做的任何改动。而这点对于windows来说,是想也不要想的。
2、从运行的稳定性来说。各有利弊。但linux的任何程序都是相对独立的,哪怕gnome和kde(图形界面)也是独立的。而软件的崩溃只是软件的崩溃,很少造成系统的瘫痪(死机)。只有重新运行程序就好了。windows吗,就不用说了,没见过windows死机的人,我没见过。
3、从多用户来说,linux是真正的多用户系统。可以多个用户真正登录,这对于windows来说,虽然也有了雏形,但太儿戏化了,摆设而已。
4、对于中文的支持来说。windows的多个版本对于windows的支持是很强的。字体也很漂亮。而linux虽然也支持中文,但要完全支持中文是要手动做很多设置的,不过就算做的再好。总有机会看到中文乱码的(因为几乎每个软件都要设置字体和字符编码的)。而且中文的字体比较烦,不是很好看。(好看的基本都不是开源的。ps:如果你都不想为操作系统花钱,还会去买几个字体吗。当然也有盗版@不是用linux的初衷了。)
5、对于系统更新来说,apt是目前linux不二的选择了,快捷普遍、简单。而且无什么正版验证之虞的。windows也不错,可以漏洞总比补丁来的快,更何况我没用过正版的呢。
6、从安全性来说。其实上一条也说过这个问题了。我们用windows时,杀毒软件、防火墙、防垃圾软件、防间谍软件占去了大部分的系统资源。可这样还是防不胜防的。有谁没中过毒或木马、流氓软件呢?
linux?不用这些烦人的东西。
7、从应用软件来说,虽然linux下的软件有很多,但和windows来说,真的没办法比的。谁让windows几乎成了操作系统的代名了呢。
8、从易用性来说,我自我的感觉,在常用的windows、mac、linux中,无论界面、鼠标操作、文件格式,windows都是相当容易上手的。其他的操作系统,几乎都要是摸索中探索的。更何况linux的很多配置都是基于文档的,也就是要手工的修改一些配置文件。对于想我这样的老人来说,厄长的代码,明天还能记得否?
windows几乎一支鼠标就能解决所有问题。呵呵
9、综述:当然各种的优缺点远不至就这些,就不过说了。
如果要出于个人应用的话,还是用windows吧。学习容易,资料好早。
如果出于学习的话,还是用用linux吧,但你要做好不厌其烦的心理准备!对于混乱的linux版本来说,你要记得同样的问题,可以有n种解决办法,但可能只有一种合适你的。网上资料相对比较匮乏,比较单一,而且抄袭严重。
linux我推荐用新华linux,中文化很好了(少烦很多神的),论坛也做的不错。

E. 我想自学C++编程,请问需要给电脑安装什么软件

1、gcc

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。

2、llvm+Clang

LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。

LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者。

3、Watcom C/C++

Watcom C/C++ 编译器、Watch Fortran 编译器 经已在不其先前所属公司Sybase售卖, 而被 SciTech 软件公司 作为 Open Watcom 开源包 发行。类似于其他的 开源编译器(例如 [GCC])项目,Watcom C代码小而便携, 其编译器后端(代码生成器)的目标码可变。

该编译器可在DOS、OS/2、Windows等操作系统上运行,并生成各种可运行的(不必是该操作系统的)代码。该编译器支持Novell NetWare的 NLM 目标码。目前正进行 为 Linux、modern BSD (例如FreeBSD) 操作系统 重定目标码,以便在 x86、PowerPC 及其它处理器上运行。

Open Watcom C/C++ 的1.4版于2005年12月发行,采用 Linux x86 为实验目标, 支持NT、OS/2等host平台曾有某被弃置的QNX版本,但其编译所须的库并未开源发行。当前最近的稳定版是1.9版,在2010年6月发行。

4、Digital Mars

DigitalMars是一款高性能的编译器,功能包含,快速编译/链接时、强大的优化技术、Contract设计、完整的资源库、浏览HTML文档,反汇编、库、资源编译器等。命令行及GUI版本、教程、代码示例、在线更新、标准模板库等等。

5、MSVC系列

与Visual Studio集成发布,微软自己的编译器,VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。

所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

F. PPC是什么意思

PPC是巴黎和会。巴黎和会是一战结束后的1919年,胜利的协约国集团为解决战争所造成的问题以及奠定战后的和平而召开的会议。这个和会是胜利国举行的和会,又是个大国操纵的和会,德国等战败国和苏俄被排斥在会议之外。

(6)起源编译器适用第二款应用扩展阅读:

美、英、法三国最高领导人主导了和会的进行。和会上签订了处置德国的《凡尔赛和约》,同时还分别同奥、匈、土等国签订了一系列和约。它们构成了凡尔赛体系,确立了一战后由美、英、法等主要战胜国主导的国际政治格局。

1914年奥地利王储斐迪南大公夫妇遇刺,这件事情改变了全世界命运。当年7月28日,奥匈帝国对塞尔维亚宣战。随即,这两个国家背后的德意志帝国与沙皇俄国宣战,至英德两国宣战后,意味欧洲战区全面开打。"唐启华介绍,就在百年前的8月7日,中国对所有交战国宣布保持局外中立。

G. 学C语言现在最好用的编程软件

GNU编译器套装
开发 The GNU Project
最新版本 4.4.2 / 2009-10-15(2个月前)
操作系统 跨平台
类型 编译器
许可协议 GPL
网站 gcc.gnu.org

GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果计算机Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。

GCC原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java,以及Ada与其他语言。
目录
[隐藏]

* 1 概观
* 2 目前支持的语言
o 2.1 内嵌OpenMP支持
* 3 支持的处理器架构
* 4 结构
o 4.1 前端接口
o 4.2 中介接口
o 4.3 后端接口
* 5 替GCC程序除错
* 6 参考书目及注释
* 7 参阅
* 8 更多阅读
* 9 外部链接

[编辑] 概观

GCC是由理乍得·马修·斯托曼在1985年开始的。他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。为了让自由软件有一个编译器,后来此编译器由斯托曼和Len Tower在1987年[1]以C语言重写[2]并成为GNU项目的编译器。GCC的建立者由自由软件基金会直接管理[3]。

在1997年,一群不满GCC缓慢且封闭的创作环境者,组织了一个名为EGCS《Experimental/Enhanced GNU Compiler System》的项目,此项目汇整了数项实验性的分支进入某个GCC项目的分支中。EGCS比起GCC的建构环境更有活力,且EGCS最终也在1999年四月成为GCC的官方版本。

GCC目前由世界各地不同的数个程序设计师小组维护。它是移植到中央处理器架构以及操作系统最多的编译器。

由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与建立其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP与BeOS。

GCC通常是跨平台软件的编译器首选。有别于一般局限于特定系统与运行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。
[编辑] 目前支持的语言

以2006年5月24日释出的4.1.1版为准,本编译器版本可处理下列语言:

* Ada 《GNAT》
* C 《GCC》
* C++(G++)
* Fortran 《Fortran 77: G77,Fortran 90: GFORTRAN》

* Java 《编译器:GCJ;解释器:GIJ》
* Objective-C 《GOBJC》
* Objective-C++

先前版本纳入的CHILL前端由于缺乏维护而被废弃。

Fortran前端在4.0版之前是G77,此前端仅支持Fortran 77。在本版本中,G77被废弃而采用更新的GFortran,因为此前端支持Fortran 95。

下列前端依然存在:

* Mola-2
* Mola-3
* Pascal
* PL/I

* D语言
* Mercury
* VHDL

[编辑] 内嵌OpenMP支持

OpenMP是一种跨语言的对称多处理器(SMP)多线程并行程序的编程工具,也非常适合当今越来越流行的单CPU多核硬件环境,因此从gcc4.2开始,OpenMP成为其内嵌支持的并行编程规范,可以直接编译内嵌 OpenMP语句的C/C++/Fortran95的源代码。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP语句的话,需要额外安装库和预处理器才能识别和正确处理这些语句。

* gcc 4.2.0开始支持OpenMP v2.5
* gcc 4.4.0开始支持OpenMP v2.5及v3.0

参见GNU的GOMP计划
[编辑] 支持的处理器架构

GCC目前支持下列处理器架构(以4.1版为准):

* Alpha
* ARM
* Atmel AVR
* Blackfin
* H8/300
* IA-32(x86)与x86-64
* IA-64例如:Itanium

* MorphoSys家族
* Motorola 68000
* Motorola 88000
* MIPS
* PA-RISC
* PDP-11
* PowerPC

* System/370,System/390
* SuperH
* HC12
* SPARC
* VAX
* Renesas R8C/M16C/M32C家族

较不知名的处理器架构也在官方释出版本中支持:

* A29K
* ARC
* C4x
* CRIS
* D30V
* DSP16xx
* FR-30
* FR-V

* Intel i960
* IP2000
* M32R
* 68HC11
* MCORE
* MMIX

* MN10200
* MN10300
* NS32K
* ROMP
* Stormy16
* V850
* Xtensa

由FSF个别维护的GCC处理器架构:

* D10V
* MicroBlaze

* PDP-10
* MSP430

* Z8000

当GCC需要移植到一个新平台上,通常使用此平台固有的语言来撰写其初始阶段。
[编辑] 结构

GCC的外部接口长得像一个标准的Unix编译器。用户在命令行下键入gcc之程序名,以及一些命令参数,以便决定每个输入文件使用的个别语言编译器,并为输出代码使用适合此硬件平台的汇编语言编译器,并且选择性地运行连接器以制造可运行的程序。

每个语言编译器都是独立程序,此程序可处理输入的源代码,并输出汇编语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的源代码,并产生一抽象语法树,以及一翻译此语法树成为GCC的寄存器转换语言《RTL》的后端。编译器优化与静态代码解析技术(例如FORTIFY_SOURCE[1],一个试图发现缓存溢出《buffer overflow》的编译器)在此阶段应用于代码上。最后,适用于此硬件架构的汇编语言代码以Jack Davidson与Chris Fraser发明的算法产出。

几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成。
[编辑] 前端接口

前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递回语法解析器。

直到最近,程序的语法树结构尚无法与欲产出的处理器架构脱钩。而语法树的规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则。

在2005年,两种与语言脱钩的新型态语法树纳入GCC中。它们称为GENERIC与GIMPLE。语法解析变成产生与语言相关的暂时语法树,再将它们转成GENERIC。之后再使用"gimplifier"技术降低GENERIC的复杂结构,成为一较简单的静态唯一形式(Static Single Assignment form,SSA)基础的GIMPLE形式。此形式是一个与语言和处理器架构脱钩的全局优化通用语言,适用于大多数的现代编程语言。
[编辑] 中介接口

一般编译器作者会将语法树的优化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器。因此GCC作者们将此步骤归入通称为中介阶段的部分里。此类的优化包括消解死码、消解重复计算与全局数值重编码等。许多优化技巧也正在实现中。
[编辑] 后端接口

GCC后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、调用方式与大小尾序等。后端接口的前半部利用这些消息决定其RTL的生成形式,因此虽然GCC的RTL理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式。

GCC的优化技巧依其释出版本而有很大不同,但都包含了标准的优化算法,例如循环优化、线程跳跃、共通程序子句消减、指令调度等等。而RTL的优化由于可用的情形较少,且缺乏较高级的信息,因此比较起近来增加的GIMPLE语法树形式[2],便显得比较不重要。

后端经由一重读取步骤后,利用描述目标处理器的指令集时所取得的信息,将抽象寄存器替换成处理器的真实寄存器。此阶段非常复杂,因为它必须关照所有GCC可移植平台的处理器指令集的规格与技术细节。

后端的最后步骤相当公式化,仅仅将前一阶段得到的汇编语言码借由简单的副函数转换其寄存器与存储器位置成相对应的机器码。
[编辑] 替GCC程序除错

为GCC除错的首选工具当然是GNU除错器。其他特殊用途的除错工具是Valgrind,用以发现存储器泄漏 (Memory leak)。而GNU测量器(gprof)可以得知程序中某些函数花费多少时间,以及其调用频率;此功能需要用户在编译时选定测量《profiling》选项。
[编辑] 参考书目及注释

* Richard M. Stallman:Using and Porting the GNU Compiler Collection, Free Software Foundation,ISBN 0-595-10035-X
* Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference, Free Software Foundation, ISBN 1-882114-39-6
* Brian J. Gough:An Introction to GCC, Network Theory Ltd., ISBN 0-9541617-9-3

1. ^ Tower, Leonard (1987) "GNU C编译器beta测试版释出" comp.lang.misc USENET新闻组;参阅http://gcc.gnu.org/releases.html#timeline
2. ^ Stallman, Richard M.(1986年2月1日).GNU状态.GNU的公告版,1(1).自由软件基金会.
3. ^ Stallman, Richard M. (2001) "GCC贡献者名单"于使用及移植GCC 2.95版(Cambridge, Mass.: Free Software Foundation)

[编辑] 参阅
[[File:|36x32px|自由软件主题]] 自由软件主题首页

GCC目前包含了Boehm GC,一个为C/C++ 所设计的垃圾回收器。

* distcc - 为分布式编译所设计的软件,以GCC为协同软件。
* LLVM - 低层虚拟机编译器架构。
* MinGW - 将GNU开发工具移植到Win32平台下的计划
* Cygwin - 在Windows上运行GNU程序的模拟软件。
* GCC Summit
* OpenWatcom - 另一个开放原码的C++/Fortran编译器。
* Code Sourcery - 一个GCC顾问公司。
* ggcc - 全球化GCC项目。

[编辑] 更多阅读

* Arthur Griffith, GCC: The Complete Reference. McGrawHill/Osborne. ISBN 0-07-222405-3.
* Kerner, Sean Michael.Open Source GCC 4.0: Older, Faster,internetnews.com,2005年4月22日.
* Kerner, Sean Michael.New GCC Heavy on Optimization,internetnews.com,2006年3月2日.

[编辑] 外部链接

* GCC官方网站
* GCC Forum - 由Nabble维持,整理所有gcc通信讨论串,并集成入一个可搜索接口中。

H. 常见的C语言编译器是什么

目前最流行的C语言编译器有以下几种:

1、GNU Compiler Collection 或称GCC

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的着名例子,由自由软件基金会以GPL协议发布。

2、Microsoft C 或称 MS C

Microsoft C 是c语言的一种IDE(集成开发环境),常见的还有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......

3、Borland Turbo C 或称 Turbo C

Turbo C是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎。

(8)起源编译器适用第二款应用扩展阅读:

C编译的整个过程很复杂,大致可以分为以下四个阶段:

1、预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。

2、编译、优化阶段编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。

3、汇编阶段将汇编语言翻译成机器指令。

4、链接阶段链接阶段的主要工作是将有关的目标文件连接起来,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的目标文件成为一个能够被操作系统装入执行的统一整体。

I. python的编辑器有哪些

1、Sublime Text
Sublime Text轻量级的代码编辑器,跨平台,支持几十种编程语言,包括Python,Java,C/C++等,小巧灵活,运行轻快,支持代码高亮、自动补全、语法提示,插件扩展丰富,是一个很不错的代码编辑器,配置相关文件后,可直接运行Python程序。Sublime Text 是开发者中最流行的编辑器之一,多功能,支持多种语言,而且在开发者社区非常受欢迎。Sublime 有自己的包管理器,开发者可以使用TA来安装组件,插件和额外的样式,所有这些都能提升你的编码体验。
2、VS Code
这是微软开发的一个跨平台的代码编辑器,支持常见的编程语言开发,插件拓展丰富,不仅智能补全、语法检查、代码高亮,还支持git功能,运行流畅,是一个很不错的代码编辑器,安装相关插件后,可直接运行Python程序。
3、Atom
这是github专门为程序员开发的一个代码编辑器,也是款平台的,界面简洁直观,使用起来非常方便,自动补全、代码高亮、语法提示,启动运行速度较快,对于初学者来说,是一个很不错的代码编辑器。
4、PyCharm:
这是一个专门用于Python开发的IDE,常见的代码补全、智能提示、语法检查,这个软件都支持,除此之外,还集成了版本控制、单元测试、git功能,可以快速创建Django,Flask等Python Web框架,使用起来非常不错,在开发大型项目中经常会用到,唯一的缺点就是,启动起来有些卡,还不是免费的,不过可以下载社区免费版的。PyCharm是 JetBrains 开发的 Python IDE。PyCharm用于一般IDE具备的功能,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython。
5、Vim
Vim可以说是Python最好的IDE。Vim是高级文本编辑器,旨在提供实际的Unix编辑器‘Vi’功能,支持更多更完善的特性集。Vim不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把Vim集成到你的工作流中。
6、Eclipse with PyDev
Eclipse是非常流行的IDE,而且已经有了很久的历史。Eclipse with Pydev允许开发者创建有用和交互式的Web应用。PyDev是Eclipse开发Python的IDE,支持Python,Jython和IronPython的开发。
7、Emacs
GNU Emacs是可扩展,自定义的文本编辑器,甚至是更多的功能。Emacs的核心是Emacs Lisp解析器,但是支持文本编辑。如果你已经使用过Vim,可以尝试一下Emacs。
8、Komodo Edit
Komodo Edit 是非常干净专业的Python IDE。
9、Wing
Wingware的Python IDE兼容Python 2.x和3.x,可以结合Django, matplotlib, Zope, Plone, App Engine, PyQt, PySide, wxPython, PyGTK, Tkinter, mod_wsgi, pygame, Maya, MotionBuilder, NUKE, Blender 和其他 Python 框架使用。Wing支持测试驱动开发,集成了单元测试,nose和Django框架的执行和调试功能。Wing IDE启动和运行的速度都非常快,支持 Windows, Linux, OS X和Python versi。
10、PyScripter
PyScripter是款免费开源的Python集成开发环境(IDE)。
11、The Eric Python IDE
Eric是全功能的Python和Ruby编辑器和IDE,是使用Python 编写的。Eric基于跨平台的GUI工具包Qt,集成了高度灵活的Scintilla 编辑器控件。Eric包括一个插件系统,允许简单的对IDE进行功能性扩展。
12、Interactive Editor for Python
IEP是跨平台的Python IDE,旨在提供简单高效的Python开发环境。包括两个重要的组件:编辑器和Shell,并且提供插件工具集从各个方面来提高开发人员的效率。
以上就是我总结的好用的12款Python编辑器。因每个人的操作习惯不同,适合自己使用的才是好用的Python编辑器。

J. c语言编译软件有哪些

6款好用的C语言编译器推荐

一些刚开始接触C语言编译的网友想下载一款C语言编译器来使用,不过,网络上有不少C语言编译器相关的软件,让人很难抉择。那么,C语言编译器哪个好?今天的文章里,小编给大家整理了6款好用的C语言编译器推荐给大家,需要C语言编译器的网友,不妨了解一下!

一、Dev-C++

Visual Studio(VS) 是一套非常完备的工具和服务,可帮助您为 Microsoft 平台和其他平台创建各种各样的应用程序。Visual Studio 还可将您所有的项目、团队和利益干系人联系在一起。现在您的团队可以从任何位置以虚拟方式进行更为敏捷的合作,无论他们采用何种开发工具。

功能介绍

可以通过强大的集成开发环境构建面向 Windows、Android、iOS 以及 Web 的出色应用。使用任何 IDE 或编辑器在云中进行版本控制、敏捷、持续交付、应用程序分析协作。

适用于所有操作系统的编辑器使用可在 Windows、OS X 或 Linux 上运行的免费代码编辑器构建和调试现代 Web 和云应用程序。

阅读全文

与起源编译器适用第二款应用相关的资料

热点内容
php邮箱验证代码 浏览:404
光猫伪装命令 浏览:175
安卓高端机为什么都用曲屏 浏览:419
老电影大全 战争片 浏览:971
有没有小电影得网址网站 浏览:378
奥特曼电影排行榜前十名 浏览:580
安卓光遇账号过期怎么找回 浏览:476
现金宝宝app在哪里能下载 浏览:277
二战女教师慰安妇电影 浏览:270
传说对决录像在哪个文件夹 浏览:136
不用充钱就能看电视剧的网站 浏览:562
卧式空气压缩机 浏览:137
合川排课管理系统源码 浏览:439
女主被用铁链囚禁的小说 浏览:196
两个小时的爱情电影 浏览:864
php电商下单并发处理 浏览:242
送牛奶女电影名 浏览:468
港片有功物名的别片有哪些 浏览:246
s8安卓9如何开启多屏应用 浏览:39