Factor语言

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

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

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

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

"hello world" print

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

  • 绑定到多个数据库函数库,包括PostgreSQL和SQLite。
  • 一个HTTP服务器和客户端,具有Furnace web框架。
  • 高效的同质的整数、浮点数和C结构的数组。
  • 实现正则表达式的一个库,生成机器代码来进行匹配。

Factor内建了,允许同C、Objective-C和Fortran程序进行通信。还支持执行用GLSL书写的着色器并与之通信。

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

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

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

引用
外部链接
*
*

  • – a presentation written in Factor which mentions and praises Factor

评论 (0)

  • 还没有评论,来抢沙发吧。