哪种编程语言不被认为是高级的?

时间:2010-04-12 19:27:21

标签: programming-languages low-level high-level

在信息学理论中,我一直听到并阅读有关高级和低级语言的内容。

但我不明白为什么这仍然相关,因为除了今天使用的汇编程序之外没有任何(相关的)低级语言。

所以你得到:

低电平

  • 汇编

绝对不是低级

  • C
  • BASIC
  • FORTRAN
  • COBOL
  • ...

高级别

  • C ++
  • 红宝石
  • 的Python
  • PHP
  • ...

如果汇编程序是低级别的,你怎么能把例如C放到同一个列表中。我的意思是:与汇编程序相比,C是非常高级的。即使对于COBOL,Fortran等也一样。

  • 那么,如果汇编程序真的是唯一的低级语言,为什么每个人都不断提及高级和低级语言呢?

8 个答案:

答案 0 :(得分:53)

你会发现

  

我们坚持的许多真理都取决于我们自己的观点。

对于C程序员,Assembler是一种低级语言。 对于Java程序员来说,C是一种低级语言,依此类推。

我怀疑用{1}和0编程first stored-program computer的人会认为汇编程序是一种高级语言。这都是相对的。

(引自Return of the Jedi

答案 1 :(得分:7)

根据Wikipedia,低级语言是机器代码和汇编语言。

来自消息来源:

  

在计算机科学中,一个低级别的   编程语言是一种编程   提供很少或没有的语言   从计算机中抽象出来   指令集架构。这个单词   “低”指的是小或   不存在的抽象量   在语言和机器之间   语言;因为这个,低级别   语言有时被描述为   “靠近硬件。”

然后,回答:

  

那么,如果汇编程序真的是唯一的低级语言,为什么每个人都会继续提及高级和低级语言。

我不知道“每个人”是谁,但我想冒昧地猜测,当高级语言不像现在这样平常时,谈论低级与高级语言更为相关level(因为有相对大量的程序员编写汇编代码)。在现代,它是一个不那么重要的区别。就个人而言,我很少听到人们使用这些术语,除了区分大会与否(除非那些时候你可能会听到有人提到Python引用C或C ++作为低级别,但这不符合原始定义的精神)。

答案 2 :(得分:7)

你问的是一个相对主观的问题;这是一个关于术语,白话和观点的问题。

例如,Lisp是高级还是低级语言?如果实现在Lisp机器上运行怎么办?

通常,当人们试图建立从低级到高级的频谱时,他们试图量化的是“与硬件的接近程度”,而不是“抽象”的程度。

实现与硬件接近的品质:

  • 程序员直接控制数据的内存布局,并在运行时访问数据的内存地址。
  • 数学运算是根据硬件定义的,或者是松散定义的,以符合不同类型的硬件。
  • 可能有一个提供动态内存分配的库,但动态内存的使用是手动的。
  • 字符串操作期间的内存管理是手动的。

逆向质量,这些质量可以算作实现从硬件中抽象出来的:

  • 程序员没有对数据地址的运行时访问(引用而不是指针)。
  • 数学运算是以不与特定硬件相关的特定术语定义的。 (例如,ActionScript 3支持Number类型,该类型从整数自动转换为浮点而不是经历溢出。)
  • 动态内存管理由环境处理,可能通过引用计数,垃圾收集或其他自动内存管理方案。
  • 字符串操作期间的内存管理始终对程序员隐藏,并由环境处理。

与运行它的硬件相比,其他特性可能会使语言非常抽象:

  • 声明式,基于搜索的语法。 (例如Prolog)

考虑到这些因素,我会修改您编写的频谱,如下所示:

最低级别:

  • 相关平台的汇编语言。

具有比汇编更高级别的流量控制的低级语言:

  • C,C ++
  • 帕斯卡

高级语言:

  • FORTRAN
  • COBOL
  • 的Python
  • 的Perl

最高级语言:

  • PROLOG
  • 的Python
  • 方案

Python意图出现两次 - 它根据代码的编写方式跨越一部分频谱。

答案 3 :(得分:4)

作为低级别,我会补充:

  • .NET IL
  • Java JVM
  • 在VB6
  • 等环境中使用的其他P代码

答案 4 :(得分:3)

语言的“水平”是移动目标。 1973年,PL / I被认为是一种高级语言。今天,C被认为(至少是语言专业人士)是一种低级语言[见脚注]。一些原因:

  • 公开机器级别的数字表示
  • “整数”算术可以溢出
  • 对字符串没有真正的支持,或者至少字符串不是一流的
  • 手动内存管理
  • 地址算术
  • 不安全

高级语言可能包括

  • 支持独立于目标计算机的整数类型
  • 除非机器内存不足,否则默认整数算术永远不会溢出
  • 将字符串作为第一类值,例如,使用
  • 内置的连接
  • 无地址算法的自动内存管理
  • 安全

根据此定义,某些候选人可能是“高级语言”,可能包括Icon,Scheme,Smalltalk和一些您喜欢的脚本语言。

在我年轻的学者和恐龙漫游地球的那一天,人们将Icon称为“非常高级语言”。就在15年前,你甚至可以参加一个关于超高级语言的学术研讨会。但是这个术语已经不再使用了。

  

为什么每个人都不断提及高级和低级语言?

即使“高”和“低”之间的差异不断变化,但上面列出的区别仍然很重要。并且有很多许多的区别,“高”和“低”这两个词可以是一个有用的简写。但对于愤世嫉俗者而言,高级语言看起来至少与我最喜欢的语言一样强大,而低级语言就是其他所有语言。换句话说,“水平”很容易退化成纯粹的名字。

脚注:很难找到专业会议上使用术语的引文,特别是当专业人士不使用“低级别”和“高级别”这两个术语时,因为他们并非如此技术。但danben询问了引用,我发现了一对:


P.S。不要过多地依赖维基百科来获取有关编程语言的好信息,特别是如果维基百科参考文献没有引用任何参考文献或来源

答案 5 :(得分:0)

纯粹在这里猜测,但这可能是一种语言转换的情况,即低级和高级语言之间的区别正逐渐在人们的脑海中演变为托管语言和非托管语言之间的区别,键入和非类型语言等。 (至少在人们使用术语的方式上)。

答案 6 :(得分:0)

在很大程度上,“低级别”和“高级别”不是二进制类别,而是连续统一体。有些语言显然是低级的(汇编,机器代码),但除此之外,实际上只有“更高级别”和“更低级别”。

正如我所看到的,“低级”语言需要看起来更像计算机体系结构的代码,而“更高级”语言则接受看起来更像问题结构的代码。但是,对于一个问题,语言可能是高级别的,而对另一个问题则是低级别的。

答案 7 :(得分:0)

低电平 二进制 汇编

ET IL Java JVM 在VB6等环境中使用的其他P代码

绝对不是低级

Ç BASIC FORTRAN COBOL 蟒蛇 Perl的 帕斯卡

高级别 C ++ 红宝石 蟒蛇 PHP PROLOG 方案