ansi common lisp pdf,

  ansi common lisp pdf,

  acl1

  序言约翰麦卡锡和他的学生在1958年开始第一次实现Lisp。Lisp在Fortran之后。

  仍在使用的最古老的语言。1更何况现在还是编程语言技术的前沿。明白;理解

  Lisp程序员会告诉你,这种语言有一些与众不同的地方。

  Lisp的特别之处在于它被设计成可以自我进化。你可以用Lisp定义新的

  Lisp运算符。随着新的抽象概念越来越流行(比如面向对象编程),我们总是发现

  用Lisp实现它们很容易。像DNA一样,这样的语言不会过时。

  为什么新工具要学习Lisp?因为它允许你做用其他语言做不到的事情。如果你只想写一个

  函数返回小于n的非负整数之和,那么使用Lisp和C类似:

  ;Lisp /* C */

  (defun sum (n) int sum(int n){

  (let ((s 0)) int i,s=0;

  (dotimes(I n s)for(I=0;我我)

  (incf s I))))s=I;

  退货单;

  如果你只想做这么简单的事,用哪种语言都没关系。假设你想写一个函数。

  接受数字n并返回一个函数:它将n加到它的自变量上:

  ;咬舌

  (defun addn)

  # ((x)

  (x n)))

  C语言中的addn会是什么样子?根本写不出来。

  你可能会想,谁会想做这样的事?编程教你不要试图去做他们没有提供的东西。

  事情。当你用某种语言写程序时,你必须用那种语言思考,你希望无法描述它。

  事情很难办。当我第一次开始用Basic写程序时,我不想要递归,因为

  因为我根本不知道这事发生了。我认为基本上。我只有递归算法的概念。为什么我

  想要递归?

  如果你不渴望逻辑封装(在上面的例子中使用的),请相信当前的Lisp进程

  程序员一直在用。很难找到不使用封装的任何长度的Lisp代码。在第112页,你将

  自己用吧。

  封装只是我们在其他语言中找不到的抽象概念之一。另一个更有价值的Lisp

  LISP的独特之处在于Lisp程序是用Lisp的数据结构来表示的。这意味着你可以写啊写。

  程序。人们真的需要这个吗?是的——它们被称为宏,有经验的程序。

  我一直在用它。到173页就可以自己写宏了。

  凭借宏、封装和运行时类型,Lisp超越了面向对象编程。如果你理解了上面的句子,

  也许你不需要看这本书。你必须非常了解Lisp,才能明白它为什么不是谎言。但是这个

  不仅仅是说说而已。这是一个重要的论点,它的证明清楚地写在第17章的代码中。

  来了。

  第2章到第13章将逐步介绍理解第17章代码所需的所有概念。你的努力会

  物有所值,比如:用C编程你会感到窒息,就像有经验的C程序员一样。

  基础编程会觉得窒息。更令人鼓舞的是,如果我们想想这种感觉

  怎么会。Basic扼杀了习惯C的人,因为有经验的C程序员都知道,没有办法用Basic。

  同样,学习Lisp不仅让你学习一门新的语言——它还会教你

  一种新的更强大的方式来考虑程序。

  正如前面提到的,Lisp提供了其他语言所不能提供的工具。但远不止这些。单独的

  总的来说,伴随Lisp而来的新事物——自动内存管理、显式类型、封装等等——每一个。

  所有这些都使编程变得更容易。它们一起形成了一个临界值,从而产生了一种新的编程方法

  成为可能。

  Lisp被设计成可扩展的:它允许你定义自己的操作符。因为Lisp是由和你的程序一组成的

  示例函数和宏。所以扩展Lisp就像写Lisp程序一样简单。事实上,是这样的

  它如此简单(而且有用),以至于扩展这种语言成了标准做法。当你写一个向下接近语言的程序时

  有时,你也在构建语言来接近你的程序。你也是从上到下工作。

  几乎所有的程序都可以受益于适应他们自己需求的语言剪裁,但是越多的程序

  复杂的,自下而上的设计方法更有价值。自底向上的程序可以写成一系列

  层,每一层都充当前一层的编程语言。TEX是最早用这种方式编写的程序之一。你可以

  用任何语言自下而上地设计程序,但是Lisp是这种风格最自然的载体。

  自底向上的编程自然会产生可扩展的软件。如果一直坚持自下而上的编程,那就不能太懒。

  直到你程序的最高级别,这个级别就变成了用户的可编程语言。可扩展性的概念。

  深深植根于Lisp,成为编写可扩展软件的理想语言,在80年代最为成功。

  其中三个程序提供Lisp作为扩展语言:Gnu Emacs、Autocad和Interleaf。

  自底向上也是获得可重用软件的最佳方式。编写可复用软件的本质是将共性相互分离。

  做爱。而自下而上的方法自然就造成了这种分离。而不是花费你所有的精力

  写一个巨大的应用程序,但是用一部分能量去构造一个

  语言,用你的一部分精力(相对较小的比例)用这种语言写你的应用。和应用有关。

  特性都集中在顶层,下面几层可以形成一种类似于这个应用程序的编写语言。

  应用程序——有什么比编程语言更具可重用性?

  Lisp不仅允许你编写更复杂的程序,而且速度更快。Lisp程序通常很短——这种语言

  它给你一个更大的思路,所以你不需要用很多。正如弗雷德里克布鲁克斯(Frederick Brooks)指出的,写一个程序需要很长时间。

  往往取决于它的长度。所以这个事实意味着编写Lisp程序花费的时间更少。

  Lisp的动态特性放大了这种影响:在Lisp中,编辑-编译-测试周期如此之短,

  因此编程是实时的。

  更大的抽象和交互式环境可以改变组织开发软件的方式。术语“快速原型”

  本文描述了一种最早在Lisp中使用的编程方法:在Lisp中,你可以写一个带比值的规格说明。

  写一个原型需要的时间更少,而且这个原型很抽象,可以作为比用英文写更好的原型。

  更好的规格。Lisp允许你从原型到产品软件的平稳过渡。写作时

  Lisp程序的编译考虑到了速度。它们是由现代编译器编译的,它们与用其他高级语言编写的类似。

  这个程序运行得一样快。

  除非你对Lisp相当熟悉,否则这篇前言就像一堆夸夸其谈、毫无意义的语句。Lisp优于其他。

  编程对象?你构造语言来接近你的程序?Lisp编程是实时的?这些字是什么?

  意思?现在这些语句就像一些空湖。随着您对Lisp实际特性的了解越来越多,请看

  越有启发性的程序实例,越会充满实践经验,越有确定的形状。

  这本书的目标之一不仅仅是解释Lisp语言,而是由Lisp引起的一种新方法。这是一个

  一种让你以后认识更多人的方式。随着编程环境变得越来越强大,编程语言也变得越来越有吸引力。

  例如,Lisp编程风格正在逐渐取代旧的计划然后实现的模式。

  在旧模型中,bug应该永远不会出现。提前做好详细的说明是应该的。

  以确保程序完美运行。理论上听起来不错。可惜规范是人写的。

  是的,也是人实现的。实际的结果是,先计划后实现的方法效果并不太好。

  作为OS/360项目的经理,弗雷德里克布鲁克斯对这种传统方法非常熟悉。他也不是。

  常熟意识到了它的后果:

  任何OS/360的用户都会很快意识到它应该做得多好.而产品已经晚了,它用

  比原方案多了内存,成本是预估的好几倍,直到第一版都不太好用。

  这之后的几个版本。2

  这是对那个时代最成功的系统之一的描述。

  旧模式的问题在于它忽略了人的局限性。在旧模型中,你打赌规格不会是严肃的

  缺陷,实现它们只是将它们翻译成代码的简单事情。经验证明,这确实是一件坏事

  很好的赌注。如果你打赌规范会出错,那么代码充满错误会更安全。

  事实上,这是新的编程模型所假设的。它试图尽可能降低错误的成本,而不是期望人。

  学生不会犯错。错误的代价是改正错误所花费的时间。使用强大的语言和优秀的编程循环。

  这种成本会大大降低。编程可以少依赖规划,多依赖探索。

  有线电视。

  计划是必要的罪恶。这是对风险的一种反应:工作越危险,你就越应该提前计划。

  重要。强大的工具降低了风险和规划需求。程序的设计可以从

  从经验中获益——这可能是最有用的信息来源。

  自20世纪60年代以来,Lisp风格一直朝着这个方向发展。用Lisp可以写的这么快。

  原型,这样你可以经历几个周期的设计和实现,而在旧的模型中,你可能刚刚写完。

  规格。你不用太担心设计缺陷,因为你会更早发现。你不必太

  担心虫子。当您以函数式风格编程时,错误只会产生局部影响。当你使用一个非常

  抽象的语言,有些错误(比如悬挂指针)是永远不会出现的,而其余的很容易发现,

  因为你的程序更短。当您拥有一个交互式开发环境时,您可以立即纠正错误,而不必通过编程。

  一个漫长的编译、编译、测试的过程。

  Lisp风格发展这么大,是因为结出了果实。这听起来很奇怪,但是计划越少意味着越好。

  在设计和科技史上,类似的例子数不胜数。类似的事件发生在15世纪的绘画中。

  油画颜料普及之前,画家画的是一种叫蛋彩画的物质,不能混合,也不能遮盖。错误的

  高昂的价格使画家变得保守。后来油画的出现,画风发生了很大的变化。

  改变。油画````允许第二个想法。“3它提供了处理困难的主题,如人物画等。

  决定性的优势。

  新媒体不仅使画家更容易绘画,也使新的和更雄心勃勃的绘画方式成为可能。

  詹森写道:

  如果没有油画颜料,佛兰德大师们征服看得见的现实的口号就会大打折扣。所以从

  从技术的角度来看,他们也无愧于被称为“现代绘画之父”,因为油画颜料已自

  成为画家的基本媒介。四

  鸡蛋色作为一种材料,并不逊色于油画颜料,只是油画颜料的弹性给人更多的想象空间。

  空间——这是决定性因素。

  程序设计正在经历类似的变化。新的媒介是“面向对象的动态语言”,也就是说

  口齿伶俐。并不是说几年内我们所有的软件都要用Lisp写。从鸡蛋颜色到油颜色的转变也

  这不是一蹴而就的;油画开始只在一些领先的艺术中心流行,而且经常

  结合鸡蛋颜色。我们现在好像就在这个阶段。Lisp在大学、实验室和一些

  与此同时,借用Lisp的思想越来越多地出现在主流中:交互。

  开发环境、垃圾收集和运行时类型只是几个例子。

  强大的工具正在降低勘探的风险。这对程序员来说是个好消息,因为这意味着我

  我们可以开展更雄心勃勃的项目。油彩的涂抹确实有这样的效果。它通过后的时期是积极的。

  这是绘画的黄金时代。编程领域也出现了类似的迹象。

  关于此文档.该文档是使用

  LaTeX2HTML翻译器2K.1beta版(1.48)

  版权1993,1994,1995,1996,

  尼科斯德拉克斯,

  利兹大学基于计算机的学习单元。

  版权1997,1998,1999,

  罗斯摩尔,

  悉尼麦考瑞大学数学系。

  命令行参数是:

  latex2html -split=0 acl1.tex

  翻译由戴玉文于2004年4月3日发起

  脚注.

  仍在使用的最古老的语言。1麦卡锡,约翰。符号表达式的递归函数

  和他们的计算机计算,第一部分。CACM,3:4(四月

  1960年版,第195—184页。

  这本书后来的几个版本。2弗雷德里克布鲁克斯,《神话中的人月》。艾迪森-韦斯利,

  读书(马),1975年,第16页。快速原型不仅是一种更快或更好的编写程序的方法,而且一些程序可能是没有这种方法的基础。

  我写不出来。

  即使是最雄心勃勃的人也会在巨大的工作面前退缩。如果他们能说服自己,他们不需要这么做。

  这需要付出很多努力(即使是表面上的),从这开始会比较容易。所以才会有这么多大事。

  从小事做起。快速原型让我们从小事开始。

  .油画````允许第二个想法。默里,彼得和琳达。文艺复兴时期的艺术。泰晤士河

  和哈德逊,伦敦,1963年,第85页。

  成为画家的基本媒介。4 Janson,W.J,《艺术史》,第三版。纽约艾布拉姆斯,

  1986年,第374页。这个比喻只适用于画布上的绘画。墙上的画还是用壁画。我也不是说

  绘画风格是由技术变革驱动的;相反的说法可能更接近事实。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • kotlon协程,深入理解kotlin协程pdf,一文彻底搞懂Kotlin中的协程
  • 深入解析C#(第4版),深入解析css pdf,深入解析contentWindow, contentDocument
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf,Java 反射机制原理与用法详解
  • ,,Java使用iTextPDF生成PDF文件的实现方法
  • ,,Python利用PyMuPDF实现PDF文件处理
  • 漫画算法小灰的算法之旅pdf,漫画算法2-小灰的算法进阶
  • devops和自动化运维实践 PDF,devops思想在运维方面的具体实践
  • pdf如何去除水印,pdf去水印的三种方法
  • 把a4的内容打印成a3小册子,a4的pdf文档如何打印成a3
  • nlp自然语言处理入门pdf,精通python自然语言处理 pdf
  • 容器docker基本操作,每天5分钟玩转docker容器技术 pdf
  • sklearn中文手册pdf下载,sklearn库模块及函数
  • 留言与评论(共有 条评论)
       
    验证码: