我该使用什么语言_第1页
我该使用什么语言_第2页
我该使用什么语言_第3页
我该使用什么语言_第4页
我该使用什么语言_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我该使用什么语言 John Hattan 这是每个游戏编程 FAQ 里都有的问题。这个问题每星期都会在游戏开发论坛上被问上 好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一 些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。 希望这篇文章能帮助你做出决定。 1、 C 语言 如果说 FORTRAN 和 COBOL 是第一代高级编译语言,那么 C 语言就是它们的孙子辈。 C 语言是 Dennis Ritchie 在七十年代创建的,它功能更强大且与 ALGOL 保持更连续的继承性, 而 ALGOL 则是 COBOL 和 FORTRAN 的结构化继承者。C 语言被设计成一个比它的前辈更精 巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使 用汇编语言编写的,而且不可移植。C 语言是第一个使得系统级代码移植成为可能的编程 语言。C 语言支持结构化编程,也就是说 C 的程序被编写成一些分离的函数呼叫(调用) 的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用 GOTO 语句控制 流程。因此,C 程序比起集成性的 FORTRAN 及 COBOL 的空心粉式代码要简单得多。事实上, C 仍然具有 GOTO 语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。 正由于它的系统编程根源,将 C 和汇编语言进行结合是相当容易的。函数调用接口非常简 单,而且汇编语言指令还能内嵌到 C 代码中,所以,不需要连接独立的汇编模块。 优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此 其他平台上的各版本非常相似。 缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。 移植性:C 语言的核心以及 ANSI 函数调用都具有移植性,但仅限于流程控制、内存管 理和简单的文件处理。其他的东西都跟平台有关。比如说,Windows 和 Mac 开发可移植的 程序,为用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用 户界面代码,不过还好有一些库可以减轻工作量。 用 C 语言编写的游戏:非常非常多。 资料:C 语言的经典著作是The C Programming Language ,它经过多次修改,已经扩 展到最初的三倍大,但它仍然是介绍 C 的优秀书本。一本极好的教程是The Waite Groups C Primer Plus 。 2、 C+ C+语言是具有面向对象特性的 C 语言的继承者。面向对象编程,或称 OOP 是结构化 编程的下一步。OO 程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的 对象库存在,这使得编程简单得只需要将一些程序建筑材料堆在一起(至少理论上是 这样) 。比如说,有很多的 GUI 和数据库的库实现为对象的集合。 C+总是辩论的主题,尤 其是在游戏开发论坛里。有几项 C+的功能,比如虚拟函数,为函数呼叫的决策制定增加 了一个额外层次, 批评家很快指出 C+程序将变得比相同功能的 C 程序来得大和慢。C+ 的拥护者则认为,用 C 写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行, 而且不可能很快得出结论的争论。我认为,C+的额外开支只是使用更好的语言的小付出。 同样的争论发生在六十年代高级程序语言如 COBOL 和 FORTRAN 开始取代汇编成为语言所 选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢, 而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为 COBOL 和 FORTRAN 程序更容易编写和维护。 优点:组织大型程序时比 C 语言好得多。很好的支持面向对象机制。通用数据结构, 如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。 缺点:非常大而复杂。与 C 语言一样存在语法滥用问题。比 C 慢。大多数编译器没有 把整个语言正确的实现。 移植性:比 C 语言好多了,但依然不是很乐观。因为它具有与 C 语言相同的缺点,大 多数可移植性用户界面库都使用 C+对象实现。 使用 C+编写的游戏:非常非常多。大多数的商业游戏是使用 C 或 C+编写的。 资料:最新版的The C+ Programming Language非常好。作为教程,有两个阵营, 一个假定你知道 C,另外一个假定你不知道。到目前为止,最好的 C+教程是Whos Afraid of C+ ,如果你已经熟知 C,那么试一下Teach Yourself C+ 。 3、我该学习 C+或是该从 C 开始 我不喜欢这种说法,但它是继我该使用哪门语言之后最经常被问及的问题。很不幸, 不存在标准答案。你可以自学 C 并使用它来写程序,从而节省一大堆的时间,不过使用这 种方法有两个弊端:你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建 模更有效率的东西。 最大的商业游戏,包括第一人称射击游戏很多并没有使用 C+。但是,这些程序的作 者即使使用老的 C 的格式,他们通常坚持使用面向对象编程技术。如果你只想学 C,至少 要自学 OO(面向对象)编程技术。 OO 是仿真(游戏)的完美方法,如果你不学习 OO, 你将不得不辛苦的工作。 4、汇编语言 显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令 的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要 找的是类英语且有相关的自我说明的语言,这不是你想要的。确切的说,任何你能在其他 语言里做到的事情,汇编都能做,只是不那么简单这是当然,就像说你既可以开车到 某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。 总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能 的零零碎碎的部分。比如说,毁灭战士整体使用 C 来编写,有几段绘图程序使用汇编。这 些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从 C 里调 用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。 特别注意:语言的名字叫汇编。把汇编语言翻译成真实的机器码的工具叫汇编程序。 把这门语言叫做汇编程序。这种用词不当相当普遍,因此,请从这门语言的正确称呼作为 起点出发。 优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。 你将是利用处理器最新功能的第一人,因为你能直接使用它们。 缺点:难学、语法晦涩、坚持效率,造成大量额外代码不适于心脏虚弱者。 移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。 如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上 (比如,AMD 的 3DNow 指令是无法移植到其它奔腾系列的处理器上的) 。 使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏 使用汇编完成多数对时间要求苛刻的部分。 资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如 Intel、AMD、Motorola 等有一些关于它们的处理器的资料。对于书籍而言, Assembly Language: Step-By-Step是很值得学习的。 5、 Pascal 语言 Pascal 语言是由 Nicolas Wirth 在七十年代早期设计的,因为他对于 FORTRAN 和 COBOL 没有强制训练学生的结构化编程感到很失望空心粉式代码变成了规范,而当时的语言 又不反对它。Pascal 被设计来强行使用结构化编程。最初的 Pascal 被严格设计成教学之用, 最终,大量的拥护者促使它闯入了商业编程中。Borland 发布 IBM PC 上的 Turbo Pascal 时, 当 Pascal 辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗, Pascal 编程了为 MS-DOS 编写小程序的首选语言。然而时日不久,C 编译器变得更快,并具 有优秀的内置编辑器和调试器。Pascal 在 1990 年 Windows 开始流行时走到了尽头, Borland 放弃了 Pascal 而把目光转向了为 Windows 编写程序的 C+。Turbo Pascal 很快被人 遗忘。最后,在 1996 年,Borland 发布了它的 Visual Basic 杀手Delphi。它是一种快速 的带华丽用户界面的 Pascal 编译器。由于不懈努力,它很快赢得了一大群爱好者。基本上, Pascal 比 C 简单。虽然语法类似,它缺乏很多 C 有的简洁操作符。这既是好事又是坏事。 虽然很难写出难以理解的聪明代码,它同时也使得一些低级操作,如位操作变得困难 起来。 优点:易学、平台相关的运行(Dephi)非常好。 缺点:世界潮流面向对象的 Pascal 继承者(Modula、Oberon)尚未成功。语言标 准不被编译器开发者认同。专利权。 移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相 关的功能。 使用 Pascal 编写的游戏:几个。DirectX 的 Delphi 组件使得游戏场所变大了。 资料:查找跟 Delphi 有关的资料,请访问:Inprise Delphi page。 6、 Visual Basic 哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的 BASIC 形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了 GOTO 充斥的空心粉式 代码。当回忆起 BASIC 的行号和 GOSUB 命令,没有几个人能止住眼角的泪水。快速前进到 九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard 仍然是一个在 Windows 下无 法比拟的吸引人的小型编程环境。Windows 下的 HyperCard 克隆品如 ToolBook,又慢又笨 又昂贵。为了与 HyperCard 一决高下,微软取得了一个小巧的名为 Thunder 编程环境的许 可权,并把它作为 Visual Basci 1.0 发布,其用户界面在当时非常具有新意。这门语言虽然 还叫做 Basic(不再是全部大写) ,但更加结构化了,行号也被去除。实际上,这门语言与 那些内置于 TRS-80、Apple 及 Atari 里的旧的 ROM BASIC 相比,更像是带 Basic 风格动词的 Pascal。经过六个版本,Visual Basic 变得非常漂亮。用户界面发生了许多变化,但依然保留 着把代码关联到用户界面的主旨。这使得它在与即时编译结合时变成了一个快速原型的 优异环境。 优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。 有第三方的 DirectX 插件,DirectX 7 已准备提供对 Visual Basic 的支持。 缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话 框型的程序很容易完成,要编写好的图形程序却比较难。调用 Windows 的 API 程序非常笨 拙,因为 VB 的数据结构没能很好的映射到 C 中。有 OO 功能,但却不是完全的面向对象。 专利权。 移植性:非常差。因为 Visual Basic 是微软的产品,你自然就被局限在他们实现它的平 台上。也就是说,你能得到的选择是:Windows ,Windows 或 Widnows。当然,有一些工 具能将 VB 程序转变成 Java。 使用 Visual Basic 编写的游戏:一些。有很多使用 VB 编写的共享游戏,还有一些是商 业性的。 资料:微软的 VB 页面有一些信息。 7、 Java Java 是由 Sun 最初设计用于嵌入程序的可移植性小 C+。在网页上运行小程序的想法 着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java 不仅仅适于在网页 上内嵌动画它是一门极好的完全的软件编程的小语言。虚拟机机制、垃圾回收以及没 有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。虽然不是 C+的正式续篇, Java 从 C+中借用了大量的语法。它丢弃了很多 C+的复杂功能,从而形成一门紧凑而易学 的语言。不像 C+,Java 强制面向对象编程,要在 Java 里写非面向对象的程序就像要在 Pascal 里写空心粉式代码一样困难。 优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且 极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。 缺点:使用一个虚拟机来运行可移植的字节码而非本地机器码,程序将比真正编译器 慢。有很多技术(例如即时编译器)很大的提高了 Java 的速度,不过速度永远比不过机器 码方案。早期的功能,如 AWT 没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不 得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun 为这门语言增加新的受 祝福功能的速度实在太慢。 移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性, 但是,很多 UI 及新功能在某些平台上不稳定。 使用 Java 编写的游戏:网页上有大量小的 Applet,但仅有一些是商业性的。有几个商 业游戏使用 Java 作为内部脚本语言。 资料:Sun 的官方 Java 页面有一些好的信息。IBM 也有一个非常好的 Java 页面。 JavaLobby 是一个关于 Java 新闻的最好去处。 8、创作工具 上面所提及的编程语言涵盖了大多数的商业游戏。 但是也有一个例外,这个大游戏由 于它的缺席而变得突出神秘岛。没错,卖得最好的商业游戏不是使用以上任何一门语 言编的,虽然有人说神秘岛99%是使用 3D 建模工具制作的,其根本的编程逻辑是在 HyperCard 里完成的。多数创作工具有点像 Visual Basic,只是它们工作在更高的层次上。大 多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些 语言都无法像上面所说的单独的语言那样健壮。 优点: 快速原型如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论