为什么依赖机器的语言更适合编写某些类型的程序?什么类型的计划是合适的?
答案 0 :(得分:3)
为什么机器可能依赖于语言 更适合写作 某些类型的节目?
某些机器具有特殊指令集(例如x86上的MMX或SSE),允许以编译器可能利用或不利用(或不利用)的方式“利用”体系结构在所有)。如果速度至关重要(例如视频游戏或数据处理程序),那么您需要充分利用您所使用的架构。
在为特定设备编写程序时(以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,由于架构的巨大差异。