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

What are the different programming language concepts and which languages show them in a pure way

我不是语言专家,但我最近开始学习语言,并试图了解主要概念和"它们的"语言。这类似于另一个关于书籍的问题。首先,主要的编程语言概念是什么,例如

  • 结构化的
  • 程序性
  • 面向对象
  • 面向对象的-基于原型的(例如Java脚本)
  • 功能性(如Haskell)
  • 以逻辑为导向(如Prolog)
  • 元(如果一个纯粹的概念是它自己的?)
  • 基于堆栈(例如forth)
  • 基于数学/面向数组(如APL)
  • 声明的
  • 串联(例如PostScript)
  • (绝对不完整的清单…)

其次,要对这些概念有一个很好的了解,基于/实现其核心概念的编程语言最自然、最纯粹是什么?

  • 例如,Java是面向对象的,但它不是一个很好的例子,因为它不是纯粹的面向对象的原子。
  • Lisp是一种已知的功能性语言,但它是多范式的,所以它并不纯粹。但是Lisp可能是"基于列表"的纯实现(如果它算作概念的话)。
  • 有没有一种语言是结构化的(没有goto)而不是程序性的?(可能是xslt v1.x)


您在这里寻找的术语是"编程范式",并且有很多这样的范例。您可以从维基百科页面及其后续链接中获得支持每种语言的列表。

对于其中任何一种"纯粹"的表现形式来说,这都是困难的,因为这取决于你所追求的纯粹程度。

  • 对于纯结构化(在这里任何足够松散的"纯"定义下),您可以查看模块2。
  • 对于纯对象方向,如果您希望对所有内容都进行统一处理(在最常见的定义下实际上不需要这样做),那么您主要关注的是Smalltalk及其ILK。或者,如果您将接受该标题下的基元类型,则可以查看Java和Eiffel这样的语言。
  • 对于功能性,你最有可能看到的是哈斯克尔。
  • 对于逻辑编程来说,典型的语言是prolog,但它并不是真正的纯语言。我所知道的唯一(主要是)纯粹的逻辑语言是Mercury,并且只有当您认为它的功能块与它的逻辑块基本上是兼容的。

…等等。你明白了。


我认为帕斯卡是规范的程序语言。

我还认为lisp(具有讽刺意味的是,不是ml)是标准的"元"语言。

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

当然,任何其他语言都能做到。在python中,您可以访问python编译器,pypy是python中的python实现。但是,我认为Lisp有最强大的传统。

但我是个口齿不清的局外人,我知道什么…'希望这有帮助;—)


多亏了我正确的意见,我才找到了正确的方向。我将列出迄今为止我所发现的范例及其纯语言:

  • 命令
    • 非结构化——早期基础,装配
    • 结构化——?
    • 程序——?
    • 模块化——模块2,可能是Pascal
    • 面向对象
      • 基于类的---smalltalk
      • 基于原型的自我,也许是Java脚本,Lua
  • 声明性---sql,正则表达式,css
    • 逻辑---水星,可能是序言
    • 功能---方案,Haskell
      • 默契/无点
        • 连系---快乐,猫

在不同的"轴心"上

  • 标量---大部分
  • 阵列---APL

不知道放在哪里:

  • 基于堆栈的---forth,postscript