是否有任何被提议的或实现的语言与c一样(巨大的)适合作为一种替代,同时保持对os、高性能、嵌入式和其他角色的所有适用性?
最佳答案
是否有任何被提议的或实现的语言与c一样(巨大的)适合作为一种替代,同时保持对os、高性能、嵌入式和其他角色的所有适用性?
OSS过去是在汇编程序中实现的。后来,开发转向了C,它最初是一种宏汇编程序。
现在大多数操作系统都是用C语言编写的,因为它几乎是唯一一种保持某种汇编程序向后兼容性的语言(例如,可以将硬件规范中汇编程序的很大一部分映射到C语言中)。libc是内核和用户空间之间的主要接口(通常是唯一的接口)。然而,接口并不是包罗万象:内核中的一些东西必须直接访问,因为还没有提供标准接口。例如,必须使用c结构向ioctl传递参数/检索结果。
这意味着,在应用程序开发中使用c在很大程度上是由这样一个简单的事实推动的:如果使用c,则可以自动访问内核(os)的所有特性,内核(os)也是用c编写的。
只有能与C竞争的语言才是基于C语言的语言。以前也有一些比较流行的翻译器,比如p2c(pascal to c):一种语言的开发程序,但是源代码会自动翻译成c进行编译。但是翻译器是相当有缺陷的,如果不了解c语言,程序通常无法调试。所以,如果你必须知道一些C,为什么要麻烦翻译。
我个人(和许多其他开发人员,我敢肯定)使用各种语言时,经常会遇到这样的问题:操作系统有一个特性,但所使用的语言没有提供任何访问它的工具。我认为这是其他语言发展的主要阻碍因素。即使你对一种新语言有很好的想法(这可能与c不兼容,否则想法就不会那么好了),你最终还是要为几乎所有的操作系统(以及各种必备的应用程序库)重新实现接口。
只要(1)c仍然是系统编程的唯一语言,并且(2)os接口仍在不断发展,那么处于另一边的所有不兼容c的语言,即应用程序开发,将处于更大的劣势。
实际上,这是我希望LLVM/clang可能打破的模子之一。clang被实现为一个可重用的库,理论上允许混合语言。例如,主源文件可以是一种语言(由一个前端解析),但是#include
s可以是c语言(由clang解析)。
关于c - 是否有与C相同的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342213/