Programming languages 什么是不同的编程语言概念,哪些语言以纯粹的方式显示它们

Programming languages 什么是不同的编程语言概念,哪些语言以纯粹的方式显示它们,programming-languages,paradigms,Programming Languages,Paradigms,我不是语言专家,但我最近进入了语言领域,试图对主要概念和“它们的”语言进行概述。这类似于。那么首先,什么是主要的编程语言概念,例如 结构化 程序性 面向对象 面向对象-基于原型(例如Java脚本) 功能性(如Haskell) 逻辑导向(如Prolog) meta(如果是它自己的纯概念?) 基于堆栈的(例如,Forth) 基于数学/面向数组(例如APL) 声明的 连接的(例如PostScript) (绝对不完整的列表…) 其次,为了更好地理解这些概念,最自然、最纯粹的基于/实现其核心概念的编程

我不是语言专家,但我最近进入了语言领域,试图对主要概念和“它们的”语言进行概述。这类似于。那么首先,什么是主要的编程语言概念,例如

  • 结构化
  • 程序性
  • 面向对象
  • 面向对象-基于原型(例如Java脚本)
  • 功能性(如Haskell)
  • 逻辑导向(如Prolog)
  • meta(如果是它自己的纯概念?)
  • 基于堆栈的(例如,Forth)
  • 基于数学/面向数组(例如APL)
  • 声明的
  • 连接的(例如PostScript)
  • (绝对不完整的列表…)
其次,为了更好地理解这些概念,最自然、最纯粹的基于/实现其核心概念的编程语言是什么

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

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

对于其中任何一种的“纯”版本来说,这都比较困难,因为这取决于你想要的纯级别

  • 例如,对于纯结构化(在这里“纯”的定义非常宽松)您可以查看
  • 对于纯对象定向,如果您希望绝对统一地对待所有事物(在最常见的定义下实际上不需要!),或者您正在研究类似于和的语言,如果您愿意在该标题下接受基本类型,那么您主要关注的是它及其同类
  • 对于你最有可能看到的功能
  • 对于逻辑编程来说,典型的语言是,但它并不纯粹。我所知道的唯一(大部分)纯逻辑语言是,只有当你认为它的功能块与它的逻辑块在本质上是兼容的

……等等等等。你明白了。

我认为Pascal是规范的过程语言

我还认为Lisp(讽刺的是不是ML)是标准的“元”语言

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

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

但我是一个口齿不清的局外人,所以我知道什么希望这有帮助;-)

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

  • 命令
    • 非结构化---早期基本、组装
    • 结构化--
    • 程序性--
    • 模——模A-2,可能是帕斯卡
    • 面向对象
      • 基于类的——Smalltalk
      • 基于原型——自我,可能是Java脚本,Lua
  • 声明性---SQL、正则表达式、CSS
    • 逻辑——水星,也许是序言
    • 功能性——方案,Haskell
      • 默契/无分
        • 连接词——快乐,猫
在另一个“轴”上,我们有

  • 标量——它们中的大多数
  • 数组--APL
不知道放在哪里:

  • 基于堆栈的--Forth,Postscript

Smalltalk不是原型。自我是。此外,上面的一些“概念”不是正交的。一个人必须将每种语言的特定方面与另一种语言进行比较(即使是上面的术语也可能根据上下文/语言改变含义)。SQL也是“面向集合的”(但是一种“声明性查询语言”),而不是面向表的:-)@pst谢谢,我删除了错误的示例。顺便说一句,谢谢你没有选择Java作为主要OO示例。类似的答案是“程序员”:可能是+1的重复,尤其是Wikipedia链接,以前从未见过。但是这些范例对我来说有点低级,因为通常会有几个组合在一起。在过程、OO、FP和逻辑方面仍然是一个良好的开端。谢谢。事实上,我推荐Ruby而不是Smalltalk作为纯面向对象的工具。诚然,Smalltalk是最先出现在这里的,但Ruby紧随其后——Ruby中的一切都是对象(包括文本和类定义),Ruby更现代、更流行,而且可以说更易于使用。@Ben Lee同意Ruby更纯粹的OO,但也有一些功能方面、闭包、映射、延续,很可能每一种现代语言都是多范式的?好吧,这会很有趣。Smalltalk在哪方面不如Ruby那么纯粹?给出细节,而不是笼统的概括。