对lisp新手来说,学习哪种方言,使用哪些参考书和开发软件更适合

author author     2023-04-25     331

关键词:

Common Lisp和Scheme是Lisp家族的两大主要方言,通用性比较好,ELisp和AutoLisp只能在特定的环境下使用,所以不推荐。

如果你只是想学习PF的思想,可以直接学习Scheme,FP的思想都有了,还比较简单,只不过库不太完备。如果追求CL的强大可以看看Racket,是PTL Scheme的进化版。
IDE推荐:

DrRacket

书籍推荐:

Teach Yourself Scheme Mit Press
Simply Scheme MIT Press
LISP in small pieces
r5rs

基本都有电子版,第三个Lisp in small pieces不能作为入门教程,它默认你已经学会了Scheme,并且着重讲如何实现一个Scheme的解释器或者编译器以及一些比较深层次的概念,不太好懂但是很开阔思路,而且经常将Scheme和CL进行对比,使你能够触类旁通。最后一个是Scheme的规范,也不适合作为入门教程,更适合作为reference,虽然它比较薄只有几十页。如果英文不太好,可以看看网上有没有中文版。

不过相对来说我还是推荐Common Lisp,原因三言两语也说不清,比较正统的Lisp,工业化程度高,如果你看过《黑客与画家》应该有所了解,但是缺点是学习难度大,虽然大家都说CL久经历练,但是糟粕也不少,这些别人说了没用,只有你学完了之后做两个项目才有体会。不过总起来说还是一门非常伟大的语言。首先由Lisp引进的编程思想包括if/then/else控制结构、递归函数调用、动态内存分配、垃圾收集、高阶函数、词法闭包、交互式编程、增量编译以及动态类型……
IDE推荐:

Lisp in a box
LispWorks(适合高薪阶层)

书籍推荐:

Practical Common Lisp
ANSI Common Lisp

我当初就是利用这两本书学习的,不过在学习过程中主要还参考了

Lisp Quick Reference
Common Lisp The Language

第一本参考用公式的方式把基本用法列出,基本上覆盖了整个ANSI Common Lisp标准,但是可能比较晦涩,不过习惯了就好了。第二本就不说了,类似牛津词典,一千多页,不懂的查查就行了,一般人看不下来,看下来也没啥意思。
当你读过这些书之后,基本上已经对Lisp有一个较深的了解,这时你可以自己写个项目练练手,或者直接到github上clone一个。另外还有些书不错,但是因为你已经有了比较扎实的基础,你可以随便看看,没必要像看课本那么仔细:

On Lisp(与Common Lisp The Language同一作者,相当于CLTL的进阶版)
Common Lisp A Gentle Introduction to Symbolic Computation
Land of Lisp(好多漫画!)
Successful Lisp
Tutorial on Good Lisp Programming Style
The Art of the Metaobject Protocol

这些书除了最后两本我都看得不是很仔细,因为很多和Practical Common Lisp、On Lisp有重复,所以我只是看一些有特点的部分。倒数第二本讲的是如何养成良好的Lisp编程风格,你可以当成散文来读。最后一本比较深,我也没有看完,主要讲的是CLOS相关的东西,可以用来开阔思路。

其实如果你想学习CL这门语言,这些足足足足足足够了,但是你还是觉得很无聊,好吧,再推荐两篇文章:

The Roots of Lisp
Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I

建议把这两篇文章打印出来,一行行的看!一是因为都比较短,花不了你多少钱,二是因为都值得反复推敲,不是看一遍就扔了。第一篇文章是paul graham写的,就是那个ANSI Common Lisp、On Lisp以及《黑客与画家》的作者,主要内容是对第二篇论文的总结概括,探讨了Lisp的根基理论,难度较小,一共就十几页,看完了会有一些新的收获,这些是你看其它语言教程看不来的。第二篇我就不说了,Lisp的作者写的,好好看下,想想作者是如何设计出这样一门伟大的语言的,别说你数学不好,你不会学呀,再说这里用的数学也不难。

另外我不太清楚你学习Lisp的目的,上面说的可能比较适合一般的程序员,如果你是AI研究者你可以直接看下面的两本:

Paradigms of Artificial Intelligence Programming,Case Studies in Common Lisp
The Elements Of Artificial Intelligence(An Introduction Using Lisp)
参考技术A 为什么学?用来解决什么问题?背景很重要。

人工智能程序设计语言主要都有哪些

...和应用中占重要地位的两种人工智能程序设计语言。一般来说,人工智能语言应具备如下特点:·具有符号处理能力(即非数值处理能力);·适合于结构化程序设计,编程容易;·具有递归功能和回溯功能;·具有人机交互能力... 查看详情

zencart与oscommerce、opencart、prestashop哪种开设外贸网店更适合新手操作

本来不想回答的,呵呵,奈何我天天和这些程序打交道,给你个选择吧:opencart速度最快,对空间要求最低prestashop速度比opencart稍慢,对空间要求和opencart差不多,oscommerce和zencart,属于被抛弃的品种,好处是,免费模板多,缺点... 查看详情

新手机器学习工程师常犯的错误有哪些?

在机器学习中,构建产品或解决方案的方法有很多,每种方式的假设情况都不一样。很多时候,浏览和识别哪些假设是合理的不是很容易。对于刚入门机器学习的童鞋,在工作中可能经常会遇到各种各样的问题,本文和大家分... 查看详情

决定使用哪种机器学习算法

】决定使用哪种机器学习算法【英文标题】:Decidingwhichmachinelearningalgorithmtouse【发布时间】:2017-03-1902:18:45【问题描述】:我在测试中得到了这个问题。我不清楚正确答案是什么,因为这三个都是分类算法:您有一项拼车服务,... 查看详情

lisp 从不匹配谓词的列表中过滤掉结果

...:2011-01-1503:29:54【问题描述】:我正在尝试使用emacs方言学习lisp,但我有一个问题。假设列表有一些成员,谓词评估为假。如何在没有这些成员的情况下创建新列表?类似AinL:p(A)istrue。在python中有过滤功能,在lisp中有没有等价... 查看详情

问题集录--新手入门深度学习,选择tensorflow好吗?

新手入门深度学习,选择TensorFlow有哪些益处?佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好。相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合OpenCV使用,对于新手来说,基本上不折腾个几天是很... 查看详情

前端学习函数式编程的方法和误区(代码片段)

函数式编程思想,前端同学的必选项。函数式编程是一门古老的技术,从上个世纪60年代Lisp语言诞生开始,各种方言层出不穷。各种方言带来欣欣向荣的生态的同时,也给兼容性带来很大麻烦。于是更种标准化工... 查看详情

哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?

】哪种DATATYPE更适合使用TEXT或VARCHAR?【英文标题】:WhichDATATYPEisbettertouseTEXTorVARCHAR?【发布时间】:2010-11-1506:42:09【问题描述】:这个问题基于performance和size两件事基于性能哪些会影响哪些会提高?【问题讨论】:注意:许多答... 查看详情

哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?

】哪种DATATYPE更适合使用TEXT或VARCHAR?【英文标题】:WhichDATATYPEisbettertouseTEXTorVARCHAR?【发布时间】:2010-11-1506:42:09【问题描述】:这个问题基于performance和size两件事基于性能哪些会影响哪些会提高?【问题讨论】:注意:许多答... 查看详情

新手java应该怎么学?

...行业发展前景,它在行业中的影响力已是不可避免的。那新手java应该怎么学?学java无非就是自学和报班这两种方式,至于java自学还是报班好,这个还是需要根据您自身的条件来判断的。如果您自控能力、自学能力且有基础那自... 查看详情

acm新手赛体会

 本次2018级ACM新手赛,是我第一次接触的编程比赛。比赛的内容和规则对我来说都非常新鲜。从前只是一个人在宿舍对着一道题目苦思冥想,有时还可以参考网络上面的做法,但比赛不一样,众多拥有着不同基础的同龄人坐... 查看详情

如何学习计算机程序的构造和解释

您的浏览器不支持HTML5视频zymedia(\'video\')参考技术A英文原版:《StructureandInterpretationofComputerPrograms》简称SICP我只是围绕这本书,再多说一些与它有关的八卦和资料。《HowtoDesignPrograms》入门比SICP低一些。而且会把Scheme的基本语法... 查看详情

大前端的完整技术栈包括哪些?

 关于新手学习web前端需要多久?我们应该是比较辩证的去看待这个问题,学习一门新的技术的时间很大程度是取决于自身的,比如说之前大学学的专业就是和代码相关的,虽然对web前端没什么了解,但是学起来还是要快一点儿... 查看详情

学习hadoop需要多长时间?都学哪些内容

...,不确定自己目前从事的行业、掌握的技能是否能够达到学习大数据的要求。hadoop作为大数据行业使用的主要框架,想进入大数据行业学习Hadoop开发是必须的。让Hadoop跑起来大概流程Hadoop框架自身是由Java语言编写,天生支持使... 查看详情

web前端开发培训需要掌握哪些技能

...比较多人进入的,那么对于想要参加前端开发培训的学员来说前端开发培训要学习哪些知识点呢?1、基础学习主要就是html、css、JavaScript。建议直接从html5、css3、ES5入手进行来学习。由于该部分是web前端开发中的基础部分,因此... 查看详情

学习树莓派上编程的时候,需要哪些教程

树莓派教程(持续更新)百度网盘免费资源在线学习   链接:https://pan.baidu.com/s/1PuxuAIN8dV37G5E2n33pCA提取码:wuuj  树莓派教程(持续更新)中谷教育-Python视频教程(完整版) 游戏镜像微雪5寸显示器config树莓派详细资... 查看详情

关于机器学习应用不得不思考哪些问题?

...完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。让我们具体看一个例子。图4房价的例子拿国民话题的房子来说。现在我手里有一栋房... 查看详情

lisp值得去学习吗

Lisp值得去学习。LISP语言适用于符号处理、自动推理、硬件描述和超大规模集成电路设计等。特点是,使用表结构来表达非数值计算问题,实现技术简单。LISP语言已成为最有影响,使用十分广泛的人工智能语言。在LISP语言中,... 查看详情