你知道哪几种当前流行的lisp语言的方言?

估计很多人都看过《黑客与画家》这本书,这本书主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。作者保罗格雷厄姆字里行间不经意间向大家推介Lisp是最好的编程语言。

Lisp特色

Lisp确实是非常有特色编程语言,它的速度像C一样快,但是它又像python那样像是解释执行;Lisp可以写实时写代码的代码并实时运行这段写代码的代码。很多人刚开始接触python的时候对强制空格对齐深恶痛绝,但跟lisp的括号比,那就是小巫见大巫。

Lisp方言

Lisp还有一个特色就是它的方言版本特别多,这在其它语言都不太常见。其它语言可能也有多种,比如basic有True BASIC、Turbo BASIC、QBasic、Visual Basic等多种,但是在某一时间之内,大约只有1-2个最流行,而且不同basic之间尽管差别很大,关键字还是比较一致的。而Lisp却不这样,它的多个方言同时并存,而且它的方言之间差别很大,除了少数几个关键字相同其它关键字可以完全不同,可以说除了是Lisp语言的方言这一共同点之外,各方言可以是完全不同的语言。

当前流行的Lisp语言方言

  1. Common Lisp:Common Lisp是LISP语言的一种标准化形式,旨在提供一种跨多种平台和实现的通用LISP方言。它拥有丰富的功能和广泛的应用,特别是在科学计算、人工智能和符号计算等领域。Common Lisp具有强大的宏系统,允许用户定义新的语法和操作符,从而极大地扩展了语言的能力。它也是保罗格雷厄姆以前最推崇的LISP语言。
  2. Scheme:Scheme是LISP语言的一个简洁且一致的方言,强调代码的可读性和可移植性。它具有静态作用域和词法闭包,以及一个简单而强大的宏系统。Scheme在教育和研究领域非常受欢迎,也是许多编程语言和工具的基础,如Racket和Guile。
  3. Emacs Lisp:Emacs Lisp是与Emacs文本编辑器紧密相关的LISP方言。Emacs本身是用LISP编写的,因此Emacs Lisp允许用户通过编写自定义的LISP代码来扩展和定制Emacs的功能。这使得Emacs成为一个高度可配置和可扩展的文本编辑器,深受程序员和黑客的喜爱。
  4. ARC:ARC是保罗格雷厄姆为探索性编程而设计的:你可以通过编写它来决定要写什么。探索性编程的一个好处是使程序简短且具有延展性。可惜的是这个语言好像并没有推广开来,而且保罗格雷厄姆也不像以前那样投入精力在ARC了。
  5. HY:HY是一种提供了对Python内置库和第三方Python库直接访问功能的LIsp方言。它同时允许自由混合命令式、函数式和面向对象的编程风格。比如我们可以使用HY语言驱动飞桨进行人工智能的训练和推理,可参见这篇文档:用Lisp的方言HY跑飞桨训练和推理_hy lisp-CSDN博客

也可以尝试使用python写一个简单的LISP解释器,参考:编程奇妙之旅:使用Python写一个Lisp语言的解释器_lisp 解释器-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/527778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【linux】set ff=unix、linux设置文件格式

文章目录 一、文件格式二、如何查看文件格式三、设置文件格式、set ffunix四、查看unix与dos的区别 一、文件格式 当我们打开sh脚本时发现有时候格式是unix(LF) ,有时候是windows(CR LF) 。如下图: 文件格式影响了文件中的换行符 linux中sh类型的文件一般要设置为…

[dvwa] CSRF

CSRF 0x01 low 跨站,输入密码和确认密码直接写在url中,将连接分享给目标,点击后修改密码 社工方式让目标点击短链接 伪造404页,在图片中写路径为payload,目标载入网页自动请求构造链接,目标被攻击 http…

Python | Leetcode Python题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:quadruplets list()if not nums or len(nums) < 4:return quadrupletsnums.sort()length len(nums)for i in range(length - 3):if i > 0 …

222222222222222222222222

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

DevOps已死?2024年的DevOps将如何发展

随着我们进入2024年&#xff0c;DevOps也发生了变化。新兴的技术、变化的需求和发展的方法正在重新定义有效实施DevOps实践。 IDC预测显示&#xff0c;未来五年&#xff0c;支持DevOps实践的产品市场继续保持健康且快速增长&#xff0c;2022年-2027年的复合年增长率&#xff0…

标定系列——Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译(二十)

Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译 说明下载安装步骤1.更新2.安装必要的依赖包3.下载源码包并解压4.终端运行如下命令5.添加配置路径6.验证安装是否成功 说明 Ubuntu18.04下对opencv-4.5.3与opencv_contrib-4.5.3源码编译 下载 CSDN下载 安装步骤 …

[Linux][权限][粘滞位]详细解读,深入了解Linux权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户(root)、普通用户 超级用户&#xff1a;可以在Linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在Linux下做有限的事情&#xff0c;可以有多个超级用户的命令提示符是**“#”&#xff0c;普通用户的命…

运算放大器的熟练运用-6个经典的高级电路

前一篇文章讲了运算的一般分析计算方法。 其中&#xff0c;重点提到了运放分析的两把“板斧”------“虚短”和“虚断”&#xff0c;有了这两个基本概念&#xff0c;再结合常用的欧姆定律&#xff0c;基尔霍夫电流&#xff0c;电压定律基本就可以解决大多数问题了。我们现在可以…

使用 Go-Ora 连接到 Oracle 数据库

前文 《 一鍵啓動 Oracle 23c Free 》 介绍了如何使用容器技术快速拉起 Oracle 23c 数据库。 这个开发者版本可以很便捷的拉起、测试、销毁&#xff0c;对开发者是非常友好的。 本文将介绍如何使用 Go 语言构建项目&#xff0c;并连接到 Oracle 数据库。 Go 环境配置 本文使用的…

基于在线脑电图的运动框架解码运动意图

多年来&#xff0c;我们研究了自然控制的各个方面&#xff0c;然而&#xff0c;单个方面的研究成果尚未被整合。在这里&#xff0c;我们提出了一个全面的在线研究中该框架的第一个实现&#xff0c;结合(i)目标定向运动意图、&#xff08;ii&#xff09;轨迹解码和&#xff08;i…

VSCode输入花括号{}}会多一个解决方案

打开设置 搜索Closing Brackets 选择BeforeWhitespace 选完后重启下VSCode即可

AI应用实战1:AI项目实战五大环节

文章目录 环节一&#xff1a;定义问题环节二&#xff1a;收集和处理数据环节三&#xff1a;选择机器学习模型环节四&#xff1a;训练模型环节五&#xff1a;超参数调试和性能优化1.评价模型效果的指标分类任务评估标准&#xff1a;回归任务评估标准&#xff1a;其他通用评估指标…

【Linux】TCP编程{socket/listen/accept/telnet/connect/send}

文章目录 1.TCP接口1.1socket文档 1.2listen拓&#xff1a;端口号8080 1.3accept拓&#xff1a;今天全局函数 1.4读写接口1.5telnet1.一个客户端2.两个客户端 1.6ulimit -a1.7常识回顾1.8connect1.9拓&#xff1a;客户端的ip和地址什么时候被分配&#xff1f;1.10拓&#xff1a…

力扣739. 每日温度

Problem: 739. 每日温度 文章目录 题目描述思路复杂度Code 题目描述 思路 若本题目使用暴力法则会超时&#xff0c;故而使用单调栈解决&#xff1a; 1.创建结果数组res&#xff0c;和单调栈stack&#xff1b; 2.循环遍历数组temperatures&#xff1a; 2.1.若当stack不为空同时…

AQS(AbstractQueuedSynchronizer)

一、什么是AQS AQS的全称为&#xff08;AbstractQueuedSynchronizer&#xff09;抽象的队列式的同步器&#xff0c;用来构建锁或者其他同步组件的基础框架类。使⽤AQS能简单且⾼效地构造出应⽤⼴泛的⼤量的同步器&#xff0c;如&#xff1a;基于AQS实现的lock、CountDownLatch…

计算机是如何工作的6

因此&#xff0c;往往就把“并行”和“并发”统称为“并发” 对应的编程方式&#xff08;解决一个问题&#xff0c;同时搞多个任务来执行&#xff0c;共同协作解决&#xff09;就称为“并发” 此处cpu的百分数&#xff0c;就是你的进程在cpu舞台上消耗时间的百分比 如果有一…

字符串2s总结

4.字符串 字符串理论基础 什么是字符串 字符串是若⼲字符组成的有限序列&#xff0c;也可以理解为是⼀个字符数组&#xff0c;但是很多语⾔对字符串做了特殊的规定&#xff0c;接下来我来说⼀说C/C中的字符串。 在C语⾔中&#xff0c;把⼀个字符串存⼊⼀个数组时&#xff0c…

Android Activity 介绍

Activity Activity 是一个应用组件&#xff0c;用户可与其提供的屏幕进行交互&#xff0c;以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕&#xff0c;但也可小于屏幕并浮动在其他窗口之…

Cherno CPP学习笔记-01-背景知识

0、工具网站收集 C语言版本特性 https://en.cppreference.com https://www.cplusplus.com https://www.tutorialspoint.com/cplusplus https://www.learncpp.com https://github.com/fffaraz/awesomecpp https://stackoverflow.com 网页CPP编译器 [C] gcc 12.1.0 - Wa…

expected scalar type long but found float

在报这个错误的情况下&#xff0c;找到报错的路径&#xff0c;将target 改为target.long()就可以解决了