我以前听说过这些描述语言的术语,比如C不是低级语言,C++ 是中级语言,Python 是高级语言。我知道它必须与代码的编译方式和编写方式有关。但我想知道的是什么将一种语言定义为这三个类别之一?这些是绝对类别,还是程序员用来相互描述语言的一般概念?
12 回答
是的,它们只是笼统的术语。这与抽象有关,以及您与计算机实际所做的事情有多接近。
以下是从非常低级到非常高级的编程语言列表:
低级 = 长开发时间 + 非常快的可执行文件
高级=更短的开发时间+更慢的可执行文件
中级介于两者之间
非常底层:机器码
低级:汇编程序,Forth
中级:C、C++、大多数系统编程语言
中/高级:D、Go、垃圾收集系统编程语言
高级:Java、C#、大多数解释型语言
更高层次:Lisp 方言
最高级别:SQL、声明性编程语言
如果还有什么要补充的,请告诉我。
在计算机科学中,低级编程语言是一种对计算机指令集架构提供很少或不提供抽象的编程语言。“低”一词是指语言和机器语言之间的少量抽象或不存在抽象;正因为如此,低级语言有时被描述为“接近硬件”。 低级语言不需要编译器或解释器即可运行;编写该语言的处理器能够在不使用其中任何一个的情况下运行代码。
相比之下,高级编程语言将计算机体系结构的执行语义与程序的规范隔离开来,从而使开发程序的过程更简单、更易于理解。
中级语言介于上述两者之间
它们不是绝对的。它们都与当时工业中使用的其他语言有关。例如,曾经有一段时间,组装被认为是中级的。
“级别”本质上是衡量程序员与实际基于硬件的操作的抽象程度。在低级语言中,您可能必须关心实际的内存位置,而在高级语言中,您只需创建变量并让操作系统处理内存。
普通 CPU 处理 32 位或 64 位指令。以最简单的形式,将其视为连续的 32 个 1 和 0——这就是处理器实际解释和执行的内容。直接编写(机器代码)将是“最低级别”。
低级意味着更接近机器,因此更困难,更强大。您获得的级别越高,您就越远离机器和“类似英语”,但是您会失去很多能够控制机器细节的能力和功能。高级语言通常也更倾向于保护你,并且有更多的预防措施和检查,而低级语言可以说信任你,让你自担风险。
中级语言一词是我从未听说过的。
“低”和“高”是指您在编程中与机器的“接近”程度。最低级别是机器(二进制)代码。接下来(仍然被认为是低级)是汇编程序。更高级别的语言涉及更多的象征意义和结构,这些结构应该更接近人类通常的思维方式。C(和有些 C++)在某种程度上是混合低/高级的声誉,因为它有许多高级语言的结构,但也有指令(例如移位)是低级语言但通常不是高级语言.
从低到高,您可以将语言分类如下。
机器码 --> 汇编语言 --> 编译语言 --> 解释语言
请记住,这些不是绝对的黑白定义,而是灰色阴影。这与其说是规则,不如说是指导方针。
将机器代码视为原生平台可以理解的一长串 1 和 0。考虑这是您的基线……您可以拥有的最低“级别”。
可以将汇编语言视为对此的符号表示。我相信汇编代码指令和机器代码指令之间存在一对一的映射。这是你的低级语言。
例如,Java 和 C++ 都是编译语言,但许多人会认为 C++ 是一种比 Java 低级的语言,因为它公开了低级系统访问权限,而 Java 在受保护的环境(虚拟机)中运行。请记住,编译语言在执行之前会被编译(转换,如果你愿意的话)为机器代码。C 也是一种编译语言,但被认为比 Java 和 C++ 都低。
为了我们的缘故,我们会说 C 和 C++ 是低级语言,因为它们提供(相对)很少的硬件抽象和直接内存管理。实际上,它们介于中低之间,您很快就会看到。
我们将 Java 和 C# (.NET) 称为中级语言,因为它们具有自动内存管理(垃圾收集)、大量高级抽象(IE 对象......但 C++ 支持对象。你明白为什么规模被认为是定义松散?)
对于解释型语言,解释器驻留在内存中并直接读取源代码。这些是高级语言。Python、Perl、Javascript 和 PHP 都是高级语言的例子。
C是中级语言BECOZ我们可以在汇编语言中使用代码,只有细微的差别指针使其功能强大(如果在c中删除指针,则它将在低级考虑)它的可移植特性使中级语言成为中级语言,因此我们可以说它是中级语言。
这都是相对的……“级别”反映了抽象的数量。
一旦您添加了一系列编程语言级别,您就会为定义添加细微差别。显然机器代码和汇编是机器相关的。C 和 C++ 理论上是独立于机器的,但实际上并不是通用的。在 C 中,需要考虑对齐之类的事情,并且您始终可以通过指针和单个初始化变量来管理 C 中的堆栈和 C++ 的 C 子集)——如果你足够疯狂的话——这样(x86)rsp从未使用过。所以C,是的,它是中等水平。其他一切都是高水平的一些超高水平。
低级语言非常接近可能是二进制或 RTL 的机器语言。很难写,而且执行起来非常快。它可以与硬件交互,高级编程语言非常容易编写,但可以在编译后执行。