或者以更相关的方式措辞,编程语言的哪些特性会影响相应生成的可执行文件的稳定性?
确定生成可执行文件的编译器确实很重要。例如,您可以想象一些像编译链一样先进的东西,能够从自然语言描述中推断出可执行文件,用提供的建议询问相关问题,以消除与给定数据进行良好匹配的概率是否过低的歧义。
现在C以使开发人员能够获得真正快速的可执行文件而着称,“便携式汇编程序”。但这是因为语言简化了源代码和目标代码之间的匹配,同时又简化了优化编译器的开发?或者是因为使用C的开发人员对它在木材下工作的方式更敏感,所以代码考虑到了这一点?还是其他一些原因?
When did people first start thinking 'C is portable assembler'?
答案 0 :(得分:5)
例如,20年前处理器“慢”(相对于内存速度),许多优化专注于在大型预计算值表中查找结果。现在,处理器速度很快,内存很慢。现在,优化专注于缓存效率 - 因为大型数据表会破坏缓存,通常会避免它们,并且任务会转移回处理器。
许多语言不仅仅是一种语言。大多数现代语言都包含繁重的运行时框架和速度所依赖的库。这些运行时框架通常锁定基础数据结构和内存管理模型。当硬件发生变化时,僵化的框架变得效率低下。
因为C可预测地编译为本机对象代码,并且没有强大的运行时,它已经并将继续处理主要的硬件体系结构更改,并且将始终是最快的语言之一。
答案 1 :(得分:0)
用于解决用另一种编程语言解决更多代码的问题的代码较少
答案 2 :(得分:0)
使语言快速起作用的主要特征是其数据类型与机器数据类型的对应程度。 Java被认为是一种有效的语言,因为它具有原始数据类型。相反,用任何语言编写的任何东西的表现都会将所有类型(甚至是字符和整数)视为对象,(就像所有脚本/非类型语言一样)受到影响。
答案 3 :(得分:0)
C很快,因为除了Assembly之外没有C语言。所以这是一个原因。
其次,编写哪种语言编译器也很重要,因为如果语言自身速度慢,那么用该语言编写的编译器也很慢。因此,它会生成代码但不会那么快。
第三,许多时间语言实现算法在如何实现语言数据类型等方面也发挥着重要作用。
生成优化的代码,因此它可以快速运行,并且在NP-Completeness中占用更少的内存。