Racket 的诞生与发展

Racket 的诞生与发展

  Lisp语言的历史很久,几乎与史上第一个高级语言Fortran一样长。1957年计算机科学家首先发明了针对数字计算的Fortran语言,后来针对符号计算,由MIT的John McCarthy于1958年开发了Lisp (List processing)语言。

  1958年,人工智能之父John McCarthy 发明了一种以 Lambda 演算为基础的符号处理语言,1960年 McCarthy 发表著名论文《Recursive Functions of Symbolic Expressions and Their Computation by Machine》(符号表达式的递归函数及其机器计算), 从此这种语言被命名为 LISP (List Processor)。其语法被命名为:符号表达式(S-Expression)。LISP构建在7个函数 [atom car cdr cond cons eq quote] 和2个特型 [lambda label] 之上。

  Lisp诞生之初是为了纯粹的科学研究,代码执行像数学公式一样,以人的大脑来演算。直到麦卡锡的学生斯蒂芬·罗素将eval函数在IBM 704机器上实现后,才开启了Lisp作为一种计算机语言的历史。1962年,第一个完整的Lisp编译器在MIT诞生,从此之后Lisp以MIT为中心向全世界传播。之后十多年,出现了各种Lisp方言。

  具体说来,LISP有以下几个主要特点:

  1.计算用的是符号表达式而不是数;
  2.具有表处理能力,即用链表形式表示所有的数据;
  3.控制结构基于函数的复合,以形成更复杂的函数;
  4.用递归作为描述问题和过程的方法;
  5.用LISP语言书写的EVAL函数既可作为LISP语言的解释程序,又可以作为语言本身的形式定义;
  6.程序本身也同所有其他数据一样用表结构形式表示。

  已经证明:LISP的这些特点是解决人工智能核心问题的关键。它和后来由英国伦敦大学的青年学生柯瓦提出、由法国马赛大学的考尔麦劳厄(Alain Colmerauer)所领导的研究小组于1973年首先实现的逻辑式语言PROLOG并称为人工智能的两大语言,对人工智能的发展起了十分深远的影响。

  1975年,Scheme诞生。Scheme同样诞生与MIT,它的设计哲学是最小极简主义,它只提供必须的少数几个原语,所有其它的实用功能都由库来实现。在极简主义的设计思想下,Scheme趋于极致的优雅,并作为计算机教学语言在教育界广泛使用。

  1984年,Common Lisp诞生。在二十世纪七八十年代,由于Lisp方言过多,社区分裂,不利于lisp整体的发展。从1981年开始,在一个Lisp黑客组织的运作下,经过三年的努力整合后,于1984年推出了Common Lisp。由于Scheme的设计理念和其它Lisp版本不同,所以尽管Common Lisp借鉴了Scheme的一些特点,但没有把Scheme整合进来。此后Lisp仅剩下两支方言: Common Lisp 和 Scheme。

  从二十世纪九十年代开始,由于C++、Java、C#的兴起,Lisp逐渐没落。直到2005年后,随着科学计算的升温,动态语言JavaScript、Python、Ruby的流行,Lisp又渐渐的回到人们的视线。不过在Lisp的传统阵地教育界,Python作为强有力的挑战者对Scheme发起冲锋;在2008年,MIT放弃了使用Scheme作为教学语言的SICP(《计算机程序的构造和解释》)课程,而启用Python进行基础教学。

  同时美国东北大学另立炉灶,其主导的科学计算系统PLT Scheme开始迅猛发展,成为著名的专家型语言PLT Scheme,同时又是Lisp语言的一个分支。2010年,PLT Scheme改名为Racket。它适用于从脚本Script到应用程序开发的任务执行工具,包括图形用户界面,Web服务器等。支持编译器的虚拟机,创建独立的可执行程序的工具,Racket Web服务器,具有丰富而全面的功能库,适用于初学者和专家编程。近几年,The Racket Language连续成为年度最活跃语言网站,并驾齐驱的还有haskell网站。

历程
Lisp语言系列
贡献者
备注
1950s
IPL语言
美国Carnegie-Mellon大学
的Newell、Shaw、Simon
首创“表结构”
1958
Lisp诞生
John McCarthy于美国MIT
仅比Fortran晚一年
1975
Scheme
由MIT的Gerald J. Sussman
和Guy L. Steele Jr.完成
与其他lisp不同的是scheme
可以编译成机器码的
1983
xlisp
David Betz
具备面向对象功能,是AutoLisp之源
1984
Common Lisp
Guy L. Steele
实现标准化
1990
IEEE Scheme
IEEE
IEEE standard, 1178–1990 (R1995)
1994
ANSI Common Lisp
ANSI
ANSI X3.226-1994
2005
Practicle Common Lisp
Peter Seibel
Open Source (free online)
2007
Scheme Standard
 
R6RS
2010-6
更名为Racket
Matthias Felleison
同时将DrScheme更名为DrRacket
  Racket可通过创建大量的语法系统来支持和创建新的编程语言,包括Typed Scheme,ACL2, FrTime, Lazy Scheme和ProfessorJ等 。作为编程语言的通用测试平台,Racket软件包主要工具包括:

  * racket——系统核心部分,主要包括编译器、解释器和运行库程序;
  * DrRacket——原为DrScheme,是一个基于Racket的开源、跨平台系统的IDE集成编程环境,更加适用于初学者的GUI图形化用户编程界面;
  * raco——基于字符界面的命令行执行工具,用于执行Racket命令集,如安装系统组件功能包,创建函数库等。
Racket的特点是具有全面而丰富的库,可用于实现xml, web-server, web-framework, multiple-threads, pattern match, latex, slides, posix, GUI等,其实用性不比Common Lisp差。另外其与众不同的特点在于macro和continuation,并引入了syntax object和compilable macro的概念。

你可能感兴趣的:(Lisp,Racket)