1
0
现在大多数操作系统大多是用C语言编写的,因为它几乎是唯一一种保持某种汇编程序向后兼容性的语言(例如,可以将硬件规范中的汇编程序的大部分映射到C中)。libc是内核和用户空间之间的主要接口,通常是唯一的接口。然而,接口并没有涵盖所有内容:内核中的一些内容必须直接访问,因为还没有提供标准接口。例如,必须使用C结构向ioctl传递参数/从ioctl检索结果。 这意味着在应用程序开发中使用C在很大程度上是由一个简单的事实推动的,即如果使用C,就可以自动访问同样用C编写的内核(OS)的所有特性。 唯一能以某种方式与C竞争的语言是基于C的/与C兼容的语言。我唯一知道的是C++。在旧时代,也有相对流行的翻译人员,如 p2c (Pascal到C):一种语言的开发程序,但源代码会自动翻译成C进行编译。但是翻译人员有相当多的缺陷,而且不懂C语言,经常无法调试程序。所以如果你一定要懂一些C语言,为什么还要麻烦翻译呢。 明亮的 )最终,您需要重新实现几乎整个操作系统(以及各种必备的应用程序库)的接口。 只要(1)C仍然是系统编程的唯一语言,(2)操作系统接口仍在不断发展,所有与C不兼容的语言在应用程序开发的另一边都将处于更大的劣势。
LLVM
/
clang
可能会破裂。clang实现为一个可重用的库,理论上允许混合语言。例如,主源文件可以使用一种语言(并由一个前端解析),但是
|
2
15
不 专门为填补这一空缺而设计,但已经非常成功
还有很多语言还没有在这个领域使用,但这是肯定的 能够
事实上,人们有时会觉得 专门为操作系统编程设计的 更好的 为了那种事。例如,比较一下创新的水平、稳定性、安全漏洞的数量、20世纪70年代的Smalltalk操作系统和2010年的Windows或OSX的性能。 我个人认为,这是基于系统编程社区中一些根深蒂固的神话。他们认为,用一种语言进行系统编程,比如说,具有强类型、类型安全、内存安全、指针安全、自动存储管理是不可能的,而获得性能或实时保证的唯一方法就是放弃强大的抽象设施。然而,当您试图为 人类 代替机器,那么人类实际上可以理解他们编写的程序,发现安全漏洞,修复bug,定位和修复性能瓶颈,在一行monad理解中比在100行for循环中要好得多。 例如squeakons,它是Squeak Smalltalk系统的一个变种,运行时没有操作系统(换句话说:it) 是 操作系统)拥有现代操作系统(图形用户界面,…)所能提供的几乎所有功能,加上一些不具备的功能(嵌入式脚本语言,可以在运行时修改操作系统的每一部分),其SLOC的重量仅为300k,开机时间不到5秒,而Windows的重量为50% 斯洛克。 |
3
6
最明显的就是C++。 做你所描述的一切,但是用其他特性(面向对象等)扩展了C。 |
4
4
|
5
4
|
6
4
Ada可能是除C以外在这个领域使用最广泛的语言。 它的设计首先是为了产生可靠的无bug代码,但是,大多数Ada编译器也会产生经过良好优化的高效机器代码。 一段时间以来,这种语言是国防部项目的强制性语言,目前仍广泛用于电子设备、雷达、导航和武器控制系统。 |
7
3
你可以考虑 D
|
8
1
Ada和大多数情况下的Objective-C。 |
9
1
帕斯卡。 它们共享许多概念和设计,如指针、内存的直接分配-释放、程序内ASM的直接调用,它们非常相似,在pascal程序中加载dll或c/c++代码并不罕见,反之亦然。 也许看看像Basic这样的古老语言,就有可能找到适合c语言的实现。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |