2010-08-12 93 views
30

我听说过围绕描述语言而抛出的这些术语,比如C不是低级别的语言,C++是中级别的,Python是高级语言。我知道它必须采用代码编译的方式,以及如何编写代码。但是我想知道的是将语言定义为这三类中的一种?这些绝对的类别,还是程序员用来向对方描述语言的一般想法?低,中,高级语言,有什么区别?

+0

[可能出现[哪些编程语言不被认为是高级别的]的重复?(http://stackoverflow.com/questions/2624781/which-programming-languages-arent-considered-high-level) – danben 2010-08-12 13:35:26

+0

它们是相似的问题,但不同的角度。他想知道为什么谈论这些事情仍然相关,我想要一个术语的定义。看看这两种接受的答案都说明了我们之间的区别。另外我是一个社区wiki。 :3我更感兴趣让每个人都对定义达成一致。 – Narcolapser 2010-08-12 13:58:17

回答

57

是的,他们只是一般条款。这与抽象有关,与计算机的实际操作有多接近。

这里的编程语言从非常低到非常高的水平的列表:

  • Machine Code很可能被认为是最低级的编程语言。

  • Assembly language是在告诉处理器该做什么的水平。机器代码仍然有一个转换步骤。

  • C是汇编程序的一个进步,因为您可以用稍微抽象的术语指定要执行的操作,但是您仍然非常接近金属。

  • C++做了C能做的所有事情,但增加了将事物抽象到类中的能力。但是没有机会在C中做所有事情(比如Java中的指针操作[感谢Joe!])。他们有垃圾收集,但你必须用C++手动完成。

  • Python/Ruby甚至更​​高级别,让你忘记了很多细节,你需要指定像Java或C#的东西。

  • SQL是更高的水平(这是声明)。只要说“给我所有表格中按年龄排序的项目”,它就会为您提供最有效的方法。

+0

lisp怎么样?我会把这比SQL更高。 另外C#有指针操作(不安全块)。 – 2010-08-12 13:32:24

+2

@Joe D我认为这是有争议的(lisp比SQL更高级,我的意思是......) – Skilldrick 2010-08-12 13:35:21

+3

@Joe D我会把lisp放在与Python相同的级别。你仍然必须使用条件和函数等编程结构来做东西......除非你使用的是老式的LISP机器,在这种情况下,它的水平很低B-) – 2010-08-12 13:50:53

4

它们不是绝对的。它们都与当时在工业中正在使用的其他语言有关。例如,组装被认为是中等水平的时候。

'等级'本质上是衡量程序员如何从实际的基于硬件的操作中抽象出来的度量。在低级语言中,您可能不得不关注实际的内存位置,而在高级别中,您只需创建变量并让操作系统处理内存。

正常的CPU处理32位或64位指令。以最简单的形式,将其视为一个32 1和0,这是处理器实际解释和执行的内容。直接写(机器码)将是'最低级'。

1

低水平意味着更接近机器,因此更困难,更强大。您获得的级别越高,机器越多,您获得的“类似英语”级别越高,但您将失去很多能够控制机器细节的功能。更高级别的语言通常倾向于更多地保护您,并且有更多的预防措施和检查,而低级语言可以信任您,可以这么说,并让您自行承担风险。

+0

英语喜欢不是一个很好的指标,因为那样你就可以将COBOL作为一种高级语言... – 2010-08-12 13:51:44

+0

power vary的定义比如lisp更强大吗?这取决于你的权力意味着什么,如果权力意味着机器的所有功能都可用,那么组装功能更强大。但是,如果它意味着更多的代码可以用更少的代码行来表示(在这种情况下,更少),那么lisp显然更强大。 – 2010-08-13 15:03:44

1

术语中级语言是我从未听说过的。

“低”和“高”是指如何“接近”您正在编程的机器。最低级别是机器(二进制)代码。接下来(仍然被认为是低)是汇编器。更高层次的语言涉及更多的象征意义和结构,它们应该更接近人们通常的想法。 C(以及某种程度上的C++)声誉有点像混合低/高级别,因为它有许多高级语言的构造,但也有低级语言的指令(例如转换),但通常不是高级语言。

+1

中级通常是C/C++,也许是D. – 2010-08-12 13:35:55

8

在计算机科学中,低级语言是一种编程语言,从计算机的指令集架构提供很少或没有抽象。 “低”一词是指语言和机器语言之间很少或不存在的抽象量;因此,低级语言有时被描述为“接近硬件”。 低级语言不需要编译器或解释器来运行;为其编写语言的处理器能够运行代码而不使用这些中的任何一个。

通过比较,高级编程语言将计算机体系结构的执行语义与程序的规范隔离开来,使开发程序的过程变得更简单和易于理解。

中层语言站在上面两个

+0

这是迄今为止我看到的最清晰,最简洁的答案。 – RavB 2010-08-12 13:46:23

+5

@baultista:是的,这是因为它来自维基百科:http://en.wikipedia.org/wiki/Low-level_programming_language – Skilldrick 2010-08-12 13:47:55

+0

这是自从系统与应用程序争论以来我听到的最差的分界线。大会需要一个“翻译器”,它被称为一个可怕的汇编程序。您可以使用虚拟机来定位旧版编译语言不理解的系统的各个方面。 – cdcdcd 2017-03-17 22:24:31

13

非常低的水平之间:机器码

低电平:汇编,第四

中等水平:C,C++,最系统的编程语言

中/高级别:D,Go,垃圾收集系统编程语言

High lev EL:Java和C#,大多数解释性语言

更高的水平:Lisp的方言

最高水平:SQL,声明性编程语言

如果有别的添加,请告诉我。

+0

你也可以把Go放在中/高层。 – Skilldrick 2010-08-12 13:39:42

+0

Lisp可以是​​声明式的,但你可以做序言式逻辑编程,即使是 – Anandamide 2016-07-06 20:18:47

1

从低到高,您可以按以下方式对语言进行分类。

机器代码 - >汇编语言 - >编译语言 - >解释语言

请记住,这些都不是绝对的黑与白的定义,但灰色色调相当。这比规则更重要。

将机器代码视为由本地平台理解的1和0的长字符串。考虑这个你的基线......你可以拥有的最低“水平”。

汇编语言可以被认为是这个的象征性表示。我相信汇编代码指令和机器代码指令之间有1:1映射。这是你的低级语言。例如,Java和C++都是编译语言,但许多人认为C++是比Java低级的语言,因为它暴露了低级别的系统访问,而Java则在受保护的环境(虚拟机)中运行。请记住,编译后的语言在执行之前会被编译(如果您愿意的话)转换为机器码。 C也是一种编译语言,但会被认为比Java和C++都要低。我们会说C和C++是低级语言,因为它们提供(相对)很少的硬件抽象和直接内存管理。实际上,它们会处于低位和中位之间,因为您很快就会看到。

我们将调用Java和C#(.NET)中级语言,因为它们具有自动内存管理(垃圾回收),大量的高级抽象(IE对象......但C++支持对象。规模被认为是松散的定义?)

解释器驻留在内存中,直接读取源代码。这些是高级语言。 Python,Perl,Javascript和PHP都是高级语言的例子。

14

低电平=长的开发时间+非常快的可执行文件

高水平=更短的开发时间+慢可执行文件

中层是两个

+0

我也不知道是谁投了下来,当你考虑上面的答案时,它实际上是一个很好的声明。 – Narcolapser 2010-11-06 04:12:19

+0

+1我同意Narcolapser-这绝对是一般化的,但严肃,真实。确实是 – DMan 2010-11-06 18:14:52

+3

。人们不会考虑答案,他们只是投票:) – docesam 2010-11-09 11:11:55

0

℃之间为中等水平的语言BECOZ 我们可以使用汇编语言中的代码只有细微的差别 指针使它强大(如果指针在c中删除,那么它将考虑在低级别) 它的便携功能使中间lavel 所以我们可以说它是中级语言。

0

它都是相对的......“等级”反映了抽象的数量。

0

一旦你添加了一个编程语言的层次的谱,你添加细微的定义。显然,机器代码和组装是依赖于机器的。理论上C和C++是独立于机器的,但实际上并不普遍。在C这样的事情,如对齐需要考虑,你可以总是在C和C的C子集中管理堆栈)通过一个指针和一个初始化变量 - 如果你足够疯狂 - 这样(x86)rsp从未使用过。所以C,是的,它是中等水平。其他一切都是高层次的一些超高层次。

0

低级语言非常接近机器语言,可能是二进制或RTL。很难写,很快执行。它可以与硬件进行交互,高级编程语言非常易于编写,但可以在编译后执行。

相关问题