【大屏时代】首页 > 3D快报内容详情

耗时一年,写3.5万亿行代码,消耗90GB内存——Doom成功移植至TypeScript类型系统

2025-02-28 21:35:50 310 大屏时代

在编程世界里,总有一些让人匪夷所思的创举,而近日,Dmitri Mitropoulos的疯狂项目再次刷新了人们对技术极限的认知:他花费了整整一年时间,写下了3.5万亿行TypeScript类型代码,耗费了90GB的内存,成功将经典游戏《毁灭战士》(DOOM)移植到了TypeScript的类型系统中。这一举动无疑是编程领域中的一项伟大且独特的成就,充满了技术创新与挑战。

640 (2).png

TypeScript类型系统:不应执行程序的地方

TypeScript是一种为JavaScript提供静态类型检查的语言,旨在通过在代码运行前捕捉错误来提高代码质量。TypeScript的类型系统专注于类型推导与检查,而非代码执行,这意味着TypeScript本身并不具备直接运行程序的能力。因此,Mitropoulos的项目实际上是在“滥用”TypeScript的类型系统,将其变成了一个虚拟机,用来“运行”游戏《毁灭战士》。

这种技术挑战的复杂性不言而喻。Mitropoulos不仅要在TypeScript的类型系统中模拟一台计算机,还要让这台虚拟计算机运行一个现代游戏。这种“模拟”游戏运行的方式,意味着TypeScript的类型系统必须在执行前对游戏的所有数据进行严格的类型检查与解析。

3.5万亿行代码:从TypeScript类型系统模拟计算机

Mitropoulos的项目庞大而复杂,总计3.5万亿行代码,文件总量达到177TB。在这个项目中,每一行TypeScript代码都相当于模拟计算机硬件的一部分,甚至包括RAM、磁盘等核心组件。更令人惊讶的是,这些类型代码通过TypeScript类型跟踪器(Type Tracker)进行解析,从而产生游戏的输出。

Mitropoulos的团队为了让TypeScript的类型系统能够模拟《毁灭战士》的运行环境,设计了完整的虚拟机,并将游戏所需的116条WebAssembly指令转化为TypeScript类型定义。每个屏幕上的像素也是由TypeScript类型构成的,最终通过ASCII编码的方式在游戏中呈现出320×200分辨率的画面。

640 (3).png

项目中的技术挑战与瓶颈

尽管取得了初步成功,Mitropoulos面临的技术挑战仍然巨大。TypeScript类型系统并不适合处理如此庞大的代码量,因此,在编译过程中,TypeScript类型跟踪器需要占用超过90GB的内存,才能顺利进行解析。由于编译过程中的巨大开销,常见的工具无法使用,Mitropoulos只能手动实现游戏的各个组件,包括一个L1级CPU缓存。

由于TypeScript类型系统只能从左向右解析字符串,Mitropoulos还不得不对二进制算法进行反向输入,以便适应TypeScript的类型推导规则。更为艰难的是,编译《毁灭战士》的第一帧就需要12天,且帧率极低,仅为0.0000009645 fps,每秒钟需要实例化2000万个类型才能完成输出。Mitropoulos表示,如果通过优化,第一帧的编译时间有可能缩短到1到12小时,但要实现这一目标,仍需要进一步的技术优化。

AI的局限与项目的独特性

在当今,AI技术在编程与代码优化领域取得了突破,像GitHub Copilot、ChatGPT等编码助手已能帮助开发者高效完成编程任务。然而,Mitropoulos却表示,这项工作中的底层逻辑过于复杂,AI无法理解,因此无法提供帮助。他笑言:“AI也帮不上忙。”这也进一步凸显了项目的技术复杂性与独特性。

Mitropoulos从头开始学习C、C++和WebAssembly,且为了调试,他编写了12,364个手写测试。整整一年时间的投入让他成为了全球最大的TypeScript代码库的创造者之一。他还透露,这个项目原本只是为了探索为何《毁灭战士》无法在TypeScript类型系统中运行,最终却在技术挑战中找到了这一“疯狂”的解决方案。

这是否是编程界的终极挑战?

《毁灭战士》从未如此“疯狂”地被移植过,而Mitropoulos的成就也成为了编程界的传奇。他的工作不仅展示了TypeScript类型系统的极限,还使得《毁灭战士》成为了一个难以想象的技术实验。这项技术的成功,不仅是对TypeScript系统的一次极限挑战,也为未来的计算机科学发展提供了新的视角与思路。

那么,下一个问题来了:《毁灭战士》还可以在哪里运行?或许,技术的边界在这些“疯狂”的想法中,正逐渐被重新定义。


相关文章

邀请码价格破万引热议——Manus爆火引发业界关注

DeepSeek发布开源DeepGEMM,推动FP8矩阵运算高效化

深度优化引领AI未来:DeepSeek开源DeepGEMM显著提升矩阵运算性能

《疯狂的外星人2》备案立项,Loser大飞与“朋友圈仇敌”联合拯救地球

DeepSeek-R1 本地部署全攻略:使用 Ollama 轻松搭建 AI 环境

Lyft携手Mobileye与丸红株式会社,计划2026年在达拉斯推出Robotaxi服务

相关标签: 35 TypeScript Mitropoulos 类型 毁灭 系统 编程 游戏 代码 战士