使用高级语言有哪些缺点?

时间:2015-11-06 10:26:17

标签: low-level high-level

我认为明显的优点是可维护性,程序员友好性等,但有哪些缺点?

编译器是否需要进行额外的工作才能转换到可能不需要的位置?

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

2 个答案:

答案 0 :(得分:1)

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

低级语言的优点:

  • 您可以专门定位和利用芯片功能(或寄存器)
  • 一般来说,如果你知道自己做了什么,它可以(很多)更快,但这是一种罕见的情况。

高级语言的缺点:

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

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

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

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

答案 1 :(得分:0)

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

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

对于低级程序,如嵌入式设备上的操作系统或视频游戏(PS4上的游戏等),内存是VITAL。因此,您无法承担比您需要的更多空间。