为什么某些编程语言要比其他语言快?

那里有许多编程语言,每种都有自己的怪癖和功能。由于不同的设计选择和用例,有些比其他更快或更慢。当然,这种速度(或缺乏速度)通常要付出一定的代价。简而言之,正是这些差异导致了性能变化。

什么是编程语言?

无论编程语言如何看,它们仍在做同样的事情:电脑做点什么。最终,所有代码行都转换为一系列晦涩的数字(也称为机器代码)。可以说,机器代码之后的所有编程语言(包括将数字映射到可读单词的汇编语言)都旨在简化软件的创建。

可以通过查看<他们为程序员所做的strong> abstract 。基本上,语言本身会处理多少,较低级别的事情将由人工处理。这样会使高级语言更易于编程,因为学习和记住的东西少了。

例如,内存管理。对于某些抽象性较低的语言,程序员必须手动说出手头任务需要多少RAM,然后在完成后释放它。如果他们不这样做,或者发生了一些他们无法解释的事情,那么这种内存使用量可能会越来越大。诸如Java之类的高级语言会自动执行此操作。

话虽如此,但是使用高级语言肯定有一些缺点。即速度。有时,从程序员的控制中获取的收益越多,程序的效率就越低。

例如,可以使用具有自动内存管理功能的语言(通常称为垃圾收集)比没有实现的速度慢。这是因为程序需要时间来检查自身并以特定的时间间隔清除内存。

编译:里程可能会有所不同

通常,用C和C等语言编写的程序据说C ++比大多数人都快。大多数操作系统都是使用它们以及一些更低级别的汇编代码编写的。造成这种情况的主要因素之一是它们被编译(与被解释相比)。

这意味着在运行之前,程序的源首先被翻译成较低的层次:机器代码。生成的产品称为二进制文件(例如DLL文件),它们与相关文件链接在一起以使它们工作,从而创建了所谓的可执行文件。

但是,这样做的一个缺点是它花费时间实际编译此类程序。大型浏览器(例如Mozilla Firefox)可能需要花费半个小时左右的时间。幸运的是,如今,大多数软件已经预先执行了此过程,从而使安装和使用变得更加容易。

由于最终结果是使用计算机可以直接理解的语言编写的,因此往往会很快。将其与解释性语言进行比较,后者将进一步进行。话虽如此,并不是所有的编译语言都是相同的。

要将任何类型的代码翻译成计算机可以理解的东西(机器代码),它需要通过称为的特殊程序来运行。编译器。一种语言可以有多个编译器。例如,GCC(GNU编译器集合)和Clang都可以用来编译用C编写的程序。通常,由于C和C ++的编译器经过了多年的开发和改进,因此据说C和C ++的速度非常快。其他语言并不总是那么成熟。

解释性语言:又一步

如前所述,解释性语言不会事先编译。而是在运行时翻译它们,通常通过称为解释器的单独程序进行。例如,Java程序是通过称为JVM(Java虚拟机)的程序运行的。

由于这些语言不需要事先编译,因此用它们编写的程序通常更易于制作和测试。但是,结果是软件本身可能会明显变慢。口译员逐行执行程序的源代码,这会导致速度下降。随之而来的是,解释器本身也需要一些时间来启动。

由于其解释速度较慢,许多解释语言实际上都使用某种形式的编译来提高其性能。在运行之前,这些程序会被翻译成 bytecode (字节码),这是一种易于翻译的语言。例如,Java和Python都在运行之前进行了此操作,分别创建了CLASS和PYC文件。

基本上,它在易于开发和速度之间有所妥协。它比解释的代码要快,并且比完全编译的对应代码更容易设置。与编译为机器代码的程序相比,字节码还具有更多的可移植性。如果存在用于CPU体系结构的解释器,它将运行。

在某些语言中,还有称为 JIT(即时)编译的东西。基本上,它采用字节码并将其位编译为机器码。顾名思义,这是在程序运行时发生的。这是为了加快执行速度,但要以较慢的首次启动为代价,因为它的某些部分需要时间进行编译。

不要汗水

所有这些都说明了这些差异对于大多数人来说,这并不是真正的问题,尤其是随着计算机的速度每年都在增长。虽然某些编程语言肯定比其他编程语言要快,但真正重要的是它可以完成某些事情。

当然,如果您对编程非常有经验,可以尝试从代码中提高性能。但是,如果您刚刚起步,最好先担心学习动作。毕竟,如果一开始什么都没写,那么考虑一种语言的快慢与慢慢就没关系。

使用正确的工具完成任务也很重要。例如,汇编语言非常低,因此非常适合编写操作系统。

学习编程语言时会考虑哪些因素?

标签: 硬件提示 编程