美文网首页
C++ 被炮轰是糟糕的语言 !

C++ 被炮轰是糟糕的语言 !

作者: 哪有岁月静好 | 来源:发表于2020-07-06 16:50 被阅读0次

这位知名游戏《The Witness》的开发者还介绍了他新开发的编程语言,有望将工作效率提升50%至80%。

image

2014 年的某个时刻,Jonathan Blow仍在开发《The Witness》这款游戏时,突然觉得敲代码是一种悲惨的经历。

为什么是那样呢?用 Blow 的话来说,那是由于C++是一种“非常非常糟糕的语言。”

上周他在巴塞罗那的Gamelab大会上演讲时阐述了他认为这种常用编程语言的诸多问题,以及他希望通过自行研发的替代语言Jai来实现的目标。

Blow认为,C++的主要缺陷在于它是一个非常复杂、多层次的生态系统,在解决不同问题的过程中变得越来越错综复杂;层数越多,堆栈越高,它变得越不稳定,因而越难理解。

Blow对台下观众说:“人们认为,编程语言应该就是一个复杂的生态系统。我可不想只为了在上面放置3D图形而学习整整一年的生态系统。”

Blow希望借助Jai实现三个目标:提高程序员的生活质量,因为“我们不应该像许多程序员那样悲惨”;简化系统;以及让程序员可以使用少量的代码构建强大的功能,从而增强表达能力。

目前,Jai声称可将工作效率提升15%左右;不过Blow认为,只要给它时间,它有望将工作效率提升50%至80%。

GamesIndustry.biz在Blow演讲后采访了他,以进一步了解Jai:如果他对该语言的预测准确,Jai有望在独立游戏和AAA游戏层面重塑游戏开发界。

据Blow声称,“C++乱成一团糟。”C++诞生于20世纪70 年代,以C语言为原型。经历了随后十年的发展,C++发生了巨大变化,增添了一层层的“历史残留和古怪技术”,因需要与历史决定保持兼容而阻碍了其发展。

Blow说:“因此C++成了这样一门语言,开发者说‘我们会成为增添了一堆东西的C’,这个想法没问题。但是他们一开始做出了许多很糟糕的决定,随后他们不得不修复许多那些决定,这就有点混乱了。”

Blow 说:“如果你刚入手、试图学习C++,你学习的许多东西就是这些垃圾……其实你根本没必要应对这种情况。C++在某些方面来说是一种强大的语言,因为它是我们制作游戏的关键语言。但是C++大大增加了开发难度,其实没必要这么费劲。”

Blow解释,项目变得越庞大,更改所需的时间越长,而编程的本质意味着大量的时间专门用于“实际上是繁琐的工作”。

他说:“我就开始想‘有人应该对此做点什么,因为这很荒唐’。我还认识到,没有人会有所作为。这方面存在一个很严重的现状偏见(status quo bias)。我们以某种方式开发游戏;有人开发了所有这些另外的编程语言,可是我们没有使用它们。”

“许多公司有很庞大的游戏引擎,更换起来需要非常高昂的成本。所以像《刺客信条》这样的游戏在几年前就有数千行源代码……现在恐怕更庞大了。”

Blow认为,这种“现状偏见”在业内造成了惰性;如果各大开发商已经有了可以完成工作的一种语言,根本不会重写所有系统。

“所以他们明天就会改弦易辙,就会完全重写所有这些系统吗?不,他们不会,因为这几乎不可能。所以,许多人有这种消极的态度。我其实也有过这种态度。这股现实的声音在我的耳畔响起,告诉我我无力改变这个。但是随后由于某种原因,我决定质疑这个问题:果真是这样吗?”

“我越是质疑C++,就越认为‘实际上这是完全可以改变的。我想,我觉得我们在这里有具体的事情可做。’一旦我觉得有办法改变它,突然对自己的日常工作感到很开心,因为突然有了一条出路。”

到目前为止,Blow 及其团队在深入开发《The Witness》,于是Jai仍然是一个附带项目。然而几年后,它是Blow及其在Thekla 公司的团队的主要焦点。他目前未宣布的游戏项目是使用Jai开发的,旨在“拿现实来测试想法。”

从许多方面来看,Blow 在开发新的编程语言方面具有独特的优势。他独立于大型游戏工作室和出版商,搞过周期极长的项目(《The Witness》大约总共花了七年时间),还是一位经验丰富的程序员。

Blow表示,他身为设计师的经历对于开发一种能够用于构建游戏的语言也至关重要,希望避免C++的许多陷阱。即使如此,Blow意识到Jai面临同样的危机:成为“一堆垃圾”。

他说:“是的,这很危险。你可能花所有这些时间来努力设计你认为更好的语言,到头来得到的却是一样差甚至更差劲的语言。这种情况可能会发生。但这时我作为设计师的经验发挥了作用。我设计过庞大而复杂的游戏,你可以同样设计一种编程语言,着眼于美学理念。”

“首先要努力确保简单,但其次当你确实增加复杂性时(因为为了实现功能你总是需要增加复杂性),要考虑这种复杂性带来了多大的好处?玩家理解起来多容易是我们在设计游戏时始终考虑的方面。如果有人走进这个房间......他们会明白发生了什么吗?我们如何帮助他们明白?”

“同样那些技能可以转化为编程语言设计。大多数时候,编程语言在设计时,它们不是出于设计师的观念来设计的,而是出于试图解决技术问题的程序员的观念来设计的。所以希望在这方面引入一些设计经验可帮助我们获得更好的结果。而这似乎切实可行。我对我们现阶段的工作感到满意,为此我们付出了大量的精力。”

最终,Blow希望Jai的功能很强大,足以开发最庞大的AAA 游戏,但眼下他正忙于其新游戏的“中间步骤”。

“这是一款从各方面来看名副其实的游戏,我们就选择了一种更容易搞的设计。一旦这一步完成,该游戏切实可行,我们交付,随后我们可以扩展该图形引擎。”

虽然Jai眼下只是初露端倪,但Blow希望在今年年底之前发布封闭测试版。至于Jai会不会实现其潜力或他的个人希望,也许离尘埃落定还有很长一段路。

其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。



相关文章

  • C++ 被炮轰是糟糕的语言 !

    这位知名游戏《The Witness》的开发者还介绍了他新开发的编程语言,有望将工作效率提升50%至80%。 20...

  • C++的门道(一些C++的关键坑)

    C++的门门道道 【导语】 C++是一门被广泛使用的系统级编程语言,更是高性能后端标准开发语言;C++虽功能强大,...

  • C++远征之起航篇

    C++和C语言的联系与区别: C++是C语言发展而来,C语言是C++的子集 C++更高效3.相对于C语言,C++添...

  • 慕课网-c++教程起航篇-学习笔记

    c++教程起航篇 C语言是C++的子集。 c语言是面向过程的语言,而C++是面向过程的语言又是面向对象的语言。 C...

  • C++的门门道道

    【导语】 C++是一门被广泛使用的系统级编程语言,更是高性能后端标准开发语言;C++虽功能强大,灵活巧妙,但却...

  • 编程语言的简单探究丨C语言和C++是什么关系?它们之间又有什么差

    我们都知道,大学必学的C语言可以说是编程语言的基础,而C++却是被大多数人称为最难学的编程语言之一,C++是C语言...

  • 如何写好程序?

    最近在做一个项目,需要把 Matlab语言的程序转化为 C++语言,由于原作者的 Matlab程序写得很糟糕,而且...

  • 最新!2020 年 9 月编程语言排行榜,Java依旧强势

    TIOBE 2020 年 9 月份的编程语言排行榜已经公布,官方的标题是:C++ 表现突出。 早期时候,C++ 被...

  • C++简答题

    一、简答题 1、C语言与C++语言的区别? 答: C语言是面向过程语言,C++是面向对象语言(OOP) C语言...

  • C++? VS2017?

    一、C++ 1.什么是C++语言? C++是对C语言的优化,采用面向对象的编程思想。是一种静态的编译型语言,即...

网友评论

      本文标题:C++ 被炮轰是糟糕的语言 !

      本文链接:https://www.haomeiwen.com/subject/gfhgqktx.html