“古老”的C++,仍然是当前编写游戏时最常用的语言,但是 C 为什么才是最适合的?
作者 | Jonathan Whiting
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
我喜欢走不寻常路。最近我所有的个人项目游戏都是利用“最普通”的C语言编写的。所以,我觉得有必要解释一下为什么我选择用C编写游戏。
下面让我们来谈一谈有关编程语言的见解,我警告你这些内容可能有点枯燥。
编程语言必须具备的条件
有些事情是没有商量的余地的。首先,这种语言必须可靠。我可不愿花时间去处理那些不是我自己造成的错误。
我的许多游戏都是用Flash编写的,现在Flash快要死了。我不想花时间将旧游戏移植到新平台,我想制作新游戏。我需要一个可以在很长一段时间都保持稳定的平台。
同样,我也不想将自己绑定到特定的操作系统,而且理想的话,我希望该语言还可以为游戏机开发游戏。因此,我选择的编程语言必须拥有可移植性,这点很重要,而且拥有良好的可移植库支持。
期待编程语言具备的条件
虽然不是必须条件,但我最想要的首先是简单性。我感觉查找语言功能和稀奇古怪的“聪明” API极其令人厌烦。我希望我可以记住这种理想的编程语言,而且再也不必查找任何东西。
处理Bug会消耗大量脑细胞。我希望产生的bug越少越好,所以我希望这种语言能严格检查拼写,强烈的警告消息和静态代码分析。我希望很轻松就能发现bug,所以我想要良好的调试器和动态分析。
我对实现高清并不感兴趣,但我却十分在意性能。节省下更多的CPU时钟周期,意味着你有更多的余地去尝试别的东西。如果你不追求高分辨率,那么探索现代功能强大的计算机的潜力会非常有趣。
此外,我更加关心编译器的速度。我不是禅宗大师,对我来说等待10秒钟以上就是浪费时间,而且更重要的是,这会打乱我的节奏,我会情不自禁打开Twitter,一晃眼5分钟就过去了。
我并不热衷于面向对象。我一生的大部分时间都在处理类和对象,但是花的时间越多,就越不明白为什么要如此严格地结合代码和数据。我想单独处理数据,然后再编写最符合特定情况的代码。
其他替代语言
C++仍然是当前编写游戏时最常用的语言,这并非没有道理。几乎我所有的签约工作中都使用了C++。但我非常不喜欢C++。
C++可以满足必备的条件,但是严重不符合我所期望的一些条件。C++极其复杂。尽管C++有很多优秀的工具,但很容易制造出隐匿的bug。与C相比,C++的编译速度也较慢。虽然C++的性能很好,而且还提供了C所没有的功能,但这些都不是我想要的功能,而且因此付出的代价是高度的复杂性。
C#和Java也有类似的问题。这两种语言都非常冗长且复杂,我想寻找一种简洁明了的编程语言。C#和Java都是面向对象的风格,而我却非常不喜欢面向对象。与大多数高级语言一样,这两种语言都倾向于隐藏复杂性,但实际上并不能减轻复杂性给我带来的困扰。
我很喜欢Go,这种语言的很多方面都继承了C,而且还考虑到了自发布以来多年积攒的经验。我喜欢使用Go,但是Go也有一个重大问题。对编写游戏来说,“暂停一切”的垃圾回收是一个巨大的痛苦, “暂停一切”是我无法忍受的。此外,Go对游戏的库支持非常差,尽管你可以通过包装C库来解决这个问题,但是这样做会增加很多工作量。而且Go的定位让我对其长期的发展充满了担忧。
Go语言用来制作Web的东西也不错,但是感觉Go语言发展得太快。我真怕它像flash那样死掉了。此外,我真的不喜欢javascript,它太过于宽松,看到人们利用javascript编写大量软件,我由衷地感到惊讶。我自己没有兴趣尝试。
感觉Haxe比其他编程语言更有前途。如果再做Web开发的话,我可能会深入研究一番。这种语言也有一些很好的库支持。但我担心Haxe过于年轻,还能持续发展多久?我不想对此妄加发表评论,毕竟我只是浅尝辄止。
看到这里有人可能会说,这么挑剔干脆自己写一门编程语言吧。我很佩服创造出新编程语言的人,我自己常常也有这种想法。但我感觉放弃现有的库支持,并为将来的兼容性承担全部责任,这个担子有点过重了。而且这也是非常困难的,所以还是回归现实,我宁愿做游戏,也不愿创建新的编程语言。
为什么C仍然是我的最佳选择?
C很危险,但是很可靠。C就像一把锋利的刀,虽然有可能会划破手指,但也可以切菜,而且C非常简单,学会谨慎使用也非难事。
C的速度非常快,我想不出还有什么比C的编译更快的编程语言。
C几乎可以在所有环境中运行,而且通常都比较容易。很难想象无法运行C的情况。
C拥有强大且持续的库和工具。
虽然说这话的时候,我略感悲伤,但C仍然是我的首选语言。
我绝不是想鼓动每个人都来使用C。我在本文中所做的推荐针对非常具体且不寻常的情况。我已经编写了大量非常“普通”的C代码,而且我感觉使用C语言的时候最舒适。
以上,感谢阅读。
原文:https://jonathanwhiting.com/writing/blog/games_in_c/
本文为 CSDN 翻译,转载请注明来源出处。

【END】

 热 文 推 荐 

点击阅读原文,BDTC 2019最新动态抢先看!
你点的每个“在看”,我都认真当成了喜欢

为什么我选择用 C 编写游戏?相关推荐

  1. 使用Managed DirectX编写游戏

    转自  http://dev.gameres.com/Program/Visual/DirectX/ManagedDirectX9Game_01.htm http://dev.gameres.com/ ...

  2. 取代Flash的HTML5技术( H5 编写游戏的优点)

    什么是Flash     Flash 是由 Adobe 公司开发的一种富媒体技术,起初是一种放置在浏览器中的插件,填补了当时 HTML 页面平淡的空白,增强了网页交互的能力.你可以在 Flash 中做 ...

  3. 用scratch编写游戏2048(印章法)

    用印章法编写游戏2048,是以克隆法编写游戏2048为基础,修改部分脚本而完成的.如果读者未看过我的上一篇博文:用scratch编写游戏2048(克隆法),请先读一读.印章法和克隆法,在处理数据的思路 ...

  4. 手把手教你编写游戏模拟器 - Chip8篇(1)

    转自 http://www.cnblogs.com/YiranXie/p/3439934.html 手把手教你编写游戏模拟器 - Chip8篇(1) 手把手教你编写游戏模拟器 - Chip8篇 翻译整 ...

  5. 使用Managed DirectX编写游戏(-)

    作者:clayman clayman_joe@yahoo.com.cn 仅供个人学习之用,勿用于任何商业用途,转载请注明作者^_^ 3D游戏编程,显然,这是一个很复杂的主题.首先,让我们来学习一些编写 ...

  6. 通过编写游戏程序的视角去编写字符驱动--设备树-百问imx6ull-pro

    本文基于imx6ull-pro百问网开发板进行驱动开发设计 编写驱动就好比是创建一个游戏并注册一个角色,每一步都是有意义的 对于这个游戏本身,我们也是管理者.首先先把游戏的初始化.退出框架搭好,然后提 ...

  7. python编写游戏测试机器人客户端(一)

    系列文章目录 python编写游戏测试机器人客户端(一) python编写游戏测试机器人客户端(二) python编写游戏测试机器人客户端(三) python编写游戏测试机器人客户端(四) pytho ...

  8. 鼠标使用板载内存和使用计算机上,鼠标怎么选?教你选择适合自己的游戏鼠标。...

    原标题:鼠标怎么选?教你选择适合自己的游戏鼠标. 鼠标是我们平时接触电脑最多的部件之一,一只适合自己的鼠标往往能给你带来更加舒服的体验. 那么今天我们就来说一说"如何选购一款适合自己的鼠标& ...

  9. 如何让c语言编的游戏运行,如何用C语言编写游戏一.doc

    如何用C语言编写游戏 网络游戏是常谈的话题,是交互式娱乐的主力军,是一种 高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的 ...

最新文章

  1. 端到端伪激光图像3D目标检测
  2. 是我,一行代码三个 Bug!!! | 每日趣闻
  3. 面试官:讲讲Spring框架Bean的加载过程
  4. Split in Java
  5. 微型计算机引脚,微型计算机硬件基础8086引脚.doc
  6. structs2多文件上传
  7. Linux工作笔记-使用alias简化Linux命令(包含.bash和.cshrc)
  8. (82)FPGA仿真停止激励(stop)
  9. Producer向Broker发送心跳的作用-知识点
  10. android activty动画,Activity动画效果
  11. 好程序员分享js实现简单的板球游
  12. 几何画板构造象限平分线的步骤
  13. 《python3网络爬虫开发实战》学习笔记:pyspider报错Exception: HTTP 599: SSL certificate problem...
  14. # UDIG配图(sld)
  15. 9.5 预测市场和真实世界的数据源
  16. RVDS 3.1 下载地址及破解方法
  17. layui文件上传等待动画
  18. 键盘按0键出仅计算机复制,键盘上复制粘贴按哪两个键
  19. 最速下降法求解函数极小值原理
  20. sentinel限流入门

热门文章

  1. Ubuntu中Lamp的一些配置
  2. 我修改的IP地址掩码 呵呵~~开心
  3. FastDB内存数据库API
  4. 项目经理修炼手册,泄露章节 ,项目经理需要注意的习惯
  5. PyCharm远程链接矩池云
  6. python可以做科学计算吗_用 Python 做科学计算之最小二乘
  7. aixdb2安装手册_AIX下安装db2数据库步骤
  8. spss回归分析_SPSS之回归分析
  9. MATLAB GUI多界面切换问题及其他相关问题
  10. PyQt5的QAction多次响应triggered信号的处理方式