有哪些不同的编程语言概念以及哪些语言以纯粹的方式显示它们

时间:2010-11-02 21:18:12

标签: programming-languages paradigms

我不是语言专家,但我最近学习语言并试图概述主要概念和“他们的”语言。这类似于another question about books。首先,主要的编程语言概念是什么,例如

  • 结构化
  • 程序
  • 面向对象
  • 面向对象 - 基于原型(例如Java Script)
  • 功能性(例如Haskell)
  • 逻辑导向(例如Prolog)
  • meta(如果它是一个纯粹的概念?)
  • 基于堆栈(例如Forth)
  • 基于数学/面向数组(例如APL)
  • 声明
  • 拼接(例如PostScript)
  • (绝对不完整的清单......)

第二,为了更好地理解这些概念,基于/实现其核心概念的编程语言最自然和纯粹的是什么?

  • 例如,Java是OO,但它不是一个很好的例子,因为原子不是纯粹的OO。
  • Lisp是一种已知的功能语言,但它是多范式的,所以它不是纯粹的。但Lisp可能是“基于列表”的纯粹实现(如果它算作概念)。
  • 是否有一种结构化的语言(没有GOTO)但不是程序性的? (也许是XSLT v1.x)

3 个答案:

答案 0 :(得分:8)

你在这里寻找的术语是“编程范式”,那里有a whole lot of them。您可以从维基百科页面及其后续链接中获取支持每种语言的语言列表。

对于任何这些的“纯粹”演绎,这更难,因为它取决于你正在寻找什么样的纯度。

  • 对于纯粹的结构化(在这里“纯粹”的任何足够松散的定义),你可以查看,例如,Modula-2
  • 对于纯粹的面向对象,如果你想要统一处理所有事情(在最常见的定义下并不是必需的话),那么你主要关注的是Smalltalk及其类似的东西!或者你正在寻找像这样的语言如果您接受该标题下的原始类型,则JavaEiffel
  • 对于功能,你最有可能在Haskell
  • 对于逻辑编程,原型语言是Prolog,但它并不是纯粹的。我所知道的唯一(大部分)纯逻辑语言是Mercury,只有当你将其功能块视为与其逻辑块基本兼容时才会这样。

......依旧等等。你明白了。

答案 1 :(得分:2)

我认为Pascal是规范的程序语言。

我也认为Lisp(具有讽刺意味的不是ML)是规范的“元”语言。

首先,宏是一个程序片段,它修改表示程序片段的数据结构---所以你使用该语言来调整语言。其次,通常的做法是编写自托管解释器,传统上称为元周期评估员:它们是编程和运行它们的程序。

当然,任何其他语言都可以做到这一点。在Python中,您可以访问python编译器,PyPy是python中的python实现。但是,我认为Lisp是实现这一目标的最强传统。

但我是Lisp局外人,所以我知道什么......'希望 - 这有帮助; - )

答案 2 :(得分:0)

感谢 JUST MY正确的观点的答案,我被指向了正确的方向。就我发现到现在为止,我将把范例列表与纯语言一起给出:

  • 势在必行
    • 非结构化---早期BASIC,汇编
    • 结构化---?
    • 程序---?
    • modular --- Modula-2,也许Pascal
    • 的面向对象的
      • 基于类的--- Smalltalk
      • 基于原型--- Self,也许是Java Script,Lua
  • 声明式--- SQL,正则表达式,CSS
    • 逻辑---水星,也许是Prolog
    • 功能--- Scheme,Haskell
      • 隐性/点 - 自由
        • concatenative --- Joy,Cat

在另一个“轴”上我们有

  • 标量---大多数
  • 阵列--- APL

不知道把它放在哪里:

  • 基于堆栈--- Forth,Postscript