lisp scheme 果壳_走出Lisp(Scheme)困境

从去年开始入坑Lisp,周周转转也算是基本入门了这一传说中的语言。

Lisp确实是一门很开明的语法规范。lambda是基本定义形式,递归在其骨子深处,试图通过函数表达世界,的确这个世界是周而复始的,有些人愿意称为循环,一个固定的迭代算法加上算法演算后不断更新的执行环境。

确实Lisp 的入门会让你感受到递归的眩晕和神秘,这很迷人,但总想着递归搞定问题,未免有些误入歧途,Lisp的后续版本其实对循环是支持的。递归可以实现循环,只需要小小的包装。

面向对象概念据说是Lisp最先提出的,但使用上一开始确实看着有些别扭。这个是可以直接使用的,然而Java等后续在面向对象上确实是更进一步的。我更喜欢用闭包去做一些简单的包装,实现简单的面向对象,这一点在不少后续的脚本语言都有借鉴。

一直是鼓吹中的宏,几乎给与了高级语言使用者一个编译器的表达。看到网上很多人不明白,甚至觉得不必要,在这一点上,我想说,不明白的那些多数是做商业软件开发的,更专业化的学术研究或者非常规的IT应用。

Lisp通过宏给与了开发者上帝般的待遇,通常更大的权限对应的是更多的风险,企业选用该编程语言也就意味着需要招聘能够驾驭该风险的人,成本相比Java等保守的语言就会高出很多,而且业务拓展也会在人才数量上受到限制。

但我很喜欢宏这个东西,因为它给了我定义自己风格或熟悉语法的机会。曾经被一个985院校毕业的同事告知不要使用那些有风险的表达,确实避开风险就会基本没有问题。宏的使用在官方也确实被告知不要轻易使用,除非现有的规则使你不爽。我更多的喜欢发现所谓风险背后的使用价值,就好像玩耍双截棍,最开始不小心就会被自己抽一下,当熟悉后,一切就会不同了,棍子在身边翻滚,还很花哨,实际的击打效果也是值得一提的。从开始捣鼓宏开始,我的开发环境已经崩盘好多次了,宏的道必须走下去。

学习中被Lisp的continuation卡住,翻看了很多文档,它与lambda表达式不同,lambda是顺序执行的,而continuation提供了中断挂起在内存,并持有该代码块,这为跳出代码块和跳出后在特定时间回到相应位置提供了可能。这个比Java 的continues在逻辑上更为底层,Java的continues只是继续下一次循环,而继续下一次循环只是这一演算的一小部分。

Lisp的学习历程对商用开发者是不友好的,因为它总喜欢从很专业的数学和编程语言原理开始,在商业的角度并不需要太多人关心这个。

在经历了上述折腾后,使用asdf,引入现有类库,从相对友好的编程模式开始Lisp之旅,然后和学习其他语言一样慢慢的向下学习该语言的细节和原理,最后在此基础上如何做出拓展。

交流的语言源于沟通的需要,然而语言远在交流之前就已存在,语言是人对事物标记和回溯的工具,为了交换认识,才衍生出通用的事物标记——各种(地区)方言。与其说我们在使用编程语言,还不如说我们在表达我们对世界的看法。

Lisp的使用是数学的思考,是生活的缩影,更值得赞许的是它在引导开发者认识问题的本质并为独特的表达提供可能,所以需要一个平常心,好奇心,在日常中慢慢品悟。

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

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

相关文章

jenkins部署流程图_持续集成-jenkins(自动化部署流程图)

1、什么是持续集成持续集成:简称CI。持续集成的特点:自动完成、保证每个时间点上团队成员提交的代码是成功集成的、需求不明确或频繁变更的情景、帮助企业减少管理风险。持续集成的应用场景:持续集成(CI)系统组成部分:版本控制系统…

django 表单html5,我们如何在django管理表单中添加动态html5数据属性

你继承Django的ModelChoiceField并修改它的render_options()和render_option()方法来显示你所需要的对象的属性。我想你也需要你自己的ModelChoiceIterator的子类,这样它不仅可以吐出id/label元组,而且可以分离出你需要的所有数据。例我只是找到了一个自…

中蜂几月份自然分蜂_蜜蜂什么时候自然分蜂?

一、自然分蜂时间蜂群自然分蜂一般多在春季晴朗天气的上午10点到下午2点左右发生,对于为什么蜂群多在春季自然分蜂是有原因,蜂群发生自然分蜂必须要具备一系列的条件才行,第一个条件是蜂群的群势要足够强大,第二个条件是外界蜜源丰…

计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程

原标题:电脑办公软件有哪些?桌面便签办公软件基础教程Windows电脑上的办公软件有很多,很多网友都觉得电脑上用的桌面便签小工具不算办公软件,其实只要是对工作有帮助的电脑程序,在某种程度上来说都可以说是办公小工具软…

电脑开机启动修复无法自动修复此计算机,Win7系统开机无法自动修复此计算机如何解决...

在使用win7系统的时候,总是会遇到一些问题,比如就有用户反映说开机提示自动修复,导致无法正常进入操作系统,经过分析部分系统修复报错文件为:X:Windowssystem32driversspoon.sys,那么要怎么解决这样的问题呢…

开机后黑屏看不到桌面_电脑开机后黑屏不显示桌面,但可以用管理器运行程序,怎么解决...

电脑开机后黑屏不显示桌面,但可以用管理器运行程序,怎么解决以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!电脑开机后黑屏不显示桌面,但可以用管理器运行…

lower_bound()和upper_bound()

二分检索函数lower_bound()和upper_bound() lower_bound():找到大于等于某值的第一次出现 upper_bound():找到大于某值的第一次出现 必须从小到大排序后才能用 内部查找方式为二分查找,二分查找必定需要排序 返回值为地址 #include &l…

江西省计算机应用基础对口高考复习,江西省对口高考计算机应用基础复习题(各章及综合练习)...

B.可以完全利用鼠标器,而不能再使用键盘进行各种操作C.可以使计算机不再需要程序,只需用户用鼠标器点一下就能完成各种任务D.支持硬件即插即用,即:当计算机中插入一个新卡后再开机,操…

频繁默认网关不可用_win10 总是默认网关不可用,怎么回事?

2017.04.25 对windows10 creators update 版本依旧有效。----------------------------------------------------------------正值win10一周年之际,3号早上刚出来镜像,我就迫不及待的尝了尝鲜,结果断网问题依旧存在,这次连网关不可…

sort对结构体排序

1、排序方法: sort(数组起始指针,数组尾指针,排序规则); 数组起始指针,数组尾指针是左闭右开 排序规则可以省略,也可以用系统的,也可以自己写 2、例子: int a[]{9,2,4,5,10,7,30}; sort(a,a7); 这是默认的对数组从小到大排…

计算机控制系统视频关守平,国家级精品课《计算机控制系统》课程建设研讨会顺利召开...

10月27日,国家级精品课《计算机控制系统》课程建设研讨会于科技楼4002会议室召开。我校校长刘建昌,东北大学教授关守平等6人,燕山大学教授孙孝峰等4人,分校控制工程学院院长王凤文、副院长段洪军,各省级精品课负责人、…

python print 如何加锁_python中给程序加锁之fcntl模块的使用

python 中给文件加锁——fcntl模块import fcntl打开一个文件f open(./test) ##当前目录下test文件要先存在,如果不存在会报错。对该文件加密:fcntl.flock(f,fcntl.LOCK_EX)这样就对文件test加锁了,如果有其他进程对test文件加锁,…

priority_queuey用法

priority_queue优先队列&#xff0c;插入进去的元素都会从大到小排好序 PS&#xff1a;在priority_queue<ll, vector<ll>, greater<ll> > pq;中 第一个参数为数据类型&#xff0c;第二个参数为保存数据的容器&#xff08;默认为vector<int>&#xff…

对未来计算机的畅想初中英语,初中英语期中考试,作文停电一小时,在北京……在上海……在威海…….doc...

初中英语期中考试,作文停电一小时,在北京……在上海……在威海……篇一&#xff1a;八年级上册期中考试英语作文范文My summer vacationLast summer vacation, i went to Beijing with my parents. I was very happy and excited. The first day, we went to visit the Great w…

ppt怎么加注解文字_PPT怎么在演示稿中添加批注的方法

PPT怎么在演示稿中添加批注的方法2017-10-24 16:46 责任编辑&#xff1a;老王啊导读 / PPT如何在演示稿中添加批注?设计或制作PPT时,会遇到内容中需要特别解释或着重注意的地方,此时会用到我们添加批注,那么如何在PPT中添加批注呢?小编和大家一起探讨下吧使用批注来将反馈和想…

(回溯2)8皇后

题目 会下国际象棋的人都很清楚&#xff1a;皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上&#xff08;有8 * 8个方格&#xff09;&#xff0c;使它们谁也不能被吃掉&#xff01;这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法&am…

武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘

原标题&#xff1a;武汉理工大学2018年自主招生复试揭秘2018年武汉理工大学考试方式学马教育徐老师介绍&#xff0c;考核以笔试和学科专项测试或特殊专长考评的方式进行&#xff0c;具体要求如下&#xff1a;笔试科目为能力测试(满分300分&#xff0c;内容为数学与逻辑、中文阅…

python3的输出函数_教女朋友学Python3(二)简单的输入输出及内置函数查看 原创...

这是第二天了&#xff0c;工作之余和女朋友一起学Python3&#xff0c;代码都是她敲的&#xff0c;有点辣眼睛&#xff0c;仅做参考。1.题目&#xff1a;输入“姓名”&#xff0c;输出“你好&#xff0c;姓名”步骤&#xff1a;file>new file 输入下面代码Python3代码&#x…

(回溯1)八皇后

描述 在国际象棋棋盘上放置八个皇后&#xff0c;要求每两个皇后之间不能直接吃掉对方。即任意两个皇后都不能处于同一行、同一列或同一斜线上 输入 无输入。 输出 按给定顺序和格式输出所有八皇后问题的解&#xff08;见Sample Output&#xff09;。 样例输入 样例输出 …

nokia 计算机手机,NOKIA手机与电脑的数据线连接

将手机用数据线与电脑连接。系统显示找到新的硬件.下面是学习啦小编收集整理的NOKIA手机与电脑的数据线连接&#xff0c;希望对大家有帮助~~NOKIA手机与电脑的数据线连接方法/步骤将手机用数据线与电脑连接。系统显示找到新的硬件。安装相应的驱动程序。选择“从列表或指定位置…