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的概念。
Racket 的诞生与发展相关推荐
- 计算机诞生发展分类特点及应用,计算机的诞生与发展,及其特点
计算机基本常识 一.计算机的概念: 计算机是一种能迅速而高效的自动完成信息处理的电子设备,它能按照程序对信息进行加工.处理.存储. 二.计算机的诞生与发展 1.诞生:1946年,美国为计算弹道轨迹而研 ...
- JSON 是如何诞生与发展的?
作者 | 猪哥 责编 | Elle JSON作为目前Web主流的数据交换格式,是每个IT技术人员都必须要了解的一种数据交换格式.尤其是在Ajax和REST技术的大行其道的当今,JSON无疑成为了数据交 ...
- 关于人工智能(一) 诞生与发展
人工智能的诞生及发展 人工智能对于我们来说其实并不是什么新鲜产物,早在1956年的夏季美国的达特茅斯(Dartmouth)大学就产生了. 其实算起来也就比福大创立早了那么2年而已(福州大学于1958年 ...
- 第一课 初识Photoshop Photoshop的诞生和发展
Photoshop的诞生和发展 Photoshop创始人:诺尔兄弟 Thomas Knoll(托马斯·诺尔)最初编写了一个叫做Display的程序,在哥哥John Knoll (约翰·诺尔)让他帮忙编 ...
- 促进计算机的发展,计算机的诞生和发展促进了人类社会的进步和繁荣
<计算机的诞生和发展促进了人类社会的进步和繁荣>由会员分享,可在线阅读,更多相关<计算机的诞生和发展促进了人类社会的进步和繁荣(2页珍藏版)>请在人人文库网上搜索. 1.办公自 ...
- RISC诞生与发展的缩影
转载自:RISC诞生与发展的缩影 [注:本文缩减版已发表在电脑报2013年第44期 A.新闻周刊,这个版本是写给实验室内部刊物<国重快讯>的加长版,写作过程中得到中科院计算所包云岗老师的大 ...
- Lesson 7(12)神经网络的诞生与发展机器学习基本概念
欢迎来到<2021 PyTorch深度学习实战>课程的第二周!在今天的课程之前,我们已经介绍了GPU硬件.进行了深度学习框架PyTorch的部署与安装,并且学习了深度学习基本数据结构Ten ...
- Qt小传——从诞生到发展、繁荣
Qt框架首度为公众可用是在1995年5月.它最初由Haavard Nord(奇趣科技公司的CEO)和Eirik Chambe-Eng(公司总裁)开发而成.Haavard和Eirik在位于挪威特隆赫姆的 ...
- 世界第一台电脑_电脑的诞生与发展
电子计算机俗称电脑(英文:Computer),是一种用于高速计算的"电子"计算器.它不但可以进行数值计算,还具有存储记忆数据的能力.是能够按照程序运行,自动.高速处理数据的智能设备 ...
- 1-Java的诞生和发展
一.Java由Sun公司发明,先来看看Sun公司 1982年2月24日,安迪和维诺德·科斯拉(Vinod Khosla).斯科特·麦克尼利(Scott McNearly)创建了Sun公司.不久之后比尔 ...
最新文章
- BPMF论文辅助笔记:采样Ui 部分推导
- 滴滴数据挖掘竞赛题目
- Java this关键字
- iis管理常用命令 创建IIS站点 应用应用程序 及虚拟目录
- hashCode到底有什么用?
- Linux的iptables常用配置范例(2)
- ResNet到底深不深?
- 关于三体执剑者的一点思考
- 十一:Cocos2d-x坐标系
- ASP.NET中WEB上弹出消息框的N种方法(为了以后方便,转了很多网友的文章!希望不会介意)...
- python安装nodejs_linux上nodejs安装
- ubuntu16.04安装google中文输入法
- egg mysql insert_egg-mysql
- [转]PCI与PCIe
- 一、Maven-单一架构案例(创建工程,引入依赖,搭建环境:持久化层,)
- 微信服务升级——指尖上的超级表格
- 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错
- XV6操作系统make报错Makefile:192: *** recipe commences before first target. Stop. 的解决方法
- 太原理工大学移动应用软件开发技术实验报告
- #千锋逆战班,王富胜# 学如逆水行舟,不进则退。在千锋学习的第14天 笔记整理
热门文章
- PS:PS将彩色相片变成纯黑白色
- AttributeError: module ‘ahocorasick‘ has no attribute ‘Automaton‘
- 需求调研第三篇--现场调研阶段容易犯哪些错误
- 工作中个人注册的媒体账号离职要归公司所有?
- 筚路蓝缕的十九年,天翎经历了什么?
- 23王道——中序线索树
- 最易学和最难学的编程语言 Top 5
- matlab的double和single类型
- 互联网创业怎么做?分享我的7个网创实操心得
- java定义一个接口shape_定义一个借口shape