请输入您要查询的百科知识:

 

词条 DrRacket
释义

基本介绍

Racket源自著名的专家型语言PLT Scheme,同时又是Lisp语言的一个分支。它适用于从脚本Script到应用程序开发的任务执行工具,包括图形用户界面,Web服务器等。支持编译器的虚拟机,创建独立的可执行程序的工具,Racket Web服务器,具有丰富而全面的功能库,适用于初学者和专家编程。

开发者 PLT Inc.

软件版本 R5.2.1 / February 2, 2012

操作系统 跨平台(如Unix、Linux、MacOSX、Windows)

编程语言 13种(如Scheme、LISP、Algol60等)

编程方式 IDE图形化集成编程环境

授权方式 GNU LGPL

官方网址 http://racket-lang.org

标准 R5RS, R6RS: Scheme

开发状态 活跃Scheme最早由美国麻省理工学院MIT的Guy Lewis Steele Jr.在1970年代发展而来,后由Felleison发起PLT Scheme项目,其主要目的还是作为函数式编程的启蒙和教学语言,因此Racket很适合作为一个学习语言来学习,并于2010年6月将PLT Scheme更名为Racket,同时将DrScheme更名为DrRacket。

发展历程

Lisp语言的历史很久,几乎与史上第一个高级语言Fortran一样长。1957年计算机科学家首先发明了针对数字计算的Fortran语言,后来针对符号计算,由MIT的John McCarthy于1958年开发了Lisp (List processing)语言。DrRacket就起源于同Fortran一样古老的Lisp语言,其主要的技术发展历程如下:

历程 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计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。高级语言又可分为面向对象、过程式、函数型、逻辑型语言四种不同类型,其中lisp语言为经典的函数型编程语言。TIOBE世界编程语言排行榜展现了编程语言的流行趋势,而且每个月都有最新的数据被更新,详见右图。相对于各种嵌入在特定产品中的语言Emacs Lisp和AutoLISP,LISP语言的主要现代版本包括Common Lisp,Clojure和Scheme。Scheme的一个主要特性是可以像操作数据一样操作函数调用,其的主要目的是训练人的机器化思维,以其简洁的语言环境和大量的脑力思考而著称。

主要功能

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有以下几个主要特点:

1.计算用的是符号表达式而不是数;

2.具有表处理能力,即用链表形式表示所有的数据;

3.控制结构基于函数的复合,以形成更复杂的函数;

4.用递归作为描述问题和过程的方法;

5.用LISP语言书写的EVAL函数既可作为LISP语言的解释程序,又可以作为语言本身的形式定义;

6.程序本身也同所有其他数据一样用表结构形式表示。

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

可视化编程示例

Lisp 程序中充满了一对对嵌套的小括号,这些嵌套的符号表达式体现着“递归”。递归是数学上的基本概念之一,从递归理论出发,一切可以计算的函数最终都可以划归为几种基本的递归函数的任意组合。Lisp语言拥有理论上最高的运算能力。

#lang slideshow

;; 下列代码将简单的四方形以递归的方式生成右侧相对复杂的几何图形

(define (square n) (filled-rectangle n n))

(define (series mk) (hc-append 4 (mk 5) (mk 10) (mk 20) ))

(define (four p) (define two-p (hc-append p p)) (vc-append two-p two-p))

(define (checker p1 p2) (let ([p12 (hc-append p1 p2)] [p21 (hc-append p2 p1)]) (vc-append p12 p21)))

(define (checkerboard p) (let* ([rp (colorize p "red")] [bp (colorize p "black")] [c (checker rp bp)] [c4 (four c)]) (four c4)))

(series (lambda (size) (checkerboard (square size))))

Web服务器编程示例

利用racket所提供的扩展库可以较方便地开发出web服务器应用程序,例程如下:

#lang web-server/insta

(define (start request)

(response/xexpr

'(html

(head (title "My Blog"))

(body (h1 "Hello DrRacket World")))))

利用DrRacket编辑并运行提示如下(详见右图),系统将自动打开web浏览器并显示相关网页内容。

Welcome to DrRacket, version 5.1.3 [3m].

Language: racket #lang web-server/insta; memory limit: 128 MB.

Your Web application is running at http://localhost:3201/servlets/standalone.rkt.

Stop this program at any time to terminate the Web Server.

>

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 18:18:32