【问题标题】:What are the different programming language concepts and which languages show them in a pure way有哪些不同的编程语言概念以及哪些语言以纯粹的方式展示它们
【发布时间】:2011-05-04 04:31:51
【问题描述】:

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

  • 结构化
  • 程序
  • 面向对象
  • 面向对象 - 基于原型(例如 Java Script)
  • 功能性(例如 Haskell)
  • 面向逻辑(例如 Prolog)
  • 元(如果是它自己的纯概念?)
  • 基于堆栈(例如 Forth)
  • 基于数学/面向数组(例如 APL)
  • 声明性
  • 连接(例如 PostScript)
  • (绝对不完整的列表...)

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

  • 例如 Java 是 OO,但这不是一个很好的例子,因为它不是纯 OO,因为原子。
  • Lisp 是一种众所周知的函数式语言,但它是多范式的,所以它不是纯粹的。但 Lisp 可能是“基于列表”的纯粹实现(如果它算作概念的话)。
  • 是否存在结构化(无 GOTO)但不是程序化的语言? (可能是 XSLT v1.x)

【问题讨论】:

标签: programming-languages paradigms


【解决方案1】:

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

对于其中任何一个的“纯”再现,这更难,因为这取决于您要寻找的纯度水平。

  • 对于纯结构化(在此处对“纯”的任何足够松散的定义),您可以查看例如 Modula-2
  • 对于纯面向对象,如果您绝对希望所有内容都得到统一处理(在最常见的定义下实际上不是必需的!),或者您正在查看诸如 @987654324 之类的语言,那么您主要查看 Smalltalk 及其同类@ 和 Eiffel 如果您接受该标题下的原始类型。
  • 对于功能,您最有可能在Haskell
  • 对于逻辑编程,原型语言是Prolog,但它并不是真正纯粹的。我所知道的唯一(大部分)纯逻辑语言是Mercury,并且只有当您将其功能块视为与其逻辑块基本兼容时。

...等等等等。你明白了。

【讨论】:

  • +1 特别是。对于维基百科的链接,以前没见过。但是范式对我来说感觉有点低,因为通常有几个组合在一起。程序、OO、FP、逻辑仍然是一个好的开始。谢谢。
  • 我实际上会提名 Ruby 而不是 Smalltalk 用于纯面向对象。诚然,Smalltalk 是第一个出现的,但 Ruby 紧随其后——在 Ruby 中一切都是对象(包括文字和类定义),而且 Ruby 更现代、更流行,并且可以说更容易使用。
  • @Ben Lee 同意 Ruby 更纯粹的 OO,但也有一些功能方面,闭包、映射、延续等。大概每一种现代语言都是多范式的?
  • 好的,这会很有趣。 Smalltalk 在哪方面不如 Ruby 纯 OO 语言?给出具体细节,而不是笼统地概括。
【解决方案2】:

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

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

首先,宏是一个程序片段,它修改代表程序片段的数据结构——因此您可以使用语言来调整语言。其次,编写自托管解释器(传统上称为元循环评估器)被认为是一种常见做法:它们是编写并运行它们的程序。

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

但我是一个 Lisp 局外人,所以我知道什么... 'hope-this-helps ;-)

【讨论】:

    【解决方案3】:

    感谢只是我的正确意见的回答,我被指出了正确的方向。我将给出迄今为止我发现的范式及其纯语言列表:

    • 势在必行
      • 非结构化 --- 早期 BASIC,组装
      • 结构化 --- ?
      • 程序 --- ?
      • 模块化 --- Modula-2,也许是 Pascal
      • 面向对象
        • 基于类 --- Smalltalk
        • prototype-based --- Self,也许是 Java Script,Lua
    • 声明性 --- SQL、正则表达式、CSS
      • 逻辑 --- Mercury,也许是 Prolog
      • 功能 --- 方案,Haskell
        • 默契/无点
          • 连词 --- Joy, Cat

    我们在不同的“轴”上

    • 标量 --- 其中大部分
    • 数组 --- APL

    不知道放在哪里:

    • 基于堆栈 --- Forth,后记

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多