请问你为什么学习Lisp?

学习 Lisp 语言的相关书籍 Lisp语言难以推广的原因有很多,而相对来说,比较高额的学习成本便是这众多原因的其中之一 ...... 阅读详情

前言:本文来自于我的知识星球“码农翻身”的一个提问:“请问你为什么要学习lisp?” 嘉宾抓狂的回答我很喜欢,略作修改分享给大家。

如果你是问“我”为什么要学,那是因为《黑客与画家》这本书里面作者Paul Graham说它很牛x,不是针对谁,是说在座的所有语言都是辣鸡。

Paul是谁? 

人称“硅谷创业教父”,哈佛大学计算机博士,1995年,创办世界上第一个互联网应用程序Viaweb。1998年,Yahoo以5000万美元收购。2005年建立创业孵化器Y Combinator ,已经帮助建立了多达200家创业公司,其中包括Dropbox、Reddit和Airbnb在内的重量级创业公司。

640?wx_fmt=jpeg

当时我就想虽然你很牛,但是你说Lisp厉害就真的很厉害吗?我得亲自体验一下是不是和宣传的一个效果咯。

硬着头皮试着使用过一段时间之后发现这已经不是很牛x的程度了,对于当时只接触过 C 和 Java 不知道天有多大的我来说已经是颠覆级别了,颠覆啊!到后来都是吃惊到张着嘴在学习啊!从来不知道还能这么玩儿啊!

到后来我学了编译原理......我的妈呀,有一种醍醐灌顶的感觉,原来 Lisp 是这么一个意思啊。

这就是我从入坑到入门的经历。再往后的故事就离题了。这就是我学 Lisp 的机缘巧合。

如果是你想问“作为一门语言,而且是一门极为小众的,上手门槛貌似巨高的,乍一看语法诡异到反人类的语言,到底还有没有学习的意义?既然这么小众难道学来就为了装逼?”这个问题的话,那我就一个一个回答。

1. 小众不代表不好。

我一直认为 Lisp 是“屠龙之技”。什么叫屠龙之技,绝世武功,但是根本没几个人会用,也没有那么多龙让你屠,反而没有普通的功夫来的人气高。

2. 上手门槛其实很低。

门槛高就高在太小众,资料相对别的主流语言太少太少,而且 Lisp 本身又有一堆方言,也就是 Lisp 不是像 Java 那样有大公司来维护,也不像 C 那样有相对公认的标准,Lisp 是由一堆变种组成的,大同小异,就像方言一样。所以新手就算装个 Lisp 环境就已经要累死了,文化人的说法就是,“望而却步”。

3. 语法反人类?

语法层面我敢说没有任何一门语言能超过 Lisp。为啥?优点列出来比这篇文章还长。语法层面我敢说没有任何一门语言能超过 Lisp。为啥?优点列出来比这篇文章还长。 这里就简要说几点。

所谓的语法奇葩就是因为 Lisp 直接采用语法树(前缀表达式,S-表达式)作为语言本身的表示形式。(但严格说来并不是采用 S-表达式 就能号称是 Lisp,Lisp 的特点是基于那几个原语推导出整个系统。)


S-表达式这种东西表面上容易体会到的优点大概也就是:

(1) 砍掉了优先级这个无聊的东西 

中缀表达式 1 + 2 * 3 

使用 S-表达式表达 

如果先算乘再算加是 (+ 1 (* 2 3)) 

如果先算加再算乘是 (* 3 (+ 1 2)) 

如你所见,不可能搞混。


 (2) 统一了各种操作的表达方式 

中缀表达式: 1 + 1 

S-表达式: (+ 1 1) 


大部分语言中的函数调用: plus(1, 1)

S-表达式: (plus 1 1)  


大部分语言中的条件判断: if (A) B else C,或者 A?B:C 

S-表达式: (if A B C) 


我们放在一起对比一下 

1 + 1 

plus(1, 1) 

if (A) B else C 

A?B:C 


 (+ 1 1) 

(plus 1 1) 

(if A B C)  


所以如果你第一次学编程,你会选择哪种表达形式? 所以到底哪个才是奇葩?

(3) 其它优点给你个眼神自己体会

再扯得『高端』一点,因为有了很奇葩的 S-表达式,才有可能统一各种表示形式 --- 不论是代码本身还是数据结构,统统用 S-表达式。(同像性)


也正因如此,才可能有 Lisp 宏这种东西存在。别的语言中即使有宏,也需要先转换成语法树,再操作语法树。所以如果有种语言想不做转换就操作语法树,那这种语言看起来就是 Lisp。。。


这东西就是如果你能听懂那你一定已经接触过 Lisp,也就不用我说。如果听不懂,那我解释有啥用。。。


所以这也是为啥你看到这么多传教的,却好像不想泄露天机一样,不是不想告诉你,是这东西实在太奇葩,没有办法做类比啊。

说到底,大家最关心的,到底有啥用!能赚钱么!能找工作么!

没办法,大家都是实在人。我就在这明说吧。

只学Lisp,然后只找 Lisp 工作那是不可能滴,也许这辈子都不可能找到工作。

但是学会了之后你有很大概率开启上帝视角,能站在一个相当高的高度去审视别的语言,这不是在吹牛,这是真的,真的相当高。

你可以看穿为什么别的语言要这么设计,为什么要提供这种语法糖,为什么要有这种设计模式,可以快速上手绝大多数所谓新语言。

面试的时候能写的一手风骚的 Lisp 也能唬住面试官啊。(我会告诉你我就是这么找到工作的?)当然这一切都建立在你能基本掌握 Lisp,以及有一颗刨根问底的心。 最后,点题!点题很重要!

为什么要学!程序语言界最亮最酷炫的奇葩就在那里!为什么不学!

640?wx_fmt=png

欢迎加入我的知识星球“码农翻身”,在那里给大家分享我是如何积累起现在的知识结构,学习过程的血和泪,职业发展的经验和教训,日常的所思所想,希望能帮助大家少走点儿弯路。

详情参见参见这篇文章:2018,开通一个交流新渠道!

对于加入知识星球的同学提供特别的福利,即2017编程提高群第一季和第二季的部分“加餐”视频:

漫谈计算机组成原理和计算机编程语言

程序的机器级表示

漫谈操作系统之虚拟内存

进程和线程

新人在职场

Java并发编程

如何用Antlr实现自定义的简单脚本语言

缓存

BTree及其在数据库的应用

分布式文件系统FastDFS

欢迎大家加入, 二月份优惠期 99元/年, 从三月份起恢复为128元。

640?wx_fmt=png

【简单介绍Lisp的学习历程】 🌊Lisp 是一种历史悠久的编程语言,由约翰·麦卡锡(John McCarthy)在 1958 年开发,以其前瞻性的功能在计算机科学界走向传奇。Lisp 语言家族包含了多种方言,其中最著名的包括 Common Lisp 和 Scheme。 阅读详情

相关推荐

【简单介绍下Lisp的学习历程】

🌊Lisp 是一种历史悠久的编程语言,由约翰·麦卡锡(John McCarthy)在 1958 年开发,以其前瞻性的功能在计算机科学界走向传奇。Lisp 语言家族包含了多种方言,其中最著名的包括 Common Lisp 和 Scheme。

cz88888888666的博客 1818

Lisp真的是屠龙之技吗?

Lisp真的是屠龙之技吗?对Lisp的学习有一段时间了,Lisp这门50多年的语言在天朝这样一个浮躁的环境里面的确生存空间极小,除了有名的伞哥现在从事Common Lisp的开发工作之外,其他没有听说过几个。51job和智联以Lisp为关键字搜素,相关职位不到1页,几乎全部是AutoCAD Lisp开发,或者要求应聘者熟悉的一门函数语言里面出现,并且还是和perl/erlang并列的形式出...

duoerbasilu 4504

Lisp语言的机器学习算法

Lisp(List Processing)是一种具有悠久历史的编程语言,最早由约翰·麦卡锡(John McCarthy)于1958年提出。Lisp以其强大的符号处理能力和灵活的语法结构,在人工智能(AI)领域占据了重要地位。尽管近年来Python、R等语言在机器学习(Machine Learning, ML)领域大放异彩,但Lisp依然在某些特定的机器学习任务中展现出独特的优势。本文将探讨Lisp语言在机器学习算法中的应用,并通过实例展示其在实际项目中的实践。

2501_90932998的博客 856

【编程语言】从0到1学Lisp:开启函数式编程之旅

通过学习 Lisp,你不仅掌握了一门独特的编程语言,更重要的是,你拓展了自己的编程思维边界。从 Lisp 的函数式编程中,你学会了以一种全新的视角看待问题,将问题分解为一系列的函数求值和数据变换,避免了可变状态带来的复杂性,使代码更加简洁、可维护和易于理解。你深入理解了递归的强大力量,能够用递归的方式解决许多复杂的数学和逻辑问题,如阶乘计算、斐波那契数列生成等 。

大雨淅淅的博客 2153

Lisp语言的人工智能

在计算机科学的历史上,Lisp(李斯普)语言是最早被开发出来的编程语言之一,成立于1958年。它不仅是一种通用语言,还是人工智能(AI)研究的重要工具。Lisp的设计理念与结构使其在表达复杂计算和实现高级抽象方面具有无可比拟的优势,尤其是在处理符号计算、递归和动态数据结构等方面。本文将深入探讨Lisp语言如何在人工智能领域发挥重要作用,并对其历史背景、基本特性、应用领域以及未来的趋势进行分析。

2501_90425591的博客 1280

Common Lisp 学习书目

书籍 1、《Common Lisp: A Gentle Introduction to Symbolic Computation》 English Version:http://www.cs.cmu.edu/~dst/LispBook/ 中文版:无 适用于无编程基础人士 2、《Common Lisp the Language, 2nd Edition》 English Vers

u011050969的专栏 1748

[转帖文章] 对Lisp的非技术性吐槽

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34347651的博客 292

CPG控制网络入门

从线性变换开始推导

妖米的博客 5044

lisp语言是最好的语言_Lisp可能不是数据科学的最佳语言,但是我们仍然可以从中学到什么呢?...

lisp语言是最好的语言This article is in response to Emmet Boudreau’s article ‘Should We be Using Lisp for Data-Science’. 本文是对 Emmet Boudreau的文章“我们应该将Lisp用于数据科学”的 回应 。 Below, unless otherwise stated, lisp refe...

weixin_26746401的博客 836

企业微信微盘API权限避坑指南:为什么你的Python脚本无法获取文件列表?

本文深入解析了企业微信微盘API的权限模型,解释了为何即使使用超级管理员账号,Python脚本也可能因权限不足而无法获取文件列表。核心在于微盘API基于“应用身份”而非“用户身份”进行校验,应用只能访问自身创建的空间。文章提供了构建文件上传代理、利用事件回调等合规的替代方案,帮助企业实现高效数据同步。

weixin_29322553的博客 533

Cadence SIP Layout 简单教程-第一章

以摄像头模组软硬结合板为例,描述layout的整个完整过程,从而掌握基本技能。 第一章 准备工作 第一节 原理图不用说layout前需要绘制原理图,原理图不在本文讨论范围内,所以列为准备工作。 需要特别说明的是,绘制原理的最终目的是导出网络表,网络表中的重要参数footprint是让layout软件选择正确封装的关键,所以这里讲解一下原理图设置footprint的位置。在原理图中双击零件,...

whp1920的博客 1万+

C语言网络编程——基础

OSI七层参考模型 是理想化的并没有完全实现的模型。 应用层 提供响应的应用服务 表示层 数据的表示和加密 会话层 建立会话关系 传输层 通过传输协议传输数据 网络层 实现跨子网通信,路由转发,维护路由表。 数据链路层 实现以太网内数据帧的转发 物理层 按照一定的传输规则传输电信号。 TCP/IP 四层模型 详细介绍见https://blog.youkuaiyun.com/Stars____/article/details/108694074 SCTP协议:TCP的升级版 TCP/IP 网络编程 unix域套接字:用于

Stars____的博客 8124

USRP X410 MPM版本与主机UHD版本不匹配问题记录与解决

至此大功告成!之前安装软件的坑算是填起来了,再次记录一下,希望能帮到有同样问题的小伙伴~

yanzuwu233的博客 1435

为什么没人学习LISP?

LISP语言教程 作者:牛魔王 — 上次修改时间: 2007-03-22 13:13 Scheme 语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。 Sch...

NineInchNails的专栏 448

产业大脑+未来工厂:揭秘浙江数字经济系统的5大核心场景搭建指南

本文深入解析了“产业大脑+未来工厂”这一浙江数字经济系统的核心范式,并提供了五大核心场景的实战搭建指南。文章详细阐述了从供应链协同、产能共享到产品创新、质量追溯及绿色低碳等关键场景的构建逻辑与技术架构,旨在帮助企业实现从技术驱动到场景驱动的价值落地,破解数据孤岛难题,提升产业链整体效能。

mac99的博客 667

SpringBoot3.X及SpringAi和jdk17以上版本集成MCP协议供大模型调用sse协议

MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 推出的开源协议,旨在实现大型语言模型(LLM)与外部数据源和工具的无缝集成,用来在大模型和数据源之间建立安全双向的链接。目标是成为 AI 领域的“HTTP 协议”,推动 LLM 应用的标准化和去中心化。本文主要讲解SpringBoot3.X版本和jdk17版本如何集成MCP协议 后续还有一个SpringBoot2.7和jdk1.8通过solon来实现@Service。

weixin_47247523的博客 788

为什么Micro Lisp值得学习?探索极简编程语言的设计哲学

Micro Lisp是一款超精简的Lisp编程语言,其核心实现仅用不到200行C代码就能构建一个功能完整的解释器。这款极简语言不仅展示了编程语言设计的精髓,更为初学者提供了理解程序本质的绝佳途径。 ## 极致精简的代码实现 Micro Lisp的核心魅力在于其惊人的简洁性。通过查看[micro-lisp.c](https://link.gitcode.com/i/6a5032502b46561

gitblog_00279的博客 1029

Vue3 视频播放器完整指南 – @videojs-player/vue 从入门到精通

全面解析 Vue3 生态中最强大的视频播放解决方案 @videojs-player/vue。从基础安装到高级功能,涵盖自动播放、直播流、字幕支持等核心特性。提供完整的代码示例和最佳实践,助你快速构建专业的视频播放应用。

前端开发-前端技术分享 1422

AI时代芯片选型:别再纠结主频,算力、带宽与能效才是核心

在传统MCU时代,主频曾是衡量芯片性能的直观标尺,一颗芯片的频率高低往往决定了处理任务的快慢。然而随着AI负载的普及,矩阵乘法和卷积运算成为主流,芯片的真实能力越来越取决于并行算力、内存带宽以及单位功耗能效,而非单纯的时钟频率。算力以TOPS为单位,反映了芯片在INT8精度下的峰值计算能力;内存带宽决定了数据搬运速度,常常成为推理性能的实际瓶颈;能效比TOPS/W则直接关系到边缘设备能否在散热和功耗约束下稳定运行。从STM32到RK3588,不同档位的芯片在AIoT、工业质检、边缘计算等场景中各有定位。理解

weixin_33895695的博客 457

笔试题-2023-加特兰-数字IC设计【纯净题目版】

笔试题-2023-加特兰-数字IC设计【纯净题目版】

w0shishabi的博客 2248

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志

 为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志为什么Lisp语言如此先进?(译文)

weixin_33911824的博客 124

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Lisp语言是什么?为什么保罗·格雷厄姆极力推荐 Lisp?

保罗的书如《On Lisp》和《ANSI Common Lisp》就是这种深浅结合的典范:新手学语法,专家学高级宏技巧。他甚至开发了 Arc,一种 Lisp 方言,来简化 Lisp。

阿正的梦工坊 1554

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

20、为什么选择Lisp?

本文探讨了Lisp语言及其现代变种Hy在编程和研究中的应用优势。通过Hy的简洁语法和强大功能,可以轻松实现Web开发、网络爬虫、深度学习模型、自然语言处理及知识图谱创建等多种复杂应用,同时保持代码的优雅与高效。文章结合实际案例展示了Hy如何利用Python生态系统进行灵活开发,并总结了其在商业产品开发中的潜力。

weixin_35749786的博客 991

为什么Lisp如此先进,却永远成为不了编程主流语言?深度解析Lisp的优势与劣势

Lisp 的争议 由于 Lisp 语言的 “过于灵活而神秘存在” 的特性使得 Lisp 成了世界上最受争议的编程语言,实际上独树一帜的 Lisp 也在(针对不同的产品,总有热衷「语言比较」的人们引发语言优势性的争论)类的问题得到庇护,因为 Lisp 语言本身不是针对开发项目而诞生的语言,这种性质完美的避开了针对项目类型而友好的语言之间的比较话题。尽管如此,还有很多人用「Lisp 永远成不了编程主流语言」来反驳极少 Hacker 所说的「Lisp 是 Hacker 们最好的神器」。 虽然 「Lisp 永远成为

Viper的程序员修炼手册 1万+

Lisp语言的学习路线

Lisp的历史与背景Lisp的基本概念环境搭建基础语法与数据结构函数式编程与递归宏与元编程高级主题:CLOS与异能项目实践与开源资源学习资源与社区使用defmacrolisp生成平方的代码学习Lisp是一段充满挑战与乐趣的旅程。通过掌握Lisp的基本概念和程序设计技巧,探索其强大的宏系统和功能编程特性,学习者将获得新的视角和思维方式。希望本文的学习路线能够为你的Lisp学习之旅提供帮助与指导。

2501_90435995的博客 832
上一篇: 祝大家新春快乐,万事如意
下一篇: 聊聊过去十年新出现的一些开发职位
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值