你知道哪几种当前流行的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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tags

RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tgs 文章目录 RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tgs1. 修改用户的密码1. 修改密码语法2. 修改案例 2.修改角色tags1. 修改标签(tags)语法2. 修改案例 可以使用 RabbitMQ 的命令行工具 rabbitmqctl 来修改用…

Laravel 项目如何运行

如有一个 Laravel 项目,在配置好 PHP 版本和运行环境后,可以直接在项目下直接运行: php artisan serve 来启动你的项目。 通过浏览器查看 当项目运行后,默认的启动端口为 8000,可以通过浏览器来进行查看运行的 Larav…

二维数组及其内存图解

二维数组 在一维数组的介绍当中曾说,数组中可以储存任何同类型的元素,那么这个元素是不是可以也是数组呢?答案是可以,即在数组之中储存数组元素。这种情况就是多维数组,当一个数组中的元素是数组时叫做二维数组&#x…

《系统架构设计师教程(第2版)》第8章-系统质量属性与架构评估-03-ATAM方法架构评估实践(下)

文章目录 3. 测试阶段3.1 头脑风暴和优先场景(第7步)3.1.1 理论部分3.1.2 示例 3.2 分析架构方法(第8步)3.2.1 调查架构方法1)安全性2)性能 3.2.2 创建分析问题3.2.3 分析问题的答案胡佛架构银行体系结构 3…

Spring 面试题(七)

1. Spring 是如何解决循环依赖的? Spring 通过一系列复杂的机制来解决循环依赖问题,特别是在单例作用域的 Bean 之间。以下是一些关键点和 Spring 如何处理它们: 构造函数循环依赖: Spring 容器无法解决构造函数注入导致的循环依赖。这是因…

222222222222222222222222

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

2024年MathorCup+认证杯数模竞赛助攻规划+竞赛基本信息介绍

为了更好的帮助大家助攻未来几天的竞赛,除了给大家上次提供的2024年上半年数学建模竞赛一览表(附赠12场竞赛的优秀论文格式要求) 又为大家提供了本周末两场数模竞赛2023年的竞赛题目以及优秀论文,希望能对大家本周末的竞赛有所帮…

1087: 【C3】【高精度】计算2的N次方

题目描述 任意给定一个正整数N(N<100)&#xff0c;计算2的n次方的值。 输入 输入一个正整数N。 输出 输出2的N次方的值。 样例输入 5 样例输出 32 Code: xint(input()) print(pow(2,x)) 用C太长了&#xff0c;这里放Python代码。

Linux quotaon命令教程:如何在Linux中启用磁盘配额(附实例详解和注意事项)

Linux quotaon命令介绍 quotaon是一个用于在一个或多个文件系统上启用磁盘配额的命令。文件系统配额文件必须存在于指定文件系统的根目录中&#xff0c;并且命名为aquota.user&#xff08;用于版本2用户配额&#xff09;&#xff0c;quota.user&#xff08;用于版本1用户配额&…

《C语言深度解剖》(4):深入理解一维数组和二维数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

动态指定easyui的datagrid的url

动态指定easyui的datagrid的url 重新指定datagrid url的请求方法&#xff1a; $("#dg").datagrid("options").url"xxx"注意&#xff0c;如果直接使用 $(#btnq).bind(click, function(){ $(#dg).datagrid({ url: xxx });//重新指定url$(#dg)…

(delphi11最新学习资料) Object Pascal 学习笔记---第9章第1节(Try-Except块)

9.1 Try-Except块 ​ 让我从一个相当简单的 try-except 示例&#xff08;ExceptionsTest 示例的一部分&#xff09;开始&#xff0c;这个示例有一个通用的异常处理块&#xff1a; function DividePlusOne(A, B: Integer): Integer; begintry// 如果B等于0&#xff0c;则引发异…

WKWebView生成PDF

一、简介 在使用 WKWebView 将网页内容保存为 PDF 文件时&#xff0c;您可以设置打印页面的大小和可打印区域&#xff0c;以确保生成的 PDF 文件符合您的需求。在 WKWebView 中&#xff0c;您可以使用 UIPrintPageRenderer 类的 paperRect 和 printableRect 属性来设置页面的大…

题目:#if #ifdef和#ifndef的综合应用。

题目&#xff1a;#if #ifdef和#ifndef的综合应用。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated s…

裸机编程与RTOS编程:理解模式差异与实例说明

裸机编程和RTOS&#xff08;实时操作系统&#xff09;编程是嵌入式系统开发中的两种主要编程模式&#xff0c;它们在资源管理、任务调度、并发处理、实时性保证等方面存在显著差异。本文将详细阐述这两种编程模式的特点、模式差异&#xff0c;并通过实例进行说明。 一、裸机编…

3D Web轻量引擎HOOPS Communicator装配制造流程演示

介绍 该演示介绍了使用HOOPS Communicator的独特工作流程&#xff0c;该工作流程从零件列表中加载零件&#xff0c;并使用自定义配合操作符&#xff08;例如共线、同心和共面&#xff09;构建装配模型。该工作流程可用于各种行业&#xff0c;例如维护手册、工作指令或电子商务…

BMS基础之锂电池充放电特性

磷酸铁锂电池 它充电在3.3V以后&#xff0c;会有一个猛地增加&#xff0c;所以3.3v其实就是他的饱和电压&#xff0c;如果继续充电就会损坏电池&#xff0c;同理放电到一定程度电压就会急剧下降&#xff0c;过放也会损坏电池&#xff08;充放电截止电压&#xff09; 三元锂电…

Spring、SpringMVC、Springboot三者的区别和联系

1.背景 最近有人问面试的一个问题&#xff1a;Spring、SpringMVC、Springboot三者的区别和联系&#xff0c;个人觉得&#xff1a;万变不离其宗&#xff0c;只需要理解其原理&#xff0c;回答问题信手拈来。 2.三者区别和联系 2.1 先了解Spring基础 Spring 框架就像一个家族…

oracle回收表空间

1. 手工计算实际大小 col owner format a20 col table_name format a40 col "act/block %" format 9999999 select owner, table_name, tablespace_name, act_size, block_size, block_size - act_size, round(act_size /…

Social Skill Training with Large Language Models

Social Skill Training with Large Language Models 关键字&#xff1a;社交技能训练、大型语言模型、人工智能伙伴、人工智能导师、跨学科创新 摘要 本文探讨了如何利用大型语言模型&#xff08;LLMs&#xff09;进行社交技能训练。社交技能如冲突解决对于有效沟通和在工作和…