机器依赖语言

时间:2009-10-06 03:32:49

标签: programming-languages

为什么依赖机器的语言更适合编写某些类型的程序?什么类型的计划是合适的?

3 个答案:

答案 0 :(得分:3)

  

为什么机器可能依赖于语言   更适合写作   某些类型的节目?

速度

某些机器具有特殊指令集(例如x86上的MMXSSE),允许以编译器可能利用或不利用(或不利用)的方式“利用”体系结构在所有)。如果速度至关重要(例如视频游戏或数据处理程序),那么您需要充分利用您所使用的架构。

可移植性无用

在为特定设备编写程序时(以iPhone或Nintendo DS为例),便携性是您最不关心的问题。此代码很可能永远不会转到另一个平台,因为它专门为该架构/硬件组合而设计。

开发人员无知和/或市场需求

计算机视频游戏就是最好的例子 - Windows是主导的计算机游戏操作系统,那么为什么要瞄准其他人呢?它将让开发人员专注于已知变量的速度/大小/易用性。一些开发人员无知 - 他们学会只在一个平台(如.NET)上编码,并且“忘记”其他平台存在,因为他们不了解它们。他们似乎采取类似于“它适用于我的机器的方法,为什么我要把它移植到一个我永远不会使用的奇怪组合?”

别无选择。

我将再次使用iPhone,因为这是一个非常好的例子。虽然您可以使用C或C ++对其进行编程,但您无法访问与Objective-C运行时链接的任何UI小部件。如果您想访问任何这些小部件,除了在Objective-C中编码外别无选择。

  

将会有哪些类型的节目   合适?

嵌入式系统

以上所有内容 - 当您编写嵌入式系统时,您希望充分利用您正在处理的硬件的全部潜力。无论是内存管理(例如ARM9上的CP15),还是仅附加到目标设备(伺服电机,特殊传感器等)的模糊硬件。

答案 1 :(得分:1)

我能想到的最好的例子是小型嵌入式设备。当您必须完全控制优化的每个细节时,由于计算能力非常有限(例如,只有几千字节的RAM),您可能希望自己下载到汇编程序级别,以使所有内容在这些小范围内完美运行

另一方面,编译器现在变得足够复杂,在大多数情况下你真的不需要低于C,包括嵌入式设备和微控制器。如果有必要,情况非常罕见。

答案 2 :(得分:0)

考虑几乎任何图形引擎。由于您的普通通用CPU无法并行执行操作,因此每个像素至少需要修改一个周期。

然而,由于现代GPU可以同时对许多像素(或其他数据)进行操作,因此可以更快地完成相同的操作。 GPU非常适合embarrassingly parallel problems

当然,我们现在有高级语言API来控制我们的视频卡,但是当你“接近金属”时,用于控制GPU的原始语言与控制一般语言的语言不同。目的CPU,由于架构的巨大差异。