Jonathan Blow 是著名独立解密游戏《Braid》和《The Witness》的作者,近日,他表示 C++ 真的是一种可怕的语言,可怕到他要停下手中的工作发明一种新语言来改善程序员们的生活质量。对于 C++,他认为在游戏开发过程中,过于复杂的层状生态系统增加了解决不同问题的复杂度。由此,他开发了一种名为 Jai 的语言来解决此问题,目前 Jai 还在开发之中,尚未公开。

在 2014 年的某个时刻,Jonathan Blow 正在开发《The Witness》游戏,彼时他突然感觉敲代码可能是一种悲惨的经历。

那是为什么呢?套用 Blow 的话来说,“这是因为 C ++ 是一种「非常糟糕且可怕的语言」。”

近日,他在 Gamelab Barcelona 演讲时阐述了他认为常用编程语言的问题,以及他希望通过自及研发的替代品——Jai,来实现预期的开发目标。

Blow 认为,C ++ 的主要缺陷在于它是一个非常复杂和分层的生态系统,在解决不同问题的过程中变得越来越复杂;层数越多,堆叠越高,那么也就变得越不稳定,理解起来就越难。

Jonathan Blow

“人们认为编程语言应该是一个复杂的生态系统,”Blow 如是说。 “我不想学习一年的生态系统之后,只在那里放置个 3D 图形。”

之所以开发 Jai,Blow 是希望以此实现三件事:

  • 提高程序员的生活质量,因为“我们不应该像我们中的许多人那样悲惨”;

  • 简化系统;

  • 通过允许程序员使用少量代码构建大量功能来增强表达能力。

目前,Jai 的生产率提高了约 15%,但 Blow 认为,随着时间的推移,它可能会提高到 50% - 80%。

倘若他对该语言的预测准确,那么重塑独立和 3A 级的游戏开发也就指日可待了。

《The Witness》游戏截图

C++ 的混乱

C++ 诞生于 20 世纪 70 年代,是以 C 语言为原型。经过了数十年的发展,C++ 发生了巨大的变化,层层叠叠的“历史残余和古怪”的定义阻碍了其发展,C++ 变得越来越混乱。

Blow 表示,“如果你已刚入手去学习 C++,或许你正在学习的很多东西比较碎片化。C ++ 在某种程度上是一种强大的语言,因为它是我们制作游戏的关键性语言。但是如今的它正在使我们的过程更加艰难。”

随着项目变得越来越大,修复更改所需的时间越来越长,由此编程的本质意味着大量的时间专注于“繁琐的工作”。

于是,Blow 开始思考,是否会有人对此做一些改变。但不久之后,他便否决了这一荒谬的想法,毕竟每个人都有很多不同的选择。作为游戏开发者,Blow 仅使用了 C++ 这一语言开发游戏,而其他的开发者可以选择其他的编程语言。

很多人或许会说,也可以更换语言开发。但是现实是,公司拥有非常庞大的游戏引擎,替换成本非常高。几年前,像《刺客信条》这番的游戏就有一千万行源代码,它现在或许更大了。

而就是以上这种“现状偏见”在行业内产生了惰性,开发者不会在他们已经拥有一套完整任务的系统后重写所有系统,无论这个过程多么繁琐。现在很多人都会有一种失败主义的态度。“我实际上也有,那个小小的现实主义声音在我耳边告诉我,我无法改变这一点。”Blow 表示。但由于某种原因,他决定质疑:真的没法改变了吗?

“我越是质疑它,我说的越多'实际上这是多变的。我想我看到了我们在这里做的具体事情'。一旦知道有办法改变它,我突然间对我的日常工作感到非常高兴,因为突然之间有一条出路。“

到目前为止,Blow 和他的团队正在深入开发《The Witness》游戏,所以 Jai 仍然是一个辅助项目,还在开发者。然而,未来几年,这是 Blow 和他在 Thekla 公司的团队的主要焦点。目前他有一个未公布的游戏项目,其表示,是使用 Jai 建立的,旨在“测试对现实的想法”。

Jai 是现实还是梦境?

在许多方面,Blow 在开发新的编程语言方面具有独特的优势。他独立于大型工作室和出版商,参与了非常长的项目(The Witness大约花了七年时间),并且是一位经验丰富的程序员。

Blow 称,作为设计师的经历对于开发一种能够用于构建游戏的语言也是至关重要的,希望 Jai 可以避免 C ++ 的许多陷阱。于此同时,Blow 也意识到 Jai 面临着成为“一堆废墟”的同样危险。

“你可以花费所有这些时间来设计你认为更好的东西并最终得到相同甚至更糟的东西。这可能会发生。但这就是我作为设计师的经验所带来的。

我设计的游戏是大而复杂,你可以设计一种相同的编程语言,着眼于美学。“首先要努力保持简单,但其次当你增加复杂性时(因为总会有更复杂的需求),就要考虑这种复杂性带来了多少好处?有多容易理解(对于玩家)是我们一直在游戏设计中考虑的问题。如果有人走进这个房间......他们会明白发生了什么吗?我们如何帮助他们理解?

“那些相同的技能可以转化为编程语言设计。我不认为这样说有太多争议,大多数时候,当编程语言被设计时,它们不是我们设计师所设计的。它们是由那些试图解决技术问题的程序员设。”

最终,Blow 希望 Jai 能够有力地为最大的 AAA 游戏进行编程,但现在他正在与他的新游戏进行“中间桥接”。

“这是一个真正的游戏,我们只是选择了一个更容易做的设计。一旦完成并且它可以运行,那么我们可以扩展图形引擎等等。”

虽然 Jai 目前还没有开源,但 Blow 希望在今年年底之前完成封闭测试。 它是否能够实现其潜力或达到个人希望,也许还有很长的路要走。

C++ 真的是一门“可怕的编程语言”?

不止 Jonathan Blow 这样说,早年间,Linux 之父 Linus Torvalds 也曾表明 C++ 是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它。那么倘若撇开企业的项目需求,C++ 本身而言真的是一门“可怕的编程语言”吗?对此,不少网友表示:

  • 我已经用了 C ++ 很多年了。我忽略了它很多的特性,因为我不需要使用全部。没有人说你必须使用它的每一点。在工作中,只需知道部分并完整地了解该工具如何才能完成工作,这就很好了。如今诋毁 C ++ 似乎成了一种趋势,但如果你不擅长做某件事,你就会对此表达不好的情绪。基于这一年,每一种编程语言都有优劣,都会被人吐槽。

  • 没有“真正可怕的语言”,只是“非常可怕的程序员”。除了 C ++ 之外,还有 PHP、Javascript、APL、Ada 和 BASIC。

  • C ++ 从一个非常清晰的语法开始,大大简化了一些重要的编程任务。 随着人们越来越熟悉这种语言,他们发现了新的编程模式,语言无法很好地处理,因此增加了新的语法或功能,导致膨胀。如今 C ++ 已经存在了一段时间,并且已经添加了许多新东西,它已成为一种成熟的语言。 在某些时候,总是有人会提出一种新的通用语言,它以一致的语法结合了 C ++ 的许多优点,对许多人来说很有用,而不仅仅是为了开发游戏或者 Web。但是为解决一些特定的功能,然后循环重复开发新的语言,那生态也会乱。

  • C ++ 很好,只要你在 C ++ 11 之前保持功能级别并且不使用 STL。

  • C ++ 太可怕了。我讨厌它的多态性。更糟糕的是,很多人认为多态性是一种理想的功能,有助于创建清晰、可读的代码。它鼓励创建对类进行操作的函数而不是对通用数据类型。

你怎么看?

参考:

  • https://www.gamesindustry.biz/articles/2018-07-02-jonathan-blow-c-is-a-weird-mess

  • https://developers.slashdot.org/story/18/07/07/0342201/is-c-a-really-terrible-language

征稿啦

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。

————— 推荐阅读 —————

继 Linux 之父之后,独立开发者 Jonathan Blow 再次炮轰 C++ 是可怕的语言相关推荐

  1. Linux 之父:“内核开发者别再临期熬夜提交补丁了,那是高中生干的事儿”

    整理 | 辛晓亮 出品 | CSDN(ID:CSDNnews) 日前,Linus Torvalds 发布了 Linux 6.1 的第一个候选(RC)版本,他也呼吁开发人员不要在临近发版的日期提交代码. ...

  2. Linux 之父 LinusTorvalds 喊话:Rust 即将出现在 Linux 内核中

    上个月,Linus Torvalds 本人在 Linux 基金会开源峰会上发言称,Rust 有可能很快就会出现在 Linux 的内核中,最快是下一个内核周期. Linus Torvalds 和 Dir ...

  3. 谷歌强推 Rust 进驻 Linux 内核,与主要开发者签订合同!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 上个月底谷歌的"三儿子" Fuchsia OS 正式推出,一时众人的目光皆为其吸引. 其实自 2016 年 Fuch ...

  4. Rust 要“进驻” Linux 内核了?Linux 之父:保持观望

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 主要由 C 语言编写内核的开源操作系统 Linux 一直广受开发者喜爱,然而由于 Linux 内核漏洞不断,其中多数情况下皆由内存安全引 ...

  5. Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...

  6. 好书推荐--Linux之父Linus的自传《Just for Fun》

    这本书非常有趣,它让你不由感到,在这个浮躁的社会,兴趣爱好是多么的重要!至少能让你收获快乐.巴菲特说过这样一段话:"没钱没人脉时,请逼自己做好这三件事.第一,找到自己的兴趣爱好:第二,主动要 ...

  7. 被Linux之父骂醒?英伟达破天荒开源GPU内核驱动,网友:活久见

    终于等到了这一天:英伟达开源了他们的 Linux GPU 内核驱动. 「英伟达是我们遇到的硬件厂商中最麻烦的一个.」这是 Linux 内核总设计师 Linus Torvalds 十年前说过的一句原话. ...

  8. Linux之父炮轰C++:糟糕程序员的垃圾语言

    原文地址为: Linux之父炮轰C++:糟糕程序员的垃圾语言 [图灵图书推荐]Linux程序设计(第3版)  众所期待的程序设计圣经 [写在前面] 此文贴出后,引起了大家的较多关注,是意料之中的事情. ...

  9. 极客日报第 78 期:Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产

    一分钟速览新闻点! 消息称中芯国际获得美国许可:14nm.28nm 工艺恢复供应 字节跳动AVG编码技术新突破:让视频缩小 13% 网易云音乐上线开房对谈互动新功能"侃侃" 华为 ...

最新文章

  1. 用Python从零开始创建区块链
  2. POJ 3376 Finding Palindromes(扩展kmp+trie)
  3. java,阳历转阴历
  4. php拉查询封装,php实现搜索类封装示例
  5. Nodejs Guides(四)
  6. python访问mysql_python连接mysql
  7. Redis 支持的数据类型
  8. 2014年5月生日会
  9. virsh链接虚拟机_KVM 通过virsh console连入虚拟机
  10. 【重点】LeetCode 146. LRU Cache
  11. SqlAlchemy ORM
  12. node.js 快速入门
  13. ELF文件详解—初步认识
  14. 实现房源15天后自动下架记录
  15. InfoGAN原理PyTorch实现Debug记录
  16. 一个学习代码的好网站
  17. [附源码]Java计算机毕业设计SSM房屋租赁管理系统设计
  18. windows系统——更改系统关机音效
  19. 计算机为何会自动开机,电脑自动开机是怎么回事 电脑自动开机解决方法
  20. 志存高远,少年当自强

热门文章

  1. rosegarden教程_使用数字音频工作站Rosegarden制作优美的音乐
  2. js中的原型(prototype)是什么?如何理解?
  3. SuperBlock损坏修复
  4. Excel修改日期格式:日月年-年月日
  5. JS小型游戏框架coquette学习(持续更新)
  6. 中国十大女性网站排行榜
  7. Linux通过lftp反向镜像实现本地文件夹同步到远程FTP服务器
  8. 读《数学辞海》编辑委员会之《数学辞海 第五卷》
  9. Sketch Cache Cleaner Mac(Sketch缓存清理助手)
  10. 挡板小球c语言,小球显示挡板.c