今天我在思考什么可能是编写过的最复杂/最令人印象深刻的应用程序。所以我开始思考我熟悉并每天使用的东西,数据库。
然后我进入了一个未知的领域(我想对我们大多数人来说),政府。 我只能想象美国宇航局的应用程序有多复杂,它们可以与火星上的探测器进行通信。
但是后来我开始思考我从小就每天使用的东西,游戏。 我不是游戏开发者,这让我对AI和计算复杂度产生了大量的疑问,这些疑问超出了我能想到的任何东西。
游戏是复杂度最高/最令人印象深刻的应用程序吗?
回答:
简短回答:不是。
详细回答:游戏实际上并没有那么复杂。 这取决于你在说“游戏”时指的是什么,但竞争最激烈的两个最复杂的游戏将是 3D 游戏和在线游戏(尤其是大型多人在线游戏)。
3D 游戏的复杂性来自于获取世界的模型并在 3D 中渲染它,并使其以“真实”(在世界的规则范围内)的方式运行。 从中创建视觉和听觉环境实际上并没有那么难。 它几乎都是线性代数,并且是计算机科学的一个成熟领域。
真正的诀窍在于使该过程实时执行。 多年来,游戏程序员不得不在真实性和性能之间做出很多权衡(例如,如果你能开发出一种可以生成逼真树木的性能算法,那实际上会非常值钱)。 因此,随着计算和图形能力的提高,游戏在视觉上自然变得越来越好。
现在,一些游戏程序员在这个领域取得了真正的创新,(理所当然地)为他们赚了很多钱。 约翰·卡马克(id Software:Doom 和 Quake)和蒂姆·斯威尼(Unreal)浮现在脑海中。
然而,制作游戏的真正成本在于内容。 只要去看看现代 FPS(第一人称射击)游戏的演职员表,你通常会看到少到 6 个程序员,但会有 30-50+ 个艺术家。 从软件的角度来看,内容并不复杂。 只是很耗时。
至于在线游戏,我记得《无尽的任务》刚出来的时候,人们对它的难度赞不绝口。 错误。 对于那些(像我自己一样)熟悉 90 年代(可能还有 80 年代)MUD(多人地下城)的开发的人来说,Everquest 服务器在架构上并没有那么复杂。
《魔兽世界》或任何其他游戏也是如此。
如果你想谈论复杂性,那么运行这些东西的 Windows XP 操作系统呢?它估计有 4000 万行代码? 天知道 Vista 有多少。 或者 Linux 内核呢?
现在在政府、军队和私营部门,你会发现其他投入了数千人年的应用程序。