-4

我认为明显的优点是可维护性、程序员友好性等,但缺点是什么?

编译器是否需要额外的工作来转换可能不需要的地方?

由于上述缺点,是否存在低级语言更适合任务的情况?

4

2 回答 2

1

简而言之:由于非常具体的优化,低级语言可以产生更好的性能。

低级语言的优点:

  • 您可以专门针对和利用芯片功能(或寄存器)
  • 通常,如果您知道自己在做什么,它可以(很多)更快,但这种情况很少见。

高级语言的缺点:

  • 您需要某种编译器才能将 HLL 转换为 LLL
  • 在某些情况下(例如 Java / C#),您有一个解释器,它们之间也会消耗资源(但也可以在运行程序时自我优化!)

这里是 LLL 优势的更详细列表:

  • 您可以访问与机器相关的寄存器和 I/O
  • 您可以控制关​​键部分中的确切代码行为,否则可能涉及多个软件线程或硬件设备之间的死锁
  • 你可以打破你常用编译器的约定,这可能允许一些优化(比如暂时打破关于
    内存分配、线程、调用约定等的规则)
  • 您可以使用不兼容的约定在代码片段之间构建接口(例如,由不同的编译器生成,或由
    低级接口分隔)
  • 您可以访问处理器的异常编程模式(例如,16 位模式来接口启动、固件或
    英特尔 PC 上的旧代码)
  • 您可以为紧密循环生成相当快的代码,以应对糟糕的非优化编译器(但是,有免费的优化
    编译器可用!)
  • 您可以生成针对您的特定硬件设置完美调整的手动优化代码,但不能针对其他人的
  • 您可以为您的新语言的优化编译器编写一些代码(这是很少有人会做的事情,甚至他们也不经常这样做)
  • 即你可以完全控制你的代码

来源:http ://www.tldp.org/HOWTO/Assembly-HOWTO/x133.html

于 2015-11-06T10:43:27.987 回答
0

不自己分配内存是一回事。语言背后的程序员创建垃圾收集器,他们有时(大部分)给你大量的内存。

以 JavaScript 为例。如果你这样做var arr = array(501);,它可能会给你 600 个字节,或者 1000 个甚至更多。

对于嵌入式设备或视频游戏(PS4 上的游戏等)上的操作系统等低级程序,内存至关重要。因此,您无法承受超出您需要的空间。

于 2015-11-06T10:38:31.593 回答