C是中级语言吗?

时间:2010-05-25 12:34:27

标签: c programming-languages

在编程语言讨论中,我们会听到诸如低级,中级和高级等术语。这些如何确定? C会被视为中级语言吗?

13 个答案:

答案 0 :(得分:23)

低,高,低等级都只是模糊的术语,背后没有确定性因素。传统上,低级语言指的是机器代码和程序集,而高级语言指的是其他所有语言。最近,我们将“非常高级别”用于脚本语言(任何解释而不是编译)。我从未听过“中间”用于任何事情。

也就是说,你会听到很多关于C或C ++是低级语言还是高级语言的争论,因为有些人更倾向于认为C / C ++是低级别的,因为它们与其他语言的相对位置( 25年前,这是闻所未闻的。除非你同意低级别或高级别的定义,否则它在很大程度上毫无意义。因此,您可以轻松地提出“中级”的定义,然后使用它来确定C是否计为中级。

答案 1 :(得分:5)

我发现这是高级别和低级别分类之间存在这种偏差的原因。

  

C通常被称为中级   计算机语言,因为它是一个   组合的元素   高级语言与   汇编语言的功能主义。

     

高级语言:

     

高级编程语言是   对某些人来说,这是一个更加用户友好的   范围独立于平台,和   从低级计算机抽象   处理器操作,如内存   访问。

     

低级语言:

     

低级编程语言是一种   一个更具机器特性的,和   从计算机处理器操作   例如内存访问是直接的   依赖

礼貌:http://www.cfanatic.com/showthread.php?s=cfa39a622e72217cce1fb9118a90fd79&t=130

答案 2 :(得分:2)

如果从功能点的角度来看它,它将是从中到低的水平。

答案 3 :(得分:2)

虽然术语很模糊,但我认为C是一种中低级语言。你有非常低级的功能(手动内存访问,指针算术)和非常少的抽象 - 它几乎字面上转换为汇编。正如维基百科所说,C++是一种典型的中级语言,因为你对C的低级访问与面向对象,模板甚至一些函数式编程等抽象相结合。

答案 4 :(得分:1)

使用中级语言是因为你可以非常低,进行汇编,但它也包含更高级语言的元素或抽象

但我同意danben ..背后没有确定性因素......

答案 5 :(得分:1)

我在C ++之前的旧C书是围绕C作为中级语言。但那是在Java,.NET,Ruby,Python等出现之前。我会说(模糊)边界已经有所改变,因为像Ruby / Python这样的高级语言变得更加先进。

C只比Assembly高出一步,但在C之上你有C ++,然后是Java / .net,然后是Ruby / Python。所以我认为C现在是一种低级或低级中级语言,因为你可以很容易地将它映射到asm /机器代码。我会说C ++是一种中级语言,Java / C#中高,Ruby / Python高。

答案 6 :(得分:1)

C通常被称为便携式程序集的人可以在程序集中进行编程。现在,向同一群人询问C是否过多或过少的抽象远离装配,你会看到腐烂的水果开始飞起(好吧,也许是好水果,取决于可用的东西)。

您引用的“级别”只是您与已编译的1和0堆之间的抽象量。有些人可能会说数学在C语言中被很好地抽象化,而字符串只是很难处理。

从本质上讲,它实际上取决于你使用C做什么。我觉得它不能归为一个整体。

答案 7 :(得分:0)

我认为C仍应被归类为高级语言。与装配相比,它确实很高。

它有一个循环,它产生巨大的差异,而不是试图用跳转语句滚动自己。

尝试在8位微控制器上编写汇编,然后跳转到使用C.您很快就会意识到它们之间有多远。

编辑:从什么时候开始有中级语言这样的东西?中等水平与什么相比?

答案 8 :(得分:0)

从使用的角度来看,与C ++相比,C提供的语言语法,语义和设施较少。 C是比C ++更低级的语言。

从功能的角度来看,如果一种语言可以在卓越的基础设施(例如Windows SDK C API)的帮助下提供强大的功能,我认为它实际上可以称为“高级”语言。

脚本语言提供了编程语言的另一种用法:解释而不是编译。虽然它的功能有限。

因此,你需要它,你使用它。越好,你享受的水平越高!

答案 9 :(得分:0)

C是一种高级语言,因为在一行C代码和等效的机器代码之间几乎没有一对一的对应关系。与C ++或Java等语言相比,C提供的抽象非常少;除了字节流,数组和指针(其中,是的,抽象),C工具包中没有很多东西。

答案 10 :(得分:0)

似乎语言除以generation

这些世代被广泛认为是(定义具有更大的方差,你获得的更高):

  1. 机器语言。
  2. 汇编语言(只是机器语言的人类可读版本)
  3. 结构化语言(FORTRAN,COBOL,C,C ++,C#,Java,Python等......)
  4. 用于在特定区域(PL / SQL,R,FoxPro等)构建应用程序的语言
  5. 在特定约束条件下工作的语言,而不是算法。这些通常用于AI。 (Prolog等......)
  6. 说了这么多,有时会说第四代包含面向对象的语言。

答案 11 :(得分:0)

我将回答另一个问题:C ++是一种高级语言吗?

不是:语言本身为您提供了类,运算符重载和模板。这只是结构,函数和宏的语法糖。例如,Lightblue BREW是BREW(面向对象的C)和C ++之间的零开销桥梁,因为BREW 碰巧与C ++二进制兼容!

Cfront是C ++的原始“编译器”:它将其预处理为C. original compilers for Objective-C也只是预处理器。

它是:您可以编写使用“高级”功能(内存管理,垃圾回收,lambda expressions,...)的代码,而无需担心“低级”细节(忘记免费)。那里有很多C ++库(例如Boost)。

通过它所具有的功能对语言进行分类而不是给它一个高级别的数字更有用。例如,解压缩.bmp(“DIB”)标题:

  • C:容易。只需使用结构。您可能不得不担心奇怪架构的字节顺序,打包和可移植性。
  • C ++:使用结构。如果你很聪明,结构也可以以最便携的方式处理字节顺序和包装。
  • Java:你必须计算头部的偏移量。如果它是一个字节数组,你必须自己进行屏蔽和位移。 (如果它是一个nio缓冲区,你只需设置字节序。)
  • REALbasic:这是一个MemoryBlock。你必须自己计算头部的偏移量。您可能不得不担心字节顺序,具体取决于您是否使用MemoryBlock扩展插件。
  • Python:只是import struct。这些字段都没有名字,所以你必须跟踪它们的顺序,所以它比计算偏移量略微好。

在那里,一个简单的问题,其中C ++似乎是最高级别的语言而C是第二位。

我还会注意到“低级别”功能的存在并不会使语言成为低级别。在C#中,您可以编写“非托管”代码并使用指针算法。在Python中,您可以import ctypes调用C或C ++函数,import objc调用Objective-C,失去所有类型安全性(我在编写快速测试程序时这样做,因为它是比重复编译和运行容易得多。

此外,指针运算不需要是低级的。指针通常实现为内存地址,而C ++引用通常实现为指针,但没有理由不能更改底层实现以使指针边界检查,甚至是经过类型检查的。

答案 12 :(得分:0)

我认为这取决于用户如何使用它。高级语言是提供抽象的语言,低级语言是使用OS提供的资源(系统调用)的语言。这样,如果程序员是使用系统调用来执行某些任务然后c是一种低级编程语言,如果同一个程序员使用bash命令或其他给出编程视图的函数,则c是高级语言。所以C是高级和低级编程语言