广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3405 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[精华] 我该使用何种语言?
原着:John Hattan
翻译:Sunlxy
原文出处:What Language Do I Use
译文转自:游戏开发资源网

这是一篇由简体转成繁体的文章,有些用词 M$ Word 没有转成繁体用词,阅读时请留意。

这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程式中,总有一些电脑语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。

1、C 语言

如果说FORTRAN和COBOL是第一代高级编译语言,那C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被icehawk在2006-12-10 11:16重新编辑 ]


献花 x0 回到顶端 [楼 主] From:上海 | Posted:2006-12-10 10:52 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

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++教程是《Who''s Afraid of C++》,如果你已经熟知C,那试一下《Teach Yourself C++》。

3、我该学习C++或是该从C开始

我不喜欢这种说法,但它是继〝我该使用哪门语言〞之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程式,从而节省一大堆的时间,不过使用这种方法有两个弊端:

‧你将错过那些在游戏中可能是更有效的资料建模方式。
‧不用马上开始学习 OO 编程,但可能要强制你改掉最终必须忘掉的编程坏习惯,这一点请相信我。

最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程式的作者即使使用老的C的格式,他们通常坚持使用面向物件编程技术。如果你只想学C,至少要自学OO(面向物件)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不〝辛苦〞的工作。


[ 此文章被icehawk在2006-12-10 11:15重新编辑 ]


献花 x0 回到顶端 [1 楼] From:上海 | Posted:2006-12-10 10:53 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

4、组合语言

显然,汇编是第一个电脑语言。组合语言实际上是你电脑处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如暂存器和堆叠。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。

确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那简单 - 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。

总的来说,组合语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程式使用汇编。这些程式每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。

特别注意:语言的名字叫〝汇编〞。把组合语言翻译成真实的机器码的工具叫〝组合语言程式〞。把这门语言叫做〝组合语言程式〞这种用词不当相当普遍,因此,请从这门语言的正确称呼作起点出发。


优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程式。你将是利用处理器最新功能的第一人,因你能直接使用它们。

缺点:难学、语法晦涩、坚持效率,造成大量额外代码 - 不适于心脏虚弱者。

移植性:接近零。因这门语言是一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其他奔腾系列的处理器上的)。

使用汇编编写的游戏:我不知道有什商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
资料:如果你正在找一门组合语言的文档,你主要要找晶片的文档。网路上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。


[ 此文章被icehawk在2006-12-10 11:13重新编辑 ]


献花 x0 回到顶端 [2 楼] From:上海 | Posted:2006-12-10 10:54 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

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。


[ 此文章被icehawk在2006-12-10 11:07重新编辑 ]


献花 x0 回到顶端 [3 楼] From:上海 | Posted:2006-12-10 10:54 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

6、Visual Basic

哈,BASIC。回到八十年代的石器时代,它是程式初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了GOTO充斥的〝空心粉式代码〞。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。

快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。了与HyperCard一决高下,微软取得了一个小巧的名Thunder编程环境的许可权,并把它作Visual Basci 1.0发布,其用户介面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple II及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页面有一些资讯。


[ 此文章被icehawk在2006-12-10 11:08重新编辑 ]


献花 x0 回到顶端 [4 楼] From:上海 | Posted:2006-12-10 10:55 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

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新闻的最好去处。


[ 此文章被icehawk在2006-12-10 11:10重新编辑 ]


献花 x0 回到顶端 [5 楼] From:上海 | Posted:2006-12-10 10:55 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

8、创作工具

上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。

"神秘岛"。

没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说〝神秘岛〞99%是使用 3D建模工具制作的,其根本的编程逻辑是在 HyperCard 里完成的。

多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来类比流程控制。很多内置解释的程式语言,但是这些语言都无法像上面所说的单独的语言那样健壮。

优点:快速原型 - 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程式,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程式。

缺点:专利权,至于将增加什功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因有很多事情是那些创作工具无法完成的。某些工具会生臃肿得可怕的程式。

移植性:因创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。

使用创作工具编写的游戏:〝神秘岛〞和其他一些同类型的探险游戏。所有的Shockwave游戏都在网路上。

资料:Director、HyperCard、SuperCard、IconAuthor、Authorware

9、结论
你可能希望得到一个关于〝我该使用哪种语言〞这个问题的更标准的结论。非常不幸,没有一个对所有应用程式都最佳的解决方案。C适于快而小的程式,但不支援面向物件的编程。C++完全支援面向物件,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度生你的程式,但是仅对某一些类型的程式起作用。最好的方法是决定你要写什样的游戏,并选择对你的游戏支援最好的语言。〝试用三十天〞的做法成工业标准是件好事情。

作者简介

John Hattan 是位于德克萨斯州的 Watauga 里最大的软体公司——Code Zone 的主要负责人。如果你对他的文章有什看法,请写信给他。


[ 此文章被icehawk在2006-12-10 11:12重新编辑 ]


献花 x0 回到顶端 [6 楼] From:上海 | Posted:2006-12-10 10:56 |
icehawk
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

转来滴...


原连结http://www.programmer-club.com/pc2020v5/forum/Show...ard_pc2020=exp&id=11929




>做什么事配什么语言是很重要的

这一篇的重点就是要让人知道你说的这句话,
做什么事用什么语言。



感触良多....~~


献花 x0 回到顶端 [7 楼] From:上海 | Posted:2006-12-10 10:59 |
oven425 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x237
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

把来龙去脉都交代了
但是还是要自己实际用过的比较有感觉


我的部落格
在 涅 贵 不 缁 , 暧 暧 内 含 光 。
柔 弱 生 之 徒 , 老 氏 诫 刚 强 。
行 行 鄙 夫 介 , 悠 悠 故 难 量 。
行 之 苟 有 恒 , 久 久 自 芬 芳 。
献花 x0 回到顶端 [8 楼] From:台湾中华HiNet | Posted:2006-12-14 11:29 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.092266 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言