C的一个优点是它更接近硬件。 但我不明白它到底意味着什么。如果有人可以详细说明,那将是很有帮助的。
答案 0 :(得分:5)
没有虚拟机解释C可执行代码。它被编译成特定于特定CPU的机器指令,它们链接在一起并在您的硬件上运行。
另一个原因是语言本身的设计。当Kernighan和Ritchie为DEC硬件开发C时,他们非常注意寄存器,位移等实际的硬件功能。他们的思维和他们编写语言的机器之间没有一层抽象。 / p>
答案 1 :(得分:0)
如果将C
与java
进行比较,则C更接近硬件,因为java不直接在系统上运行。 Java在java virtual machine上执行,然后在系统上运行。
C在它与系统之间没有这样的层,因此更接近于硬件。
答案 2 :(得分:0)
它不提供抽象来保护您免受硬件和平台的细节影响,例如内存布局和系统API。因此它更接近硬件"从某种意义上说,代码和硬件之间的代码较少。
答案 3 :(得分:0)
BCPL,B和C都完全适合以Fortran和Algol 60为代表的传统程序系列...... 它们“靠近机器”。因为它们引入的抽象很容易基于传统计算机提供的具体数据类型和操作,并且它们依赖于库例程来进行输入输出和与操作系统的其他交互。由于成功率较低,他们还使用库过程来指定有趣的控制结构,例如协同程序和过程闭包。同时,他们的抽象处于足够高的水平,小心地可以实现机器之间的便携性。
对于一个特定示例,C int
很可能映射到本机字大小(16-,32-,64-或128位)的对象,以及{{1}上的操作将使用本机操作码(ADD,MUL等)执行对象。
与使用任意精度算法的Lisp或Haskell等语言形成对比;这些语言中的整数通常由数字数组表示,对它们的操作几乎只在软件中执行。
在这方面,C是"靠近硬件"因为它利用本机基础设施进行整数运算。
在所有条件相同的情况下,C中的整数运算将更快 lot ,因为它利用了本机硬件,但它无法表示或操作任意大的值。