fbpx
维基百科

Factor语言

Factor是Slava Pestov创建的面向堆栈编程语言。Factor是动态类型的并拥有自动内存管理,还有强力的元编程特征。语言有一个单一的实现,特征包括自宿主的优化编译器英语Optimizing compiler和一个集成开发环境。Factor发行包括一个大型的标准库

Factor
编程范型多范型: 面向堆栈, 串接式, 函数式
實作者Slava Pestov
发行时间2003年,​20年前​(2003
目前版本
  • 0.98
型態系統强类型, 动态
操作系统Windows, macOS, Linux
許可證BSD许可证
網站factorcode.org
啟發語言
Joy, Forth, Lisp, Self

历史

Slava Pestov在2003年创建Factor作为视频游戏脚本语言[1]。最初的实现,现在称为JFactor,是用Java实现的并运行在Java虚拟机上。尽管在语法方面早期的语言表面上类似现代的Factor,现代的语言在实践方面是非常不同的,并且当前实现更加快速。

概述

Factor是动态类型的、函数式面向对象编程语言。代码可以围绕叫做单词的小型过程来构造。在典型的代码中,这些过程一般1–3行长,多于7行长的过程是非常少见的。在其他编程语言中习惯上表达为一个过程的某个东西,在Factor中可以写为多个单词[2]

每个单词接受固定数目的实际参数并有固定数目的返回值。给单词的实际参数被传递到数据栈上,使用逆波兰表示法。这个堆栈只用来组织到单词的调用,并非用作数据结构。在Factor中以类似于Forth中堆栈的方式使用堆栈;因此它们都被当作是堆栈语言。例如,下面的代码片段打印“hello world”到当前输出流:

 "hello world" print 

print是在io词汇表中的一个单词,它从堆栈接受一个字符串而不返回东西。它打印这个字符串到当前输出流(缺省的是终端或图形收听器)[2]

阶乘函数 ,在Factor中可以用如下方式实现:

: factorial ( n -- n! ) dup 1 > [ [1,b] product ] [ drop 1 ] if 

不是所有数据都必须只通过堆栈来传递。词法作用域的局部变量,在过程内可用作临时变量英语Temporary variable来存储和访问。动态作用域的变量被用于在过程调用之间传递东西而不使用堆栈。例如,当前输入和输出流被存储在动态作用域的变量中[2]

Factor强调灵活性和扩展语言的能力[2]。有宏系统,还有对Factor语法的任意扩展。Factor的语法经常被扩展来允许新类型的单词定义和用于数据结构的新类型的文字英语Literal (computer programming)。它还被用在XML库中提供生成XML的文字语法。例如,下列单词接受一个字符串并产生一个XML文档对象,它是强调这个字符串的一个HTML文档:

 : make-html ( string -- xml )  dup  <XML  <html>  <head><title><-></title></head>  <body><h1><-></h1></body>  </html>  XML> ; 

单词dup重复在堆栈上的顶部元素。<->表示将来自堆栈的一个项目填入XML文档的指定部份。

实现和库

Factor包括一个大型的标准库,完全用本语言写成。包括有:

  • 跨平台GUI工具箱,建造在OpenGL和各种窗口系统之上,用于开发环境[3]
  • 绑定到多个数据库函数库,包括PostgreSQLSQLite[4]
  • 一个HTTP服务器和客户端,具有Furnace web框架[5]
  • 高效的同质的整数、浮点数和C结构的数组[6]
  • 实现正则表达式的一个库,生成机器代码来进行匹配[7]

Factor内建了外界函数接口英语foreign function interface,允许同CObjective-CFortran程序进行通信。还支持执行用GLSL书写的着色器并与之通信[2][8]

Factor是用Factor和C++实现的。它最初自举于早期的Java实现。现在,解析器和优化编译器都用本语言书写。语言的特定的基础部分是用C++实现的,比如垃圾回收器和特定原始操作(primitive)。

Factor使用基于映像英语system image的模型,类似于很多Smalltalk实现,这里编译的代码和数据都存储在映像之中[9]。要编译一个程序,这个程序被装载入一个映像并保存这个映像。一个特殊工具辅助建立最小映像来运行一个特定程序的过程,包装这个结果进入可以被部署为一个独立应用的某个东西中[2][10]

Factor编译器实现了很多高级优化并被用于新优化技术研究中的目标[2][11]

引用

  1. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2021-02-25). 
  2. ^ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Pestov, Sviatoslav; Ehrenberg, Daniel. Factor: a dynamic stack-based programming language. ACM SIGPLAN Notices (ACM). 2010, 45 (12): 43–58. doi:10.1145/1899661.1869637. 
  3. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2018-06-26). 
  4. ^ Coleman, Doug. . [2021-03-08]. (原始内容存档于2018-01-12). 
  5. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2021-02-25). 
  6. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2020-10-25). 
  7. ^ Coleman, Doug; Ehrenberg, Daniel. . [2021-03-08]. (原始内容存档于2018-08-07). 
  8. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2020-11-09). 
  9. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2021-04-28). 
  10. ^ Pestov, Slava. . [2021-03-08]. (原始内容存档于2020-11-09). 
  11. ^ Ehrenberg, Daniel. (PDF). 2010. (原始内容 (PDF)存档于2011-07-26). 

外部链接

  • 官方网站
  • Slava Pestov. (Tech talk). Google. October 27, 2008 [2021-03-07]. (原始内容 (flv)存档于2021-01-15). 
  • Zed Shaw. (CUSEC 2008). CUSEC. 2008 [2021-03-07]. (原始内容 (flv)存档于2020-11-19).  – a presentation written in Factor which mentions and praises Factor

factor语言, factor是slava, pestov创建的面向堆栈编程语言, factor是动态类型的并拥有自动内存管理, 还有强力的元编程特征, 语言有一个单一的实现, 特征包括自宿主的优化编译器, 英语, optimizing, compiler, 和一个集成开发环境, factor发行包括一个大型的标准库, factor编程范型多范型, 面向堆栈, 串接式, 函数式實作者slava, pestov发行时间2003年, 20年前, 2003, 目前版本0, 98型態系統强类型, 动态操作系统window. Factor是Slava Pestov创建的面向堆栈编程语言 Factor是动态类型的并拥有自动内存管理 还有强力的元编程特征 语言有一个单一的实现 特征包括自宿主的优化编译器 英语 Optimizing compiler 和一个集成开发环境 Factor发行包括一个大型的标准库 Factor编程范型多范型 面向堆栈 串接式 函数式實作者Slava Pestov发行时间2003年 20年前 2003 目前版本0 98型態系統强类型 动态操作系统Windows macOS Linux許可證BSD许可证網站factorcode org啟發語言Joy Forth Lisp Self 目录 1 历史 2 概述 3 实现和库 4 引用 5 外部链接历史 编辑Slava Pestov在2003年创建Factor作为视频游戏的脚本语言 1 最初的实现 现在称为JFactor 是用Java实现的并运行在Java虚拟机上 尽管在语法方面早期的语言表面上类似现代的Factor 现代的语言在实践方面是非常不同的 并且当前实现更加快速 概述 编辑Factor是动态类型的 函数式和面向对象的编程语言 代码可以围绕叫做单词的小型过程来构造 在典型的代码中 这些过程一般1 3行长 多于7行长的过程是非常少见的 在其他编程语言中习惯上表达为一个过程的某个东西 在Factor中可以写为多个单词 2 每个单词接受固定数目的实际参数并有固定数目的返回值 给单词的实际参数被传递到数据栈上 使用逆波兰表示法 这个堆栈只用来组织到单词的调用 并非用作数据结构 在Factor中以类似于Forth中堆栈的方式使用堆栈 因此它们都被当作是堆栈语言 例如 下面的代码片段打印 hello world 到当前输出流 hello world print print是在io词汇表中的一个单词 它从堆栈接受一个字符串而不返回东西 它打印这个字符串到当前输出流 缺省的是终端或图形收听器 2 阶乘函数n displaystyle n 在Factor中可以用如下方式实现 factorial n n dup 1 gt 1 b product drop 1 if 不是所有数据都必须只通过堆栈来传递 词法作用域的局部变量 在过程内可用作临时变量 英语 Temporary variable 来存储和访问 动态作用域的变量被用于在过程调用之间传递东西而不使用堆栈 例如 当前输入和输出流被存储在动态作用域的变量中 2 Factor强调灵活性和扩展语言的能力 2 有宏系统 还有对Factor语法的任意扩展 Factor的语法经常被扩展来允许新类型的单词定义和用于数据结构的新类型的文字 英语 Literal computer programming 它还被用在XML库中提供生成XML的文字语法 例如 下列单词接受一个字符串并产生一个XML文档对象 它是强调这个字符串的一个HTML文档 make html string xml dup lt XML lt html gt lt head gt lt title gt lt gt lt title gt lt head gt lt body gt lt h1 gt lt gt lt h1 gt lt body gt lt html gt XML gt 单词dup重复在堆栈上的顶部元素 lt gt 表示将来自堆栈的一个项目填入XML文档的指定部份 实现和库 编辑Factor包括一个大型的标准库 完全用本语言写成 包括有 跨平台GUI工具箱 建造在OpenGL和各种窗口系统之上 用于开发环境 3 绑定到多个数据库函数库 包括PostgreSQL和SQLite 4 一个HTTP服务器和客户端 具有Furnace web框架 5 高效的同质的整数 浮点数和C结构的数组 6 实现正则表达式的一个库 生成机器代码来进行匹配 7 Factor内建了外界函数接口 英语 foreign function interface 允许同C Objective C和Fortran程序进行通信 还支持执行用GLSL书写的着色器并与之通信 2 8 Factor是用Factor和C 实现的 它最初自举于早期的Java实现 现在 解析器和优化编译器都用本语言书写 语言的特定的基础部分是用C 实现的 比如垃圾回收器和特定原始操作 primitive Factor使用基于映像 英语 system image 的模型 类似于很多Smalltalk实现 这里编译的代码和数据都存储在映像之中 9 要编译一个程序 这个程序被装载入一个映像并保存这个映像 一个特殊工具辅助建立最小映像来运行一个特定程序的过程 包装这个结果进入可以被部署为一个独立应用的某个东西中 2 10 Factor编译器实现了很多高级优化并被用于新优化技术研究中的目标 2 11 引用 编辑 Pestov Slava Slava Pestov s corner of the web 2021 03 08 原始内容存档于2021 02 25 2 0 2 1 2 2 2 3 2 4 2 5 2 6 Pestov Sviatoslav Ehrenberg Daniel Factor a dynamic stack based programming language ACM SIGPLAN Notices ACM 2010 45 12 43 58 doi 10 1145 1899661 1869637 Pestov Slava Factor documentation UI framework 2021 03 08 原始内容存档于2018 06 26 Coleman Doug Factor documentation Database library 2021 03 08 原始内容存档于2018 01 12 Pestov Slava Factor documentation HTTP server 2021 03 08 原始内容存档于2021 02 25 Pestov Slava Factor documentation Specialized arrays 2021 03 08 原始内容存档于2020 10 25 Coleman Doug Ehrenberg Daniel Factor documentation Regular expressions 2021 03 08 原始内容存档于2018 08 07 Pestov Slava Overhauling Factor s C library interface 2021 03 08 原始内容存档于2020 11 09 Pestov Slava Factor s bootstrap process explained 2021 03 08 原始内容存档于2021 04 28 Pestov Slava On shaking trees 2021 03 08 原始内容存档于2020 11 09 Ehrenberg Daniel Closure elimination as constant propagation PDF 2010 原始内容 PDF 存档于2011 07 26 外部链接 编辑官方网站 Slava Pestov Factor An Extensible Interactive Language Tech talk Google October 27 2008 2021 03 07 原始内容 flv 存档于2021 01 15 Zed Shaw The ACL is Dead CUSEC 2008 CUSEC 2008 2021 03 07 原始内容 flv 存档于2020 11 19 a presentation written in Factor which mentions and praises Factor 取自 https zh wikipedia org w index php title Factor语言 amp oldid 77145534, 维基百科,wiki,书籍,书籍,图书馆,

文章

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