请注意,这与 Microsoft 为宣传托管代码概念而大力宣传的 .NET CLR 无关。你们中的大多数人都知道托管代码已经存在了很长一段时间,并且与火箭科学并没有太大关系。
我想知道的是,为什么计算机发展过程中运行时安全的概念来得这么晚。
我知道这就像在问“为什么第一辆福特 T 型车没有配备安全气囊和安全带?”。尽管如此,这个问题的相关性仍然存在,因为保护已知危险完全符合人性。例如,第一辆 T-Ford 的速度不足以激发安全气囊的研究。它的速度还不够快,以至于人们经常犯下致命的判断错误,以至于它会促使安全带成为许多国家的法律和标准。
在计算机进化中,它几乎是相反的。我们从组装机开始,这相当于用眼罩以 200 英里/小时的速度驾驶一辆 T-Ford。我有幸与这个时代的几位老卡车司机交谈,听到这些关于手工组装汇编代码、人工调试器、大量代码行等的故事。如果我们在 C 语言中犯了一个非常严重的错误,我们可能会结束蓝屏。几十年前,您最终可能会损坏硬件,天知道会发生什么。但这对我来说是个谜——这么多年了,我们所做的一切都是为了让崩溃不那么痛苦,只是蓝屏(很抱歉将 MS 用作任何东西的原型)。
防止已知危险不仅是人类的天性,而且任何程序员的天性都是自动化和系统化常用设施,如错误检查、内存诊断、日志框架、备份维护等。
为什么程序员/人类没有开始自动化确保他们提供给系统的代码不会损害系统的任务?是的,当然,性能。但是,嘿,这远远早于任何严重渗透的硬件标准。为什么主板没有设计有总线架构和额外的处理器来促进“托管代码”?
有没有什么比喻说 T 型福特汽车不够快以至于我错过了?