fbpx
维基百科

串接编程语言

串接(concatenative)编程语言,是无点的计算机编程语言,在其中所有表达式都指示为函数,而表达式的并列指示函数复合[1]串接编程语言将常见于其他编程样式中的函数应用英语Function application,替代为函数复合英语function composition (computer science),作为建造子例程的缺省方法。

名称含义 编辑

串接语言这个名词,最早在2001年提出的Joy语言中采用。在这门语言中,符号串接的语法关系,被直接映射成函数复合的语义关系上:“两个程序的串接指示这两个程序指示的函数的复合”[2]

例子 编辑

例如,在如下的应用式语言的运算操作序列:

y = foo(x) z = bar(y) w = baz(z) 

在串接语言中被写为没有参数的函数的序列[3]

 foo bar baz 

在串接语言中的函数和过程,不是值级别而是函数级的,就是说它们典型的不通过显式的名字或标识符,来表示出它们所操作的数据结构;转而在它们中,函数被定义为管道,它的一序列操作运算,从一个隐式数据结构上取得参数,所有函数都在其上操作,并将函数的结果返回到这个共享的数据结构,从而被下一个算子(operator)所用[4]

复合式语义与镜像这种语义的语法英语Syntax of programming languages相组合,使得串接语言高度服从于程序的代数式操纵[5];尽管在其中直接书写数学表达式可能会有困难[6]。串接语言可以通过堆栈机器以高效的方式实现,并以虚拟机及其指令集的形式含蓄的出现[6]

特性 编辑

串接语言的特性来自它们的复合式语法和语义:

  • 任何表达式的归约都是一个函数到另一个函数的简化;处理函数到对象的应用是从来都不需要的[7]
  • 任何子表达式可以被替代为代表相同子表达式的一个名字。这在串接语言社区中被称为重构并被广泛使用来将程序简化为更小的各部份。
  • 串接语言的语法和语义形成了幺半群的代数结构[8]
  • 受不产生任何垃圾英语Garbage (computer science)线性逻辑的启发,串接语言可以变得非常适合实现[9]

实现 编辑

第一个串接编程语言是Forth,但是第一个自称串接语言的是Joy。其他串接语言有Factor、Onyx、PostScriptRPL英语RPL (programming language)等。

多数现存的串接语言是基于堆栈的;这不是必须要求,并已有其他模型提出[10][11][12]。串接语言目前作为目标语言用于嵌入式系统桌面网页编程,还用于研究用途。

多数串接语言是动态类型的。例外包括静态类型的Cat语言[13]

参见 编辑

引用 编辑

  1. ^ Christopher Diggins: What is a concatenative language. Drdobbs.com. 2008-12-31 [2013-07-01]. (原始内容于2011-08-11). 
  2. ^ Mathematical Foundations of Joy. [2020-05-06]. (原始内容于2011-10-07). 
  3. ^ . Concatenative.org. [13 September 2013]. (原始内容存档于2013-09-29). 
  4. ^ Concatenative language. Concatenative.org. [13 September 2013]. (原始内容于2010-07-29). 
  5. ^ Rationale for Joy, a functional language. [2020-04-19]. (原始内容于2011-01-15). 
  6. ^ 6.0 6.1 Why Concatenative Programming Matters. [13 September 2013]. (原始内容于2016-10-11). 
  7. ^ von Thun, Manfred: Joy compared with other functional languages. [2020-04-19]. (原始内容于2011-10-06). 
  8. ^ von Thun, Manfred: Mathematical foundations of Joy. [2020-04-19]. (原始内容于2010-07-31). 
  9. ^ . Home.pipeline.com. [2013-07-01]. (原始内容存档于2014-07-24). 
  10. ^ The Concatenative Language XY. Nsl.com. [2013-07-01]. (原始内容于2020-11-11). 
  11. ^ The Enchilada Programming Language. Enchiladacode.nl. [2013-07-01]. (原始内容于2020-11-09). 
  12. ^ The Om Programming Language. Om-language.org. [2013-07-01]. (原始内容于2020-11-19). 
  13. ^ . Cat-language.com. [2013-07-01]. (原始内容存档于2015-02-05). 

外部链接 编辑

  • concatenative.org: A wiki about concatenative languages
  • Staapl: Forth on Scheme for Embedded Controllers(页面存档备份,存于互联网档案馆
  • The Enchilada Programming Language(页面存档备份,存于互联网档案馆
  • The Concatenative Language XY(页面存档备份,存于互联网档案馆
  • The Om Programming Language(页面存档备份,存于互联网档案馆

串接编程语言, 串接, concatenative, 编程语言, 是无点的计算机编程语言, 在其中所有表达式都指示为函数, 而表达式的并列指示函数复合, 将常见于其他编程样式中的函数应用, 英语, function, application, 替代为函数复合, 英语, function, composition, computer, science, 作为建造子例程的缺省方法, 目录, 名称含义, 例子, 特性, 实现, 参见, 引用, 外部链接名称含义, 编辑串接语言这个名词, 最早在2001年提出的joy语言中. 串接 concatenative 编程语言 是无点的计算机编程语言 在其中所有表达式都指示为函数 而表达式的并列指示函数复合 1 串接编程语言将常见于其他编程样式中的函数应用 英语 Function application 替代为函数复合 英语 function composition computer science 作为建造子例程的缺省方法 目录 1 名称含义 2 例子 3 特性 4 实现 5 参见 6 引用 7 外部链接名称含义 编辑串接语言这个名词 最早在2001年提出的Joy语言中采用 在这门语言中 符号的串接的语法关系 被直接映射成函数的复合的语义关系上 两个程序的串接指示这两个程序指示的函数的复合 2 例子 编辑例如 在如下的应用式语言的运算操作序列 y foo x z bar y w baz z 在串接语言中被写为没有参数的函数的序列 3 foo bar baz 在串接语言中的函数和过程 不是值级别而是函数级的 就是说它们典型的不通过显式的名字或标识符 来表示出它们所操作的数据结构 转而在它们中 函数被定义为管道 它的一序列操作运算 从一个隐式数据结构上取得参数 所有函数都在其上操作 并将函数的结果返回到这个共享的数据结构 从而被下一个算子 operator 所用 4 复合式语义与镜像这种语义的语法 英语 Syntax of programming languages 相组合 使得串接语言高度服从于程序的代数式操纵 5 尽管在其中直接书写数学表达式可能会有困难 6 串接语言可以通过堆栈机器以高效的方式实现 并以虚拟机及其指令集的形式含蓄的出现 6 特性 编辑串接语言的特性来自它们的复合式语法和语义 任何表达式的归约都是一个函数到另一个函数的简化 处理函数到对象的应用是从来都不需要的 7 任何子表达式可以被替代为代表相同子表达式的一个名字 这在串接语言社区中被称为重构并被广泛使用来将程序简化为更小的各部份 串接语言的语法和语义形成了幺半群的代数结构 8 受不产生任何垃圾 英语 Garbage computer science 的线性逻辑的启发 串接语言可以变得非常适合实现 9 实现 编辑第一个串接编程语言是Forth 但是第一个自称串接语言的是Joy 其他串接语言有Factor Onyx PostScript和RPL 英语 RPL programming language 等 多数现存的串接语言是基于堆栈的 这不是必须要求 并已有其他模型提出 10 11 12 串接语言目前作为目标语言用于嵌入式系统 桌面和网页编程 还用于研究用途 多数串接语言是动态类型的 例外包括静态类型的Cat语言 13 参见 编辑函数级编程 同像性 面向堆栈编程 隐式编程引用 编辑 Christopher Diggins What is a concatenative language Drdobbs com 2008 12 31 2013 07 01 原始内容存档于2011 08 11 Mathematical Foundations of Joy 2020 05 06 原始内容存档于2011 10 07 Name code not values Concatenative org 13 September 2013 原始内容存档于2013 09 29 Concatenative language Concatenative org 13 September 2013 原始内容存档于2010 07 29 Rationale for Joy a functional language 2020 04 19 原始内容存档于2011 01 15 6 0 6 1 Why Concatenative Programming Matters 13 September 2013 原始内容存档于2016 10 11 von Thun Manfred Joy compared with other functional languages 2020 04 19 原始内容存档于2011 10 06 von Thun Manfred Mathematical foundations of Joy 2020 04 19 原始内容存档于2010 07 31 Henry Baker Linear Logic and Permutation Stacks The Forth Shall Be First Home pipeline com 2013 07 01 原始内容存档于2014 07 24 The Concatenative Language XY Nsl com 2013 07 01 原始内容存档于2020 11 11 The Enchilada Programming Language Enchiladacode nl 2013 07 01 原始内容存档于2020 11 09 The Om Programming Language Om language org 2013 07 01 原始内容存档于2020 11 19 Cat Specification Cat language com 2013 07 01 原始内容存档于2015 02 05 外部链接 编辑concatenative org A wiki about concatenative languages Staapl Forth on Scheme for Embedded Controllers 页面存档备份 存于互联网档案馆 The Enchilada Programming Language 页面存档备份 存于互联网档案馆 The Concatenative Language XY 页面存档备份 存于互联网档案馆 The Om Programming Language 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 串接编程语言 amp oldid 78599223, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。