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的概念。

Racket 的诞生与发展相关推荐

  1. 计算机诞生发展分类特点及应用,计算机的诞生与发展,及其特点

    计算机基本常识 一.计算机的概念: 计算机是一种能迅速而高效的自动完成信息处理的电子设备,它能按照程序对信息进行加工.处理.存储. 二.计算机的诞生与发展 1.诞生:1946年,美国为计算弹道轨迹而研 ...

  2. JSON 是如何诞生与发展的?

    作者 | 猪哥 责编 | Elle JSON作为目前Web主流的数据交换格式,是每个IT技术人员都必须要了解的一种数据交换格式.尤其是在Ajax和REST技术的大行其道的当今,JSON无疑成为了数据交 ...

  3. 关于人工智能(一) 诞生与发展

    人工智能的诞生及发展 人工智能对于我们来说其实并不是什么新鲜产物,早在1956年的夏季美国的达特茅斯(Dartmouth)大学就产生了. 其实算起来也就比福大创立早了那么2年而已(福州大学于1958年 ...

  4. 第一课 初识Photoshop Photoshop的诞生和发展

    Photoshop的诞生和发展 Photoshop创始人:诺尔兄弟 Thomas Knoll(托马斯·诺尔)最初编写了一个叫做Display的程序,在哥哥John Knoll (约翰·诺尔)让他帮忙编 ...

  5. 促进计算机的发展,计算机的诞生和发展促进了人类社会的进步和繁荣

    <计算机的诞生和发展促进了人类社会的进步和繁荣>由会员分享,可在线阅读,更多相关<计算机的诞生和发展促进了人类社会的进步和繁荣(2页珍藏版)>请在人人文库网上搜索. 1.办公自 ...

  6. RISC诞生与发展的缩影

    转载自:RISC诞生与发展的缩影 [注:本文缩减版已发表在电脑报2013年第44期 A.新闻周刊,这个版本是写给实验室内部刊物<国重快讯>的加长版,写作过程中得到中科院计算所包云岗老师的大 ...

  7. Lesson 7(12)神经网络的诞生与发展机器学习基本概念

    欢迎来到<2021 PyTorch深度学习实战>课程的第二周!在今天的课程之前,我们已经介绍了GPU硬件.进行了深度学习框架PyTorch的部署与安装,并且学习了深度学习基本数据结构Ten ...

  8. Qt小传——从诞生到发展、繁荣

    Qt框架首度为公众可用是在1995年5月.它最初由Haavard Nord(奇趣科技公司的CEO)和Eirik Chambe-Eng(公司总裁)开发而成.Haavard和Eirik在位于挪威特隆赫姆的 ...

  9. 世界第一台电脑_电脑的诞生与发展

    电子计算机俗称电脑(英文:Computer),是一种用于高速计算的"电子"计算器.它不但可以进行数值计算,还具有存储记忆数据的能力.是能够按照程序运行,自动.高速处理数据的智能设备 ...

  10. 1-Java的诞生和发展

    一.Java由Sun公司发明,先来看看Sun公司 1982年2月24日,安迪和维诺德·科斯拉(Vinod Khosla).斯科特·麦克尼利(Scott McNearly)创建了Sun公司.不久之后比尔 ...

最新文章

  1. BPMF论文辅助笔记:采样Ui 部分推导
  2. 滴滴数据挖掘竞赛题目
  3. Java this关键字
  4. iis管理常用命令 创建IIS站点 应用应用程序 及虚拟目录
  5. hashCode到底有什么用?
  6. Linux的iptables常用配置范例(2)
  7. ResNet到底深不深?
  8. 关于三体执剑者的一点思考
  9. 十一:Cocos2d-x坐标系
  10. ASP.NET中WEB上弹出消息框的N种方法(为了以后方便,转了很多网友的文章!希望不会介意)...
  11. python安装nodejs_linux上nodejs安装
  12. ubuntu16.04安装google中文输入法
  13. egg mysql insert_egg-mysql
  14. [转]PCI与PCIe
  15. 一、Maven-单一架构案例(创建工程,引入依赖,搭建环境:持久化层,)
  16. 微信服务升级——指尖上的超级表格
  17. 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错
  18. XV6操作系统make报错Makefile:192: *** recipe commences before first target. Stop. 的解决方法
  19. 太原理工大学移动应用软件开发技术实验报告
  20. #千锋逆战班,王富胜# 学如逆水行舟,不进则退。在千锋学习的第14天 笔记整理

热门文章

  1. PS:PS将彩色相片变成纯黑白色
  2. AttributeError: module ‘ahocorasick‘ has no attribute ‘Automaton‘
  3. 需求调研第三篇--现场调研阶段容易犯哪些错误
  4. 工作中个人注册的媒体账号离职要归公司所有?
  5. 筚路蓝缕的十九年,天翎经历了什么?
  6. 23王道——中序线索树
  7. 最易学和最难学的编程语言 Top 5
  8. matlab的double和single类型
  9. 互联网创业怎么做?分享我的7个网创实操心得
  10. java定义一个接口shape_定义一个借口shape