为什么游戏引擎大多选择使用 C++ 而不是 C 开发?

就游戏引擎来说,使用 C++ 开发的和使用 C 开发的,大致可以说是平分秋色,这大致有三方面的原因:

1. 历史原因

C 语言诞生比 C++ 早,C 语言诞生原因是因为 Unix 操作系统,而 Unix 操作系统的诞生原因则是由于“玩游戏需求”,以下来自 wiki 百科的 C 语言诞生历史:

1964 年,由美国通用电气公司和麻省理工学院发起了一个合资项目,该项目旨在开发一套能运行在 GE-645 等大型主机之上的多用户、多任务的分时操作系统,简称 MULTICS。 1965 年,贝尔实验室派出开发人员 KenThompson 等也加入了该项目,虽然项目期间发布了一些版本的 MULTICS 产品,但由于运行性能较差,1969 年该项目以失败告终。 由于 KenThompson 酷爱游戏及游戏编程,他在项目 MULTICS 期间编写了一款名叫“星际旅行”(Startravel)的游戏,并运行在该 MULTICS 系统上,但运行速度非常慢,且耗费昂贵。 1969 年 MULTICS 项目宣告失败后,KenThompson 没有放弃其游戏的梦想,他在贝尔实验室的库房中,找到一台闲置的 PDP-7 裸机,但由于缺少操作系统,无法在该 PDP-7 上运行其游戏。在 DennisRitchie 的帮助下,他使用汇编语言为该 PDP-7 编写了一个操作系统雏形,并把其游戏成功运行在了该操作系统之上。该操作系统体现出了很多优势,受 MULTICS 项目开发经验的启发, DennisRitchie 和 KenThompson 在该游戏操作系统雏形的基础上,进一步完善和开发新功能,最终于 1970 年开发出了一款新的多用户、多任务操作系统,称为 UNIX 操作系统。 也就是说,1969—1970 年,美国贝尔实验室的 KenThompson 和 DennisRitchie 等使用汇编语言编写了第一个版本的 UNIX 操作系统。 由于 UNIX 操作系统良好的性能,在其发布初期,就得到迅速的推广和应用。1973 年,KenThompson 和 DennisRitchie 在做系统内核移植开发时,感觉使用汇编语言很难实现。后来决定使用一种称为 BCPL(BasicCombinedProgrammingLanguage) 的语言进行开发,在开发过程中,他们在 BCPL 的基础上做了进一步的改进,推出了 B 语言(取 BCPL 第一个字母)。 后来发现使用 B 语言开发的 UNIX 内核,还是无法达到他们的预期要求,于是在 B 语言的基础上,做了进一步的改进,设计出了具有丰富的数据类型,并支持大量运算符的编程语言。改进后的语言较B语言有质的飞跃,取名为 C 语言,并使用 C 语言成功重新编写了 UNIX内核。 至此,使用 C 语言编写内核的 UNIX 版本已相当稳定,且具有良好的可移植性,为 UNIX 的进一步推广和普及奠定了坚实的基础,也展现了 C 语言与 UNIX 的完美结合及 C 语言在编写系统软件时得天独厚的优势。 由此可见,C 语言的起源与 UNIX 的改进是密不可分的,也体现了 C 语言在编写系统软件时的优势。

通过上文我们可以知道: C 语言诞生于 1969 年至 1973 年间,而 C++ 诞生于 20 世纪 80 年代。

比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间发明并实现了C++。起初,这种语言被称作“C with Classes”(“包含‘类’的 C 语言”),作为 C 语言的增强版出现。随后,C++不断增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(runtime type information)、名字空间(namespace)等概念逐渐纳入标准。1998年,国际标准组织(ISO)颁布了C++程序设计语言的第一个国际标准ISO/IEC 14882:1998,目前最新标准为 ISO/IEC 14882:2020。根据《C++编程思想》(Thinking in C++)一书,C++ 与 C 的代码执行效率往往相差在±5%之间。

那在有 C 语言而没有 C&#

  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值