【发布时间】:2009-06-02 06:51:47
【问题描述】:
我只是对那里的所有语言类型有点困惑。与面向对象/过程的区别相比,高级/低级语言区别有什么区别?很多类比看起来都很相似。
【问题讨论】:
标签: oop procedural-programming
我只是对那里的所有语言类型有点困惑。与面向对象/过程的区别相比,高级/低级语言区别有什么区别?很多类比看起来都很相似。
【问题讨论】:
标签: oop procedural-programming
高/低级别的区别更多的是抽象而不是范式。通常,您越“低”,您就越需要了解正在运行的机器——它的内存、文件系统,甚至处理器指令集。
高级语言在您和机器之间放置了一层抽象。它处理血腥的细节。这既好又坏。抽象消除了一些担忧,但也消除了控制。
高级语言可以是过程式的、面向对象的、函数式的等等……
低级语言可能不提供像面向对象这样的概念,因为面向对象是一种抽象。
【讨论】:
高级/低级是指语言与汇编程序和机器代码的感知“接近性”(汇编程序是低级的,C 被视为低于 C++ 或 Java 等)。
OO 和过程式编程是为支持某种程序设计方式(称为编程范式)而提供的语言工具。它们与语言是高级还是低级无关,因为 OO 语言往往不是低级的,因为汇编程序不了解对象和类。还有很多其他范例,例如函数式编程。
【讨论】:
不是真的。
例如,c++ 是面向对象的,它是相当低级的。
【讨论】:
“高级”和“低级”是人们可能不同意的有些模糊的术语。您可以通过您必须编写多少代码来完成特定任务来查看编程语言提供的抽象量,然后将需要较少代码的语言称为更高级别。当然,那么你需要一种衡量代码大小的方法。
【讨论】:
这两个轴(“范式”和“级别”)之间不一定有任何因果关系,但我认为相关性是逻辑和函数式语言往往是最高级别的,紧随其后的是面向对象的语言,过程语言通常是较低级别的。
这不是问题的一部分,但我也认为相关的动态类型语言往往比静态类型的语言更高级。
我认为对于某人来说,在三个轴上绘制编程语言的三维散点图可能是一个有趣的可视化:范式(逻辑/功能/oo/过程)类型(静态/动态)和级别(参见例如'代码完成' 用于衡量级别的各种指标)。
【讨论】:
我认为这是一个很好的类比。
面向对象的语言确实往往比纯函数语言的层次更高。看看 c++ 和 c。是的,正如 docesam 所提到的,c++ 仍然是相当低的级别,但是 c++ 仍然比它的纯功能哥哥 c 更高级别。
不,它并不总是那么简单,因为面向对象并不是使语言成为高级语言的唯一因素,但它绝对是一个指标,因为面向对象意味着对真正的原始机器指令有更多的抽象。
但面向对象不足以确定哪种语言是最高级别的。
我会看以下内容:
【讨论】:
我喜欢这样说 - 这一切都归结为机器指令集。因此,无论某些东西表示多么高级,它仍然归结为机器指令。因此,高级语言是思想的抽象,而低级语言则更接近硬件。
类比是相似的,因为它都归结为一件事 - 机器代码!
【讨论】: