`
mindfocus
  • 浏览: 17576 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Lisp

阅读更多
1) John McCarthy's Home Page
http://www-formal.stanford.edu/jmc/


2) Lisp之根源
http://daiyuwen.freeshell.org/gb/rol/roots_of_lisp.html#foot84

约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如 欧几里德对几何的贡献.1 他向我们展示了,在只给定几个简单的操作符和一个 表示函数的记号的基础上, 如何构造出一个完整的编程语言. 麦卡锡称这种语 言为Lisp, 意为List Processing, 因为他的主要思想之一是用一种简单的数据结构表(list)来代表代码和数据.

值得注意的是,麦卡锡所作的发现,不仅是计算机史上划时代的大事, 而且是一种 在我们这个时代编程越来越趋向的模式.我认为目前为止只有两种真正干净利落, 始终如一的编程模式:C语言模式和Lisp语言模式.此二者就象两座高地, 在它们 中间是尤如沼泽的低地.随着计算机变得越来越强大,新开发的语言一直在坚定地 趋向于Lisp模式. 二十年来,开发新编程语言的一个流行的秘决是,取C语言的计 算模式,逐渐地往上加Lisp模式的特性,例如运行时类型和无用单元收集.

在这篇文章中我尽可能用最简单的术语来解释约翰麦卡锡所做的发现. 关键是我 们不仅要学习某个人四十年前得出的有趣理论结果, 而且展示编程语言的发展方 向. Lisp的不同寻常之处--也就是它优质的定义--是它能够自己来编写自己 .为了理解约翰麦卡锡所表述的这个特点,我们将追溯他的步伐,并将他的数学标记 转换成能够运行的Common Lisp代码.

3) CAR & CDR
http://www.iwriteiam.nl/HaCAR_CDR.html

I wrote the first implimenation of a LISP interpreter on the IBM 704 at MIT in early in 1959. I hand-compiled John McCarthy's "Universal LISP Function".
The 704 family (704, 709, 7090) had "Address" and "Decrement" fields that were 15 bits long in some of the looping instructions. There were also special load and store instructions that moved these 15-bit addresses between memory and the index regiseters ( 3 on the 704, 7 on the others )

We had devised a representation for list structure that took advantage of these instructions.

Because of an unfortunate temporary lapse of inspiration, we couldn't think of any other names for the 2 pointers in a list node than "address" and "decrement", so we called the functions CAR for "Contents of Address of Register" and CDR for "Contents of Decrement of Register".

After several months and giving a few classes in LISP, we realized that "first" and "rest" were better names, and we (John McCarthy, I and some of the rest of the AI Project) tried to get people to use them instead.

Alas, it was too late! We couldn't make it stick at all. So we have CAR and CDR.

As the 704 has 36 bit words, there were 6 bits in the list nodes that were not used. Our initial implimentation did not use them at all, but the first garbage collector, comissioned in the summer of 1959, used some of them as flags.

Atoms were indicated by having the special value of all 1's in car of the first word of the property list. All 0's was NIL, the list terminator.

We were attempting to improve on "IPL-V", (for Interpretive Processing of Lists - version 5) which ran on a 650. I believe that the 0 list terminator was used there, but I believe that the all 1's flag for atoms was original.

Hope this is enlightening.


After these historical blind alleys, it's interesting to think about why car and cdr still persist fifty years after McCarthy and Russell roamed the halls of MIT evangelising first and rest. Common Lisp does at least have first and rest as part of the standard. However, when I was taught Lisp in the mid-90's, I was encouraged to primarily favor the older car and cdr.I remember two primary reasons for this. The first was that existing code favored car and cdr, so it was important to be able to read code written in that style. The second reason was that first and rest impose a particular meaning on the fields of a cons cell that may or may not be appropriate. In the common case of a linear list, first and rest work rather well. If you call first on the list, you get the first element, if you call rest, you get the rest. In the case of a cons cell as a node of an association list, they work less well, unless, that is, you can figure out a reason why first makes sense as 'key', and rest makes sense as 'value'.


4) Lisp的wiki
http://zh.wikipedia.org/zh-cn/LISP
http://lisp.org.cn/wiki/

5) Lisp方言
http://www.schemers.org/
http://www.lisp.org/alu/home
http://www.gnu.org/software/gcl/
分享到:
评论

相关推荐

    AutoLISP 编程.zip_autoLisp编程_autolisp_autolisp教程_lisp编程

    AutoLISP是一种基于LISP语言的编程环境,专为Autodesk的AutoCAD软件设计,用于扩展AutoCAD的功能和自定义工作流程。这个压缩包文件包含了关于AutoLISP编程的教程,对于想要掌握这一技能的用户来说是宝贵的资源。 在...

    CAD-lisp.rar_CAD LiSp代码_CAD菜单lisp源码_cad lisp 源代码_cad 图层‘_lisp 块

    CAD Lisp是一种基于Lisp语言的编程工具,常用于AutoCAD软件中,用于扩展和自定义CAD的功能。在“CAD-lisp.rar”这个压缩包中,包含的是一系列CAD Lisp源代码,这些源代码主要用于实现CAD中的图层管理、对象修改以及...

    AutoLISP函数参考(明经翻译版).rar_autolisp_autolisp functions_autolisp翻译_l

    AutoLISP是一种基于LISP语言的编程方言,专为Autodesk的AutoCAD软件设计,用于扩展和自动化CAD操作。此压缩包文件“AutoLISP函数参考(明经翻译版).rar”提供了一份全面的AutoLISP函数参考资料,由明经翻译,方便用户...

    lisp工具.rar

    LISP(List Processing)是一种古老而强大的编程语言,它的设计思想独特,主要应用于人工智能、计算机科学、软件工程等领域。在给定的“lisp工具.rar”压缩包中,包含了一个LISP程序,用于辅助绘图工具,使得用户...

    Auto Cad visual lisp 中文手册

    Visual LISP是AutoLISP的一个扩展,提供了一个更友好的图形界面,用于编写、测试和调试LISP程序。 在AutoCAD中,AutoLISP语言被设计用来增强和扩展软件的功能。它允许用户创建新的命令,修改已有命令的行为,以及...

    AutoCAD 2010 AutoLISP参考手册_autolisp_

    AutoCAD 2010 AutoLISP参考手册是专为AutoCAD 2010设计者和开发者编写的,旨在帮助他们深入理解和利用AutoLISP语言进行程序开发。AutoLISP是一种基于LISP(列表处理)语言的编程环境,特别为AutoCAD定制,允许用户...

    AutoCAD完全应用指南—AutoLISP DCL Visual LISP程序设计篇(随书光盘)

    《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》重点讲解autolisp、dcl、visual lisp三合一的autocad二次程序开发技术。《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》分为4篇,共35章。...

    AutoLisp入门教程

    AutoLisp是一种基于Lisp语言的编程环境,专为Autodesk的AutoCAD软件设计,用于扩展和自动化CAD操作。这个入门教程将引导你逐步了解AutoLisp的基本概念、语法和功能,帮助你提升AutoCAD的使用效率。 首先,我们要...

    autolisp对话框设计

    在AutoCAD环境中,LISP(AutoLISP)是一种强大的编程语言,它允许用户自定义功能,提高工作效率。对话框在AutoLISP编程中扮演着重要角色,为用户提供友好的交互界面,使用户能够输入参数、选择选项等。本文将详细...

    实用Common.Lisp编程.pdf

    标题:“实用Common.Lisp编程.pdf” 描述:“实用Common.Lisp编程.pdf,2011.10出版” 从这些信息中,我们可以提炼出几个关键的知识点: ### Common Lisp语言简介 Common Lisp是一种高级的、通用的、多范式的编程...

    LISP源代码简化程序

    LISP(LISt Processing)是一种古老且强大的编程语言,以其独特的语法和强大的抽象能力而闻名。LISP源代码简化程序的目的是为了优化和压缩LISP代码,使其在某些情况下更小、更紧凑,尽管这可能会牺牲代码的可读性。 ...

    ANSI Common Lisp 中文翻译版.pdf

    ANSI Common Lisp 中文翻译版.pdf 此资源是 ANSI Common Lisp 的中文翻译版,涵盖了 Common Lisp 语言的基础知识和高级主题。该资源包含了 17 章节,从基础的列表、特殊数据结构、控制流程、函数、输入与输出、符号...

    AutoCAD® .NET 与lisp互相调用

    ***与Lisp互相调用是Autodesk公司提供的AutoCAD软件集成的两种编程语言环境之间互相协作的能力。在AutoCAD的历史长河中,Lisp语言自20世纪80年代初便与之相伴,用于自动化绘图任务、扩展绘图功能和创建用户界面。而...

    测量LISP程序.rar

    LISP(LISt Processing)是一种古老且强大的编程语言,尤其在计算机辅助设计(CAD)领域中,LISP被广泛用于扩展和定制CAD软件的功能。在本压缩包“测量LISP程序.rar”中,包含了适用于测绘专业课程作业和CAD成图的一...

    .NET与lisp联合编程

    ### .NET与LISP联合编程:实现现代与传统的融合 #### 概述 .NET作为一种主流且高效的开发平台,在工业设计、工程制图等领域被广泛采用。然而,在利用.NET平台进行CAD(Computer-Aided Design)软件的二次开发时,...

    LISP源码800例.rar

    LISP,全称为“List Processor”,是一种历史悠久的高级编程语言,以其独特的链表数据结构和符号处理能力闻名。这份名为“LISP源码800例”的资源集合,显然是为那些想要深入理解LISP编程的人准备的。它包含了800个...

    AutoLISP程序对话框设计

    【AutoLISP程序对话框设计】是AutoLISP编程中重要的组成部分,主要涉及人机交互界面的构建。对话框在程序执行过程中起到了收集和展示数据的关键作用,它使用Dialog Control Language(DCL)来编写,生成的`.dcl`文件...

    CAD LISP24个源代码

    CAD LISP24个源代码是一组用于CAD(计算机辅助设计)软件的二次开发资源,主要基于LISP语言。LISP是一种古老而强大的编程语言,因其在CAD领域中的灵活性和高效性,常被用于定制和扩展CAD软件的功能,如AutoCAD、CASS...

    lisp-share.rar_CAD LISP _DOSlib arx_lsp 查询 xdata_madair_wipeout

    《CAD二次开发与LISP命令集锦:提升工作效率的秘籍》 在计算机辅助设计(CAD)领域,高效的工作流程是提升生产力的关键。CAD的二次开发允许用户根据具体需求定制工具,大大增强了软件的实用性。本资料包"lisp-share...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part2.rar

    《autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇》重点讲解autolisp、dcl、visuallisp三合一的autocad二次程序开发技术。《autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇》分为4篇,共35章。第1...

Global site tag (gtag.js) - Google Analytics