学编程应该先学什么语言?

程序

这是每个游戏编程FAQ都有的问题。这个问题在游戏开发论坛上一周问几次。这是一个很好的问题,但是没有人能给出一个简单的答案。在一些应用中,总有一些计算机语言比其他语言优越。下面介绍几种用来写游戏的主要编程语言及其优缺点。希望这篇文章能帮你做决定。

1,C语言

如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是他们的孙辈。c语言是由Dennis Ritchie在20世纪70年代创造的,功能更强大,与作为COBOL和FORTRAN结构继承者的ALGOL有着更为连续的继承性。c语言被设计成一个比它的前辈更复杂、更简单的版本,适合写系统级的程序,比如操作系统。在此之前,操作系统是用汇编语言编写的,不具备可移植性。c语言是第一种使系统级代码移植成为可能的编程语言。

C语言支持结构化编程,也就是说C的程序写成一个个分离的函数调用(call)的集合,从上到下运行,而不是像单个集成的块代码一样用GOTO语句控制流程。所以C程序比集成的FORTRAN和COBOL“空心粉代码”简单多了。其实C还是有GOTO语句的,只是功能有限,只在结构化方案非常复杂的情况下才推荐使用。

由于其系统编程根源,将C与汇编语言结合起来是相当容易的。函数调用接口非常简单,C代码中可以嵌入汇编语言指令,不需要连接独立的汇编模块。

优点:有利于编写小而快的程序。很容易和汇编语言结合。它是高度标准化的,所以其他平台上的版本非常相似。

缺点:不容易支持面向对象技术。语法有时很难理解,会导致滥用。

可移植性:C语言和ANSI函数调用的核心是可移植的,但仅限于进程控制、内存管理和简单的文件处理。其他的都和平台有关。比如开发Windows和Mac的可移植程序,在用户界面中需要系统相关的函数调用。这通常意味着您必须编写两次用户界面代码,但幸运的是,有一些库可以减少工作量。

用c语言写的游戏:非常非常多。

材料:C语言的经典之作是C程序设计语言。经过多次修改,已经扩充到原来的三倍大小,但仍然是一本介绍C的优秀书籍,一个优秀的教程是韦特集团的C Primer Plus。

2、C++

C++语言是C语言的继承者,具有面向对象的特点。面向对象编程(OOP)是结构化编程的下一步。OO程序是由对象组成的,其中的对象是离散的数据集和函数。库存中有很多可用的对象,这就让编程变得像堆一些程序“建材”一样简单(至少理论上是这样)。例如,有许多GUI和数据库库被实现为对象的集合。

C++一直是争论的话题,尤其是在游戏开发论坛中。虚函数等几个C++函数给函数调用的决策增加了额外的一层,批评者很快指出,C++程序会变得比具有相同函数的C程序更大、更慢。C++的支持者认为,用C写相当于虚函数的代码也会增加成本。这将是一场持续的争论,不可能很快得出结论。

在我看来,C++的额外成本只是使用更好的语言的小成本。同样的争论发生在20世纪60年代,当时诸如COBOL和FORTRAN等高级编程语言开始取代汇编语言成为首选语言。批评家们正确地指出,用高级语言编写的程序天生就比手写汇编语言慢,而且肯定如此。高级语言的支持者认为这么小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。

优点:组织大型程序比C语言好很多。对面向对象机制的良好支持。常见的数据结构,如链表和由可伸缩数组组成的库,减轻了处理底层细节的负担。

缺点:非常庞大复杂。和C语言一样,存在语法滥用的问题。比c慢,大部分编译器没有正确实现整个语言。

移植性:比C语言好很多,但还是不太乐观。因为它和C语言有同样的缺点,所以大多数可移植的用户界面库都是用C++对象实现的。

用C++写的游戏:很多很多。大多数商业游戏都是用C或C++编写的。

资料:最新版的C++编程语言很不错。作为教程,有两个阵营,一个假设你懂C,一个假设你不懂。到目前为止,最好的C++课程是《C++的非洲是谁》。如果你已经熟悉C语言,试着自学C++。

3.我应该学C++还是应该从C开始学?

我不喜欢这种说法,但这是排在“我该用哪种语言”之后最常被问到的问题。可惜没有标准答案。你可以自学C并用它来写程序,这样可以节省很多时间,但是使用这种方法有两个缺点:

你会错过面向对象的知识,因为它可能会让数据建模在你的游戏中更加高效。

许多最大的商业游戏,包括第一人称射击游戏,都不使用C++。然而,即使这些程序的作者使用旧的C格式,他们通常坚持使用面向对象的编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。面向对象是模拟的完美方法。不学OO就要努力了。

4.汇编语言

显然,汇编是第一种计算机语言。汇编语言实际上是计算机处理器实际运行的指令的命令形式表示。这意味着您将处理处理器的底层,如寄存器和堆栈。如果你在寻找一种类似英语的语言,并有相关的自我描述,这不是你想要的。

确切地说,你可以用其他语言做任何你能做的事情,但这并没有那么简单——当然,这就像说你可以开车去某个地方,或者步行去那里,但这只是很难。那是真的,但是新技术使事情更容易使用。

一般来说,游戏中不会单独使用汇编语言。游戏用汇编主要是用它那些能提高性能的零碎。比如蹂躏者号整体是用C写的,有几个绘图程序用汇编。这些程序每秒钟被调用数千次,因此尽可能简洁将有助于提高游戏的性能。从C中调用汇编写的函数相当简单,所以同时使用两种语言不是问题。

特别说明:语言的名字叫“汇编”。把汇编语言翻译成真实机器码的工具叫做“汇编程序”。将这种语言称为“汇编程序”是相当常见的,所以请从这种语言的正确名称开始。

优点:最小最快的语言。汇编程序编写程序的速度比任何其他语言都快。你将是第一个使用处理器最新功能的人,因为你可以直接使用它们。

缺点:难学,语法晦涩,持久效率,导致额外代码很多——不适合心脏弱的人。

便携性:接近于零。因为这种语言是为单处理器设计的,根本没有可移植性。如果使用专用处理器的扩展功能,你的代码甚至无法移植到其他同类型处理器上(比如AMD的3DNow指令就无法移植到其他奔腾系列处理器上)。

用汇编编写的游戏:我不知道有哪一款商业游戏是完全用汇编开发的。但是,有些游戏使用汇编来完成大多数时间关键的部分。

资料:如果是找汇编语言文档,应该主要找芯片文档。互联网上有一些关于他们的处理器的信息,如英特尔、AMD和摩托罗拉。对于书籍,汇编语言:分步值得学习。

5.帕斯卡语言

Pascal是Nicolas Wirth在20世纪70年代初设计的,因为他对FORTRAN和COBOL不强制学生训练结构化编程感到失望,“空心粉代码”成为常态,当时的语言并不反对。Pascal被设计用来执行结构化编程。Pascal最初是严格为教学而设计的,最后,大量支持者把它推向了商业编程。当Borland在IBM PC上发布Turbo Pascal时,Pascal曾经辉煌一时。集成编辑器、快如闪电的编译器和低廉的价格让它无法抗拒。Pascal已经编写了为MS-DOS编写小程序的首选语言。

然而,在很短的时间内,C编译器变得更快,并拥有出色的内置编辑器和调试器。Pascal在1990年Windows开始流行的时候就走到了尽头。Borland放弃了Pascal,将注意力转向为Windows编写程序的C++。涡轮帕斯卡很快就被遗忘了。

最后,在1996,Borland发布了它的“Visual Basic黑仔”——Delphi。这是一个快速的Pascal编译器,具有华丽的用户界面。由于坚持不懈的努力,很快赢得了一大群粉丝。

基本上Pascal比C简单,虽然语法差不多,但是缺少C拥有的很多简洁的运算符。这是好事,也是坏事。虽然很难写出难以理解的“智能”代码,但这也使得一些低级操作,如位操作变得困难。

优点:简单易学,平台相关操作(Dephi)很不错。

缺点:《世界趋势》的面向对象Pascal后继者(Modula,Oberon)还没有成功。编译器开发人员不认可语言标准。专利权。

便携性:很差。语言的功能随着平台的变化而变化,没有可移植的工具包来处理平台相关的功能。

用Pascal写的游戏:几个。DirectX的Delphi组件让游戏的地方更大。

信息:要查找与Delphi相关的信息,请访问:Inprise Delphi页面。

6、Visual Basic

哈,基础。回到20世纪80年代的石器时代,它是初学者的第一语言。最初的基础形式,虽然简单易学,但是组织得可怕,它毫不犹豫地使用了后藤的“空心粉代码”。在回忆BASIC的行号和GOSUB命令时,很少有人能止住眼角的泪水。

快进到90年代初,虽然不是苹果所希望的巨头,但HyperCard仍然是一个有吸引力的小型编程环境,无法与Windows相比。Windows下的ToolBook等HyperCard克隆版又慢又笨又贵。为了与HyperCard竞争,微软获得了一个名为Thunderprogramming environment的小型授权许可权,并将其发布为Visual Basci 1.0,其用户界面在当时非常具有创新性。虽然语言也叫Basic(不是全大写),但是更结构化,行号也去掉了。事实上,这种语言更像是带有基本动词的Pascal,而不是TRS-80、Apple II和Atari建立的旧ROM BASIC。

经过六个版本,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是一种可移植的“小C++”,最初是Sun为嵌入程序而设计的。在网络上运行小程序的想法确实吸引了很多人的注意,于是语言迅速崛起。事实证明,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,只是它们在更高的级别上工作。大多数工具使用一些拖放流程图来模拟过程控制。许多编程语言都有内置的解释,但没有一种语言能像上面提到的单一语言那样健壮。

优点:快速原型制作——如果你的游戏符合工具制作的目的,你或许可以让你的游戏运行得比使用其他语言更快。在许多情况下,您可以创建一个简单的游戏,而无需任何代码。使用插件程序,如Shockware和IconAuthor player,可以在网页上发布许多由创意工具生成的程序。

缺点:专利,至于会增加什么功能,你就任由工具制造者摆布了。你必须考虑这些工具是否能满足你游戏的需求,因为有很多事情是那些创意工具做不到的。一些工具会产生非常臃肿的程序。

可移植性:因为创意工具是有专利的,所以你的可移植性与它们提供的功能密切相关。有些系统如Director可以在几个平台上创建和运行,有些工具可以在某个平台上创建和运行,有些只能在单个平台上创建和运行。

用创意工具写的游戏:《神秘岛》等类似的冒险游戏。所有的冲击波游戏都在网上。

材料:Director,hypercard,HyperCard,IconAuthor,Authorware。

9.结论

对于“我应该使用哪种语言”这个问题,你可能想得到一个更标准的结论。不幸的是,没有适用于所有应用的最佳解决方案。c适合快速小程序,不支持面向对象编程。C++完全支持面向对象,但是很复杂。Visual Basic和Delphi易学,但不可移植,有专利权。Java有很多简洁的函数,但是很慢。创作工具可以尽可能快地生成您的程序,但它只适用于某些类型的程序。最好的办法是决定你要写什么样的游戏,选择最能支持你游戏的语言。“试用30天”的做法成为行业标准,这是好事。