我是一个另类的开发者。我近完成的所有的个人游戏项目都是用 ‘vanilla’C(标准C,即ANSI C)开发的,没有人会这样做。所以我想大家会比较感兴趣我这样做的原因。
  警告:接下来是对编程语言的枯燥评价。
  我需要的开发语言是什么样的?
  有些要求是没有商量余地的。首先,它必须是可靠的。我不能接受把时间浪费在处理那些不是我引起的bug上。
  过去我开发的很多游戏都是基于flash的,现在flash技术已经离寿终正寝不远了。我不想花费时间将老游戏移植到新的平台上,我想开发新的游戏。我需要找一个我有信心它能存在很长一段时间的平台。
  同样我不希望把自己绑定在一个特定的操作系统上,我理想 的操作系统好有开发主机游戏的选项。所以编程语言的可移植性对我来说非常重要,并且它好具有良好可移植库的支持。
  我想要的开发语言是什么样子的?
  我所强烈渴望的是简单,但这不是必须的选项。我发现查找语言特性和一些古怪“聪明的”API是一件相当累的事情。我理想中的语言应该是我可以记住它所有的特性和API,然后再也不用特意去查询它。
  处理BUG也是一件特别耗时耗力的事情。我想要更少的BUG,所以我需要严格的拼写检查、强大的警告信息和静态代码分析。我希望BUG更容易被发现,所以我需要好的调试器和动态分析器。
  虽然我不是一个极度现实主义者,但是我仍然关心性能。这样一来你有更多的时间去做更多的事情。如果你不执著于旧的科技,你会发现探索当代的、强大的计算机的功能也是一件特别有趣的事情。
  和上面所说的比起来我更关心的是编译的速度。我不是一个禅师,10秒+的等待对我来说是浪费时间,真的是这样,重要的是它打断我工作的连续性。在这期间我可能会打开Twitter,然后突然发现已经过去5分钟了。
  我不是一个OOP(面向对象编程)的拥护者。我已经花了职业生涯中大部分的时间使用类和对象,但我花的时间越多,我越不明白为什么要将代码和数据那么严格的结合起来。我只想将数据作为数据处理,编写适合特定场景的代码。
  可供选择的方案
  毋庸置疑,c++仍是游戏开发中常用的语言。虽然非常不喜欢它,但是几乎我所有的合约工作都依靠它完成。
  c++能满足我的需求,但它不是我想要的。它太复杂了。尽管是个很好的工具,但它也很容易出现隐藏的BUG,而且它比C编译地慢。虽然它性能很好,并且提供了很多C语言没有的特性,但我并不需要这些特性,尤其是在加大语言复杂度的情况下。
  c#和Java比较相似。他们像冗长和复杂的野兽,而我只想找一个简单明了的生物。他们都做了很多工作来引导程序员培养面向对象编程的风格,而我反对这么做。如同大多数高级编程语言的一样,他们习惯于隐藏语言的复杂性,而这实际上并不能真正使你免于出错。
  我很喜欢Go语言。从很多方面它都是C的再生版,想想这些年自从它发布以来的表现。我愿意使用它,但是它也有一些棘手的问题阻碍着我。STW(stop-the-world)垃圾回收机制(即垃圾回收时,需要暂停用户的所有其他线程)是游戏开发永远的痛,因为“停止一切线程”的确是一件让人无法接受的事情。目前支持游戏开发的库很少,尽管你可以不费力地使用C语言库,但这也增加了很多工作量。不过Go是一种足够好的编程语言,我至少不用担心它的长远发展。
  开发Web应用是件很不错的事情,但web环境和技术的发展太过迅猛。很难相信flash要消失了。我真的不喜欢javascript,它的规范太宽松了, 我惊奇人们能够依靠它编写大量的软件。然而我没有兴趣去尝试它。
  我感觉Haxe(一门新兴的编程语言)比大多数其他语言更有前途。如果我再做web开发的话,我会考虑使用它。它有良好的库支持。但是我有点担心它相对太新了,它能够持久吗? 因为我只是简单的了解了一下,所以没办法做更多的介绍了。
  Jonathan Blow正在开发他想要的编程语言。我欣赏这种做法,有时我也会萌生同样的念头。但考虑到要放弃现有的库支持,而且要为它未来的兼容性负责,我会觉得压力好大。况且,这本来很难。相比于开发一种编程语言,我宁愿开发游戏。
  为什么C是始终是我的爱
  C语言很危险,但同时它也很可靠。像一把锋利的刀子,既可以切蔬菜但同时也可能切到手指,但好在是学会安全的使用它并不是一件难事。
  它非常快,尤其是在编译方面我想不出任何比它更快的语言。
  它几乎可以运行在任何平台上。通常这是一个相对容易的事情。你很难想象不是这样的情况。
  它的库和工具支持非常强大而且持续。
  我这样说有些悲伤,但它仍然是我挚爱的语言。
  我不会说“嘿,你也应该使用C语言开发”。我非常欣赏独特而与众不同的爱好。我比大多数人写过更多的标准C代码,而这正是我感到欣慰的地方。
  没错,是它 :-)(