``` 卡马克论操作系统 ```
Carmack on Operating Systems (1997)

原始链接: https://rmitz.org/carmack.on.operating.systems.html

## 卡马克 Quake 2 开发计划 (1997年3月18日) 在这个 .plan 文件中,约翰·卡马克概述了他对 Quake 2 扩展机制和平台支持的设想。他倾向于使用 DLL 接口进行修改,由于开发时间和“向下构建”到系统级访问的限制,他否定了 Java 和其他选项。他计划公开 Quake 1 QC 接口代码,以促进 Quake 2 插件的受信任 DLL 生态系统。 关于平台,Win32 被优先考虑为主要平台,开发主要在 Windows NT 上进行。由于现代操作系统的优势,DOS 被明确放弃。Linux 因其强大的黑客社区而被认为是第二重要的平台。 Mac OS 支持将由专业人员移植,但卡马克对该平台的技术尊重有限。其他系统,如 OS/2、SGI、AIX 和 BeOS,获得了不同程度的考虑,从不太可能的移植到慈善支持不等。他强烈偏爱 NeXTSTEP 作为开发环境,希望 Apple 的 Rhapsody 能够解决其缺点,并可能成为他的主要平台。

这次Hacker News讨论围绕着John Carmack 1997年发表的一篇关于操作系统的文章。原始帖子链接到该文章,并引发了关于Carmack的观点如何随着现代操作系统发展而演变的争论。 关键点包括质疑Linux“黑客与用户比例”的持续相关性,一些人认为BSD甚至像Haiku这样的利基操作系统可能现在拥有这一地位。 还有关于Android是否应该包含在Linux用户数量中的讨论。 许多评论者反思了90年代与今天的操作系统格局,指出多样性显著下降,现在大多数系统都基于UNIX。 对话涉及Plan 9,它的局限性和潜力,以及Win32在游戏开发中的持久遗产。 最后,几位用户指出考虑历史背景的重要性——这篇文章早于macOS X——并表达了对Carmack当前观点的兴趣。 讨论强调了操作系统的持续演变以及Carmack洞察力的持久影响。
相关文章

原文
John Carmack's 3/18 .plan
March 18, 1997

I have gotten a significant amount of response on the Quake 2 extension mechanism. I do read everything that comes my way (I can't respond to all of it, though), and I have learned a few things from the mail.

Nothing is set in stone yet, but it is still looking like a dll is going to be the primary interface. I have been seriously considering a java interface, but the tradeoffs (time spent implementing takes away from something else...) just don't quite add up. Other options, like enhancing qc or using other languages like perl have very remote chances.

One of the primary reasons is that you can allways build UP -- put more functionality on top of a dll, but you can't allways build DOWN -- accessing the registry from java for instance.

For Id Software to develop a game, a dll will be most efficient. We have more cpu power, and we can debug it more easily. We are directing significant effort towards making Quake 2 a better GAME, as well as just a better mutliplayer virtual world. Quake 1 was pretty messed up from a game standpoint, and we don't plan on doing that again.

What I can offer the qc hacking crowd is a public release of the qc interface and interpreter code from Quake 1 when Quake 2 is released. The user community can then bolt things together so that there can be one publicly trusted DLL that executes an updated and modified qc language for portable, secure add ons.

I really do care about portability, but it is just one factor that needs to be balanced against all the others. Things just aren't clear cut.

Speaking of portability, to remove the guesswork that goes on, here are my current opinions on the various platforms:

Win32

Win32 rules the world. You are sticking your head in the sand if you think otherwise. The upside is that windows really doesn't suck nowdays. Win 95 / NT 4.0 are pretty decent systems for what they are targeted at. I currently develop mostly on NT, and Quake 2 will almost certainly be delivered on win32 first. Our games should run as well as possible in NT, we won't require any '95 only features.

DOS

We are not going to do another dos game. No amount of flaming hate mail is going to change my mind on this (PLEASE don't!). The advantages of good TCP/IP support, dynamic linking, powerfull virtual memory, device drivers, etc, are just too much to overcome. Yes, all of those can be provided under dos in various ways, but it just isn't worth it.

Linux

I consider linux the second most important platform after win32 for id. From a biz standpoint it would be ludicrous to place it even on par with mac or os/2, but for our types of games that are designed to be hacked, linux has a big plus: the highest hacker to user ratio of any os. I don't personally develop on linux, because I do my unixy things with NEXTSTEP, but I have a lot of technical respect for it.

MacOS

From a money making standpoint, the only OS other than win32 that matters, and it doesn't matter all that much. We have professional ports done to MacOS instead of unsupported hack ports, which is a mixed blessing. They come out a lot later (still waiting for quake...), but are more full featured. I have zero respect for the MacOS on a technical basis. They just stood still and let microsoft run right over them from waaay behind. I wouldn't develop on it.

OS/2

A native OS/2 port of any of our products is unlikely. We just don't care enough, and we are unwilling to take time away from anything else.

SGI

I don't particularly care for IRIX as a development environment (compared to NT or NEXTSTEP), but SGI has the coolest hardware to run GL apps on. Safe to assume future IRIX ports, but its not exactly a top priority.

AIX / OSF / HPUX / SOLARIS

I wouldn't start a port to any of these, but if a trusted party (Zoid) wanted to do them, I probably wouldn't object.

BeOS

I bought a BeBox because I am a solid believer in SMP, and I like clean, from-scratch systems. I was left fairly non plussed by it. Yes, it is lean and mean and does a couple things better than any other OS I have seen, but I just don't see any dramatic advantages to it over, say, NEXTSTEP. Lion (the company doing the mac quake port) has a BeOS port of quake sort of working, and have my full support in releasing it, but it will be strictly an act of charity on their part, so don't expect too much.

Plan9

I spent a few months running Plan9. It has an achingly elegent internal structure, but a user interface that has been asleep for the past decade. I had an older version of quake dedicated server running on it (don't ask me for it -- I lost it somewhere) and I was writing a civilized window manager for it in my spare time, but my spare time turned out to be only a couple hours a month, and it just got prioritized out of existance.

NeXTStep

My favorite environment. NT and linux both have advantages in some areas, but if they were on equal footing I would choose NEXTSTEP hands down. It has all the power of unix (there are lots of things I miss in NT), the best UI (IMHO, of cource), and it just makes sense on so many more levels than windows. Yes, you can make windows do anything you want to if you have enough time to beat on it, but you can come out of it feeling like you just walked through a sewer.

In the real world, things aren't on equal footing, and I do most of my work on NT now. I hold out hope that it may not stay that way. If apple Does The Right Thing with rhapsody, I will be behind them as much as I can. NEXTSTEP needs a couple things to support games properly (video mode changing and low level sound access). If apple/next will provide them, I will personally port our current win32 products over.

If I can convince apple to do a good hardware accelerated OpenGL in rhapsody, I would be very likely to give my win NT machine the cold shoulder and do future development on rhapsody. (I really don't need Quickdraw3D evangelists preaching to me right now, thank you)

联系我们 contact @ memedata.com