01:17:47
在最新一期的播客中,资深游戏开发者Casey Muratori分享了关于软件性能、教育缺失以及行业文化的深刻见解。他从游戏开发的角度出发,探讨了程序员如何忽视硬件知识,导致代码效率低下,并提出了解决方案。
Casey Muratori首先澄清了游戏开发者和游戏设计师的角色差异。在工业环境中,游戏设计师往往负责任务设计、物品放置和脚本管理,而不是创新游戏机制。真正的游戏设计创新通常发生在小型团队或原型阶段,而非大型AAA工作室。
游戏开发则涉及多种角色,包括通用角色(如前端、后端开发)和 specialized 角色(如渲染、物理编程)。渲染程序员需要掌握线性代数、硬件知识和编译器原理,这些技能远超普通编程范畴。
Casey推出了教育项目"Computer Enhance",旨在教程序员如何代码在硬件上运行。他强调,大多数程序员根本不了解代码的执行过程,导致软件性能低下。例如,Python中的加法操作可能比C语言慢100倍以上,仅仅因为解释器的开销。
学习汇编语言阅读(而非编写)是关键。程序员应该理解基本指令、CPU执行模型和内存层次结构,这样才能在编写代码时做出明智决策,避免不必要的性能损失。
Casey举例说明了软件性能的退化:2004年的Visual Studio加载几乎瞬间完成,而现代版本可能需要10秒甚至更久。这种退化并非源于新功能,而是糟糕的编程实践和文化忽视。
类似地,Microsoft Teams的启动时间从20秒优化到10秒,但作为聊天客户端,这仍然不合理。这些例子揭示了行业对性能问题的普遍漠视。
Casey提出了"30百万行代码问题"(现在可能已超过1亿行),指出发送一个字节数据可能涉及数百万行代码,包括UEFI BIOS、操作系统和浏览器。这不仅导致性能问题,更带来安全风险。
攻击面巨大,因为任何可访问的代码都可能被利用。安全审计变得几乎不可能,因为没人能全面理解所有代码。此外,代码膨胀 stifles 创新,使得开发新操作系统或硬件接口变得困难。
解决方案包括重新设计硬件接口以简化编程,但这需要巨额投资和行业意识转变。当前项目如Raspberry Pi并未真正解决 simplicity 问题。
Casey认为,软件性能问题根源在于文化和教育。程序员被鼓励学习 transient 技术(如Docker或React),而非 durable 概念(如硬件原理)。通过教育项目 like Computer Enhance,可以培养程序员的底层知识,从而编写更高效的代码,推动行业整体进步。