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