所在的位置: swift >> swift发展 >> 你可以永远相信C

你可以永远相信C

北京白癜风哪个医院最好 https://yyk.39.net/bj/zhuanke/89ac7.html

首先,让我说一个围绕编码界的错误观念,即“C++比Python低”,或者您可以将“Python”替换为许多其他动态编程语言。

嗯.....不

首先让我们定义什么是低级,定义“低级”将帮助我们理解为什么C++在游戏中如此受欢迎。

低级只是机器代码的另一个计算术语。因此,存在的唯一低级语言是汇编。

低级语言通常与具有低级功能的高级语言混合在一起。

有什么不同?

区别在于,对于低级语言,它必须将语法明智的一对一映射或非常接近于机器代码。

看一下汇编代码和C代码,差异很大,因此C或C++都不是低级语言,它们都是高级语言

但是它们仍然具有低级功能,例如,它们可以操纵内存或从寄存器中读取和写入数据,并且通常可以像Assembly一样访问硬件。

但是,它们是通过使用库来实现的,而通过以语法实现这些功能的实现则要少得多。

事实是C和C++并不是低级别的,因为它们永远都不需要,这两种语言都可以内联汇编代码并可以链接从Assembly源代码文件生成的目标文件,从而为您提供了两种与Assembly混合的方式。

然而,由于硬件变得越来越复杂的原因,汇编的使用越来越少,而汇编(低级语言的另一个特性)的使用也越来越少,因此这些功能已转换为C/C++库。

将1对1映射到机器代码对于性能而言是非常重要的。它可以帮助您减少机器代码,并允许使用某些硬件加速功能。两者都对性能至关重要。

C/C++在生成尽可能少的机器代码方面表现出色,而在不这样做的情况下,因为较长的代码会利用某种形式的硬件加速。

因为C是真正优先考虑性能的第一语言,所以它已成为OS开发的语言。C++是C语言传统的延续,重点是OOP。当您必须处理复杂数据以及与数据的复杂代码交互时,OOP是理想的选择。

像许多其他库一样,图形库也是由操作系统提供的,并且由于操作系统通常是用C或C++编写的,所以这些库是用C或C++或二者兼有的。

因此,自从黎明以来游戏就一直使用C++就不足为奇了。

但是,无论其他人在这里回答什么,C++都不是游戏开发中最受欢迎的语言。事实上,至少对于游戏开发而言,C++是一种垂死的语言。

这可能会令人惊讶,因为在游戏开发中一再提到C++。

如今,绝大多数游戏都是使用游戏引擎编写的。

发生这种情况的原因是,正如我们早先所说的那样,硬件已经变得如此复杂,不仅很难在Assembly中编写代码,甚至在C++中也是如此。

有两个主要的游戏引擎Unity和Unreal。到目前为止,Unity最受欢迎,因为它首先出现在市场上,因为从第一天开始,它就支持移动开发,这是一个发展迅速的领域,而且它的重量很轻。

因此,大多数游戏不是用C++编写的,而是用C#编写的。

第二个候选对象是Unreal,它确实允许使用C++编写游戏,但这是吗?

虚幻C++是一个很奇怪的C++,尽管它是C++,但它确实具有C++框架中通常不具备的2个功能:GC和Reflection。很明显,Epic试图使它更接近Unity的C#。但是,即使虚幻游戏仍然使用C++,它也向前迈了一步。

虚幻技术引入了一种新的语言,即一种称为“蓝图”的可视编码语言,这种语言在艺术家和其他非编码人员中非常流行,但自从成为Epic的真正方便且非常积极地支持后,甚至对于游戏编码人员来说,这也是一种规范。

但是,也许您会说,好吧,C++未用于Unity游戏,虚幻并不是我们喜欢讨厌的C++,加上几乎一半的《蓝图》代码,但是不使用游戏引擎的游戏呢?

有些游戏没有使用游戏引擎,也没有实现自己的游戏引擎,例如,虚幻游戏一直是虚幻游戏的引擎,虚幻游戏是Epic的旗舰游戏。但是,这里仍然存在很大的问题。

即使在WindowsC++上仍然很流行,在Linux上也很流行,但在移动世界上却不是。iOS具有由Swift语言逐渐取代的ObjectiveC,而Android具有Java。

切记,目前的游戏市场大约是PC的30%,移动(智能手机)的30%,游戏机的30%,而桌面游戏则占10%以上,而网页游戏则占很小的比例。

在控制台中,我不太确定,我认为XBone也应该使用C#。

无论如何,这都是有争议的,因为90%的游戏使用Unity或Unreal。

即使您坚持要求将UnrealC++仍称为Unreal,但我不确定在社区中UnrealC++会持续多久,即使开发人员喜欢蓝图,但仍在推动C#的发展。这不是因为我们喜欢C#,而是使从Unity到Unity的代码移植更加容易。Epic一直在支持C#。

因此,到目前为止,非常流行的是C#,它只会变得越来越流行。

还有动态语言渗透这两个大庞然大物的趋势。虚幻引擎部分支持python和lua。

我还将自己移植到Pharo编程语言,这是一种有史以来最有影响力的语言,即Smalltalk,是一种未知的实用语言。Pharo是一种实时编码语言,这意味着它允许我在执行代码时更改代码,这对于RAD(快速应用程序开发)以及通常用于快速尝试新想法非常方便。

当然,这里的反论点可能是Unity和Unreal仍然是用C++编写的,如果您想深入了解它们,则必须具备C++的知识。

但是,了解C++是一回事,而要在其中编写代码是另一回事。

编码和游戏开发的一般经验法则

“一种语言的动态性越差,就越应该避免使用它”

当然,以上都是个人以及别人一起总结出来的观点。存在与你们可能不同的想法,还请包容。




转载请注明:http://www.aierlanlan.com/tzrz/1633.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了