我最近所有个人项目游戏都是用“纯” C语言开发。
解释为什么要这样做可能很有趣。
预警:一大堆枯燥的编程语言观点将要出现。
我需要什么样一种编程语言
有些条件是不可协商的。
首先,语言必须可靠。
我无法接受花时间去处理那些不是我自己原因造成的 bug。
我的许多游戏都是为 Flash 开发的,现在 Flash 快要死了。
我不想花时间将旧游戏移植到新平台,我想制作新游戏。
我需要一个可以信任一段时间的平台。
同样,我想避免将自己绑定到特定的操作系统,并且理想情况下,我希望可以具备为控制台开发的选择。
因此,重要的是编程语言是可移植的,并且具有良好的可移植库支持。
我理想中的编程语言
在我想要的但不是必需的列表上,最重要的是简单性。
我发现查找语言特性,以及各种古怪的“聪明” API令人厌烦。
我希望熟练一种理想的语言,然后再不必查找任何东西。
处理 bug 是巨大的精力消耗。
我希望错误能尽可能少的产生,所以我需要严格的类型检查,强烈的警告消息和静态代码分析。
我希望 bug 更容易被发现,所以我想要好的调试器和动态分析。
我对高清现实并不感兴趣,但我仍然对性能有所关注。
拥有更多可用周期可以拓宽工作范围。如果您不信守忠诚,探索现代功能强大的计算机可能带来的影响尤其有趣。
进一步,我更关心编译器的速度。
我不是禅宗大师,等待 10 秒钟以上会是一种浪费。
而且更重要的是,等待会打断我的工作流程,刷刷 Twitter,突然发现 5 分钟或更多时间就没有了。
我不是一个虔诚的 OOP 使用者,尽管我大部分职业生涯经历都在处理类和对象,但是花费的时间越多,对为什么要如此严格地结合代码和数据的理解就越少。
我需要将数据作为数据进行处理,并编写最适合特定情况的代码。
替代方案
C++ 仍然是开发游戏的最常用语言,并非没有道理。我仍然用它来完成几乎所有合同项目,但我非常不喜欢它。
C++ 满足了我的需要,但严重挫败于我真正需求,它极其复杂。
尽管有不错的工具,但仍然容易创建各种隐匿的错误。与 C 语言相比,它的编译速度也较慢。
它的性能还不错,并且提供了 C 语言所没有的功能。
但那些并不是我真的想要的功能,而且成本很高。
C# 和 Java 也有类似的问题。
它们是冗长而复杂的野兽,但我需要一种简洁简单的替代。
它们都为使程序员发展成为我强烈反对的 OOP 风格做了很多工作。
按照大多数高级语言的设计,它们倾向于隐藏复杂性,而实际上并不能阻止它带来的困扰。
我非常喜欢 Go 语言,从很多角度来说,它是 C 语言的重生。
我很想用它,但是有很多障碍阻碍了我。
停止世界的垃圾收集对于游戏来说是一个很大的痛苦,停顿是不能接受的事情。
游戏的库支持也非常差,尽管包装 C 语言库也不麻烦,但是这样做还是会增加很多工作量。
为 Web 开发添加功能会很不错,但是一个快速变化的开发环境还是比较可怕。
尤其是 Flash 的死亡让我觉得恐惧。我真的不喜欢 JavaScript,它是如此宽松,我对大家竟然利用它开发了大量代码感到惊奇。
但我没有兴趣尝试。
Haxe 看起来比大多数竞争者更有前途。
如果我再次做 Web 开发我可能会更多深入研究。它有一些很好的库支持。
我有点担心它的相对年轻,它会持续吗?目前我没有太多要说的,我只是涉足表面。
有些人会说不如自己造一个轮子,编写自己的语言,自己真正想用的语言。
我很佩服这个想法,有时我也想这样做。但放弃所有现有的库支持,并为将来的兼容性承担全部责任实在太挑战了。
当归结为现实时,我宁愿做游戏,也不愿去实现一门编程语言。
想要成为一个优秀的、有能力程序员,做软件开发的话,就来学习C/C++吧,而且学习编程的话有一个学习的氛围跟交流圈子特别重要!这里我推荐一个C语言C++交流扣裙,--先八七零九;后63251,不管你是大牛还是小白,大家都一起成长进步。
为什么 C 语言仍然是我的最佳选择
C 语言很危险,但是很可靠。
一把非常锋利的刀既可以割伤手指,也可以用来切菜,但如此简单,要学会谨慎使用它并不难。
它的速度很快,在编译时我想不出什么更快的方法。
它可以在几乎任何东西上运行,通常这比较容易。很难想象会出现它应付不了的情况。
库和工具支持是强大且持续的。
我有些悲伤地说,但这仍然是我的语言。
我绝对不是要说“您也应该使用C语言”。我非常感激这里的偏好是非常具体且不寻常的。
我已经比大多数人编写了更多的“纯” C 代码,这当然是我感到舒适的一部分。
是的,就是这样 :-)