newLISP

维基百科,自由的百科全书
跳到导航 跳到搜索

newLISP
编程范型多范型
语言家族Lisp
設計者Lutz Mueller
實作者Lutz Mueller
发行时间1991年,​30年前​(1991
穩定版本
10.7.5
(2019年5月12日,​2年前​(2019-05-12[1]
預覽版本
10.7.6
(2021年5月5日,​7個月前​(2021-05-05[1]
作用域动态
系统平台IA-32, x86-64
作業系統跨平台: Unix, 类Unix, Windows
許可證GPLv3+
網站www.newlisp.org
啟發語言
C, Common Lisp, Perl, Scheme

newLISP是作为Lisp方言的脚本语言。它由Lutz Mueller设计和开发[2]。newLISP是在GNU通用公共许可证版本3及以后版本下发行的自由及开放源代码软件

哲学[编辑]

newLISP尝试提供快速、强力、跨平台、全特征的脚本语言版本的Lisp语言,然而只使用最现代的系统资源比如数据存储(比如磁盘空间)和内存[3][4]

它提供的Lisp特征包括:列表、符号处理、函数映射、匿名函数(lambda表达式)、S-表达式(排除非正当列表)和宏。它还提供现代脚本语言预期的功能包括:支持正则表达式XML、Unicode(UTF-8)、通过传输控制协议(TCP)、互联网协议(IP)和用户数据报协议(UDP)联网、矩阵数组处理,高级数学、统计和贝叶斯统计分析、数理金融和分布式计算。

newLISP运行的操作系统包括:BSDLinuxmacOSSolarisWindows[1]。它支持MYSQLSQLiteODBC数据访问,通用网关接口(CGI)、简单邮件传输协议(SMTP)、邮局协议(POP)3、文件传输协议(FTP)和XML远程过程调用XML-RPC)。它能以服务器模式运行为守护进程

语言特征[编辑]

上下文[编辑]

newLISP支持叫做“上下文”的命名空间,它们可以被赋值给变量并传递给函数,但是它们关联着全局唯一的符号,限制了它们作为第一类对象的使用。在newLISP中基于原型面向对象风格的编程是可行的,可使用上下文作为原型来构造对象。在上下文内的变量不会干扰在其他上下文内同名的变量,但是在上下文内部,变量的行为遵守动态作用域规则。

作用域[编辑]

newLISP使用动态作用域。当一个函数被调用的时候,这个函数可以见到它的调用者的所有变量,上至在相同的上下文或命名空间内的调用者的调用者,以此类推。它支持显式的和隐式的定义局部动态变量,遮蔽英语Variable shadowing外部环境的同名变量,从而防止意外使用或变更来自调用者环境的变量。被调用函数的形式参数变量自动的遮蔽调用者的调用环境。在全局上,变量可以组织在独立的空间内。

内存管理[编辑]

newLISP使用了不同于传统垃圾回收方案的一种自动内存管理方法,称为仅一引用(one reference only:ORO)。每个变量只被它的上下文引用,而每个上下文都是全局引用的。

在newLISP中不支持在对象间的子对象共享、环状结构、或多个变量指向相同的对象。在存储于数据结构,或传递给除了特定内建函数之外的函数的时候,对象会被复制。例外的是符号和上下文,它们是共享的而不会被复制,因而可以用于间接寻址。符号和上下文是全局性命名和显式删除的;删除一个符号或上下文,会扫描所有对象来将到它的引用替代为nil

GUI选项[编辑]

newLISP图形用户界面(GUI)服务器(newLISP-GS),是提供图形编程接口的,一个基于Java互联网协议族(TCP/IP)服务器。在newLISP二进制发行中,能获得到基于newLISP-GS的开发环境,并能获得GTK-server英语GTK-serverOpenGL和基于Tcl/Tk的编程接口。

独立二进制执行[编辑]

任何newLISP版本都允许建造可执行文件,和自包含而不需要安装就可部署的可移植应用

交互于共享库[编辑]

newLISP拥有导入函数,允许用它从Windows API Win32上的动态链接库(DLL),或者Linux或Unix上的共享库中导入函数。

框架[编辑]

newLISP能获得的Web应用框架包括Dragonfly[5]和Rockets[6]

引用[编辑]

  1. ^ 1.0 1.1 1.2 newLISP. [2018-11-20]. 
  2. ^ Walling, Rob. An Interview with Lutz Mueller, Creator of newLISP. Softwarebyrob.com. [2018-11-20]. 
  3. ^ Category:newLISP. Rosetta Code. [2018-11-20]. 
  4. ^ Lazar, Alexandru. A look at newLISP. OSNews. 5 January 2009 [2018-11-20]. 
  5. ^ Slepak, Greg; Hildmann, Marc. Dragonfly web framework. AppTruck. [2018-11-20]. 
  6. ^ Reimer, Jeremy. The newLISP on Rockets 2.0 Blog. Rocket Man. [2018-11-20]. 

外部链接[编辑]