注意:我做了一个简短的搜索,结果很少,唯一真正相关的结果是这个,所以我认为这之前没有被完全问过。
我最近一直在研究操作系统开发,我发现大多数(如果不是全部)没有完全面向对象的窗口应用程序接口,包括 Windows。当然,除了字节码解释语言,如 C#(或一般的 CLI)和 Java,这是一个明显的例外。(澄清一下,我的意思是他们倾向于通过一个函数来创建一个窗口,而不是通过创建一个类)。
我可以理解为简单起见而制作的较小的管理器,例如tinywm ,但甚至像MetaCity、Fluxbox和Openbox这样的更大的窗口管理器往往仍然不是来自对象,而是来自函数——尽管有些是用 C++ 编写的而不是纯函数C(至少,据我所知)。
这可能是一个幼稚的问题,但为什么要这样做呢?我知道为不支持面向对象的语言实现非面向对象的 ABI 很重要,但为什么它不能为支持面向对象的语言提供更高级别的挂钩呢?
程序员最终拥有这样的钩子会不会更容易,因为它可以更容易地开发软件?鉴于硬件的进步,与开发容易得多的好处相比,性能损失会不会很小?
这只是让我有些烦恼的事情,我希望有人能给出答案。
PS:如果我的理解在某处根本上是错误的,请随时纠正我。