编程语言的分类

到目前为止,已经编写了数千种编程语言。每个用于某些特定目的。一些编程语言提供较少或不提供硬件的抽象。而有些提供更高的抽象。为了在基于硬件抽象级别的基础上分离编程语言,它们被分类为各种类别。

编程语言基本上分为两大类 - 低级语言和高级语言。但是,还存在另一个称为中级语言的类别。每种编程语言都属于这些类别和子类别之一。

低级语言

低级语言缩写为 LLL,是接近机器级指令集的语言。它们提供较少或不提供硬件的抽象。低级编程语言直接与寄存器和内存交互。因为,用低级语言编写的指令取决于机器。使用低级语言开发的程序取决于机器并且不可移植。

低级语言不需要任何编译器或解释器将源转换为机器代码。汇编程序可以将以低级语言编写的源代码翻译成机器代码。

用低级语言编写的程序速度快,内存效率高。但是,程序员编、调试和维护低级程序是一场噩梦。它们主要用于开发需要直接硬件访问的操作系统,设备驱动程序,数据库和应用程序。

低级语言进一步分为两类:机器语言和汇编语言。

机器语言

机器语言是与硬件最接近的语言。它包含由计算机直接执行的一组指令。这些指令是一系列二进制位。每条指令执行一项非常具体的小任务。用机器语言编写的指令取决于机器,因计算机而异。

示例:SUB AX,BX = 00001011 00000001 00100010 是一个指令集,用于减去两个寄存器 AXBX 的值。

在编程的开始阶段,程序只用机器语言编写。每个程序都写成一系列二进制文件。

在用机器语言编程之前,程序员必须具有关于特定机器的体系结构的额外知识。使用机器语言开发程序是一项繁琐的工作。因为,很难记住不同计算机体系结构的二进制序列。因此,现在在实践中并没有多少人这样做了。

汇编语言

汇编语言是对机器语言的改进。与机器语言类似,汇编语言也直接与硬件交互。汇编语言不使用原始二进制序列来表示指令集,而是使用助记符。

助记符是用于指定计算机指令的简短缩写英语单词。二进制中的每条指令都有一个特定的助记符。它们依赖于体系结构,并且有一组用于不同计算机体系结构的单独助记符。

助记符的例子有:ADDMOVSUB 等。

助记符使程序员容易记住特定指令的二进制序列。像 ADDMOVSUB 这样的英语单词比二进制序列 10001011 容易记住。但是,程序员仍然需要记住不同计算机体系结构的各种助记符。

汇编语言使用称为汇编程序的特殊程序。汇编程序将助记符转换为特定的机器代码。

汇编语言仍在使用中。它用于开发需要直接硬件访问的操作系统,设备驱动程序,编译器和其他程序。

低级语言的优点

  • 使用低级语言开发的程序快速且内存有效。
  • 程序员可以使用低级语言以更好的方式利用处理器和内存。
  • 不需要任何编译器或解释器就可以将源转换为机器代码。因此,减少了编译和解释时间。
  • 低级语言提供对计算机寄存器和存储的直接操作。
  • 它可以直接与硬件设备通信。

低级语言的缺点

  • 使用低级语言开发的程序取决于机器并且不可移植。
  • 很难开发,调试和维护。
  • 低级程序更容易出错。
  • 低级编程通常会导致编程效率低下。
  • 程序员必须具有特定机器的计算机体系结构的额外知识,以便用低级语言进行编程。

高级语言

高级语言缩写为HLL。高级语言类似于人类语言。与低级语言不同,高级语言是程序员友好,易于编码,调试和维护。

高级语言提供了更高级别的机器语言抽象。它们不直接与硬件交互。相反,他们更关注复杂的算术运算,最佳的程序效率和编码的简便性。

低级编程使用机器友好语言。程序员用二进制或汇编语言编写代码。用二进制编写程序是一个复杂而繁琐的过程。因此,使编程更加程序员友好。高级语言的程序使用英语语句编写。

高级程序要求编译器/解释器将源代码翻译成机器语言。我们可以将用高级语言编写的源代码编译成多种机器语言。因此,它们是与机器无关的语言。

今天,几乎所有程序都是使用高级编程语言开发的。我们可以使用高级语言开发各种应用程序。它们用于开发桌面应用程序,网站,系统软件,实用软件等等。

高级语言基于执行模型分为两类:编译或解释语言。

高级语言的优点

  • 高级语言对程序员友好。它们易于编写,调试和维护。
  • 它提供了更高级别的机器语言抽象。
  • 它是与机器无关的语言。
  • 简单易学。
  • 不易出错,易于查找和调试错误。
  • 高级编程可提高编程效率。

高级语言的缺点

  • 将源转换为机器代码需要额外的转换时间。
  • 高级语言写的程序执行速度比低级语言写的程序执行速度要慢。
  • 与低级程序相比,它们通常具有较低的内存效率。
  • 无法直接与硬件通信。

低级语言和高级语言之间的差异

程序速度

低级语言的程序以二进制或汇编语言编写。它们不需要任何汇编或解释。它直接与寄存器和内存交互。因此,它们比高级语言相对快。

高级语言使用英语语句编写程序。因此,它们需要编译器或解释器将源转换为机器语言。它们不直接与硬件交互。因此,它们比低级语言慢。

内存效率

低级语言具有内存效率。它们通常消耗更少的内存。

高级语言不具有内存效率。它们通常在特定的运行时环境中运行。还有一些其他程序同时运行以提高程序的最佳效率,从而消耗内存。因此,高级语言的总体内存消耗比低级语言更高。

难易度

低级语言是机器友好的语言。要用低级语言编写程序,我们必须知道低级指令集的二进制或助记符。记住不同架构的各种指令集几乎是不可能的。因此,低级编程难以学习。学习低级语言需要有关特定机器架构的额外知识和经验。

高级语言是程序员友好的语言。高级语言的程序使用英语语句编写。这比低级二进制文件或助记符更容易记住。因此,高级编程很容易学习。

可移植性

低级语言包含低级计算机指令集。这些指令取决于机器,并且对于不同的体系结构是不同的。因此,开发的程序也依赖于机器并且不可移植。

高级语言使用英语语句编写程序。它们使用编译器或解释器进一步转换为机器语言。对于不同的机器架构,存在单独的编译器或解释器。这将源转换为特定的机器语言。因此,高级语言与机器无关并且是便携式的。

抽象化

低级语言提供较少或不提供硬件的抽象。它们是最接近硬件的语言。它们直接与计算机寄存器和内存交互。

高级语言提供了对硬件的高级抽象。它们运行在机器语言之上。它们不直接与计算机寄存器和内存交互。它们与硬件交互时有一层操作系统和其他软件。

调试和维护

低级语言更容易出错。从小的语法错误到大内存泄漏。错误检测和维护是一个繁琐且耗时的过程。

高级语言不易出错。使用编译器或解释器几乎可以识别所有语法错误。它们通常易于调试和维护。

额外的知识和经验

低级语言取决于机器。在真正为该计算机编写程序之前,他们需要具有特定计算机体系结构的先验知识。

高级语言与机器无关。他们不需要任何计算机体系结构的先验知识。

应用

低级语言直接与硬件交互。它们提供的硬件非常少或没有抽象。但是,与高级语言相比,它们的速度非常快。因此,它们通常用于开发操作系统和嵌入式系统。

高级语言提供了更高级别的硬件抽象。如今,几乎所有软件都是使用高级语言开发的。它用于开发各种应用程序,如桌面应用程序,网站,实用软件,移动应用程序等。

总结

低级语言 高级语言
它们比高级语言更快 它们相对较慢
低级语言具有内存效率 高级语言不具有内存效率
低级语言很难学习 高级语言易于学习
低级编程需要额外的计算机体系结构知识 高级编程不需要任何计算机体系结构的额外知识
它们取决于机器并且不便携 它们与机器无关且便携
它们提供较少或不提供硬件的抽象 它们提供了硬件的高度抽象
它们更容易出错 它们不容易出错
调试和维护很困难 调试和维护相对容易
它们通常用于开发系统软件(操作系统)和嵌入式应用程序 它们用于开发各种应用程序,如桌面应用程序,网站,移动软件等