小语种-lisp-凡利于语言设计者的,也利于语言使用者
“在编程的时候你可能会想 ‘Lisp 要是有这样或者那样的操作符就好了。’ 那你就可以直接去实现它。之后,你会意识到使用新的操作符也可以简化程序中另一部分的设计,如此种种。语言和程序一同演进。就像交战两国的边界一样,语言和程序的界限不断地移动,直到最终沿着山脉和河流确定下来,这也就是你要解决的问题本身的自然边界。最后你的程序看起来就好像语言就是为解决它而设计的。并且当语言和程序彼此都配合得非常完美时,你得到的将是清晰、简短和高效的代码。” — Paul Graham 《On Lisp》。
简而言之,自己做一门语言来解决相关领域的问题,即DSL(Domain Specific Language)
配合书籍食用更佳《实用common lisp 编程》
开发环境工具下载:lisp in box
何止无痛,其实惊艳。
简单概要lisp的历史和lisp能做什么?
有句话“断章取义”的说:python, js也是,越来越靠近lisp的思想。
lisp的九种思想
已被主流语言接受了前6种(哪九种,自己百度)
这让我想到js相似的地方:AST语法树?babel?webpack?js解析html解析css解析module。
特别是
(7)的思想用符号判断,让判断加快到底层速度。其他?
(8)的思想就是AST语法树?
(9)的思想让js能够做到一次代码多平台发布?比如uni-app、taro。其他?
可编程的编程语言
凡利于语言设计者的,也利于语言使用者。
也就是说,语言的设计者可以做的事情,我们语言程序的使用者也可以做,我们可以自己设计我们需要的语言特性。不会因为缺少某种特效导致不可行。比如语言a,看着语言c的特效多好,但我现在的语言a里面就是没有这个特性,那也只能坐等新标准出了。
工作状态连贯性的重要性,而交互式可以让你不会断开连贯性,因为它不需要像c或者java一样等待编译,而是输入即刻计算值并读取返回计算结果。
交互式:可以让你不断的尝试不同的可能。不会让机器的编译打断思路的实现。
圣经:《common Lisp the language》
诞生:为了解决符号数据处理,擅长处理列表。
设计:尽可能高效可靠的求解实际问题的实用主义
语言的要求:跨平台,消除区别
发明者:做AI编程的,所以这门语言有ai编程的方向,但不至于此。
广泛应用:
- 自动推理证明
- 自动规划
- 自动调度
- 计算机视觉
- 大规模模拟
- 自然语言接口
- 操作系统
- 编辑器
- 编译器
- 解析器
- 其他软件
上面的应用是根据书中描述总结的
这么好,为什么不流行
市场上的需求
没有大公司推广,为什么不推广?语言太灵活,无法标准化,团队无法合作
后期维护难,招人难,库少,很多都要自己做,标准不一,语言容易分化,正如开头所说的,lisp的思想就是让这门语言不断的随着需求来进化。
天下大势所趋
c语言为基础的体系java写应用的市场,相当于儒家思想的大汉下,其他学说自然显得黯淡许多。
一种语言的取代
只有当其痛点被无限放大,亟待解决之时才会被下架。否则,市场只需要能够大众的即(从业人员多,容易招人),适用工作需要,保证稳定,容错性好,团队效率高的语言。
生存在哪里
lisp的思想就是让这门语言不断的随着需求来进化。有种红色思想的意思,星星之火,可以燎原。在某些领域某个子问题上有着特别优秀的存在。慢慢的渗入到各种领域中。在主流外,野生发展,仿佛渗入墙内的滕根。
和js对比(不完善,待补充)
类比的东西
1. ;为注释符
2. 宏 == 命令模式
3. defvar == var全局 setq 局部
4. defconstant == constant 常量
5. 决策 cond == if, 两三次性的if if when, case == switch
6. loop when return == while do, loop for x in list || dolist n list === for of,
7. 关键字参数 == 对象传值,lambda === 箭头匿名函数,映射函数 mapcar == map
8. 符号=对象 符号是表示数据对象和有趣的是它也是一个数据对象的名称。是什么使得符号特殊之处在于他们有分别叫property list,或 plist
9. 包 === 模块
10. 对象系统defclass === class, 读写控制 reader,write === get.set, 继承class(sub) === super()
js不同的东西
11. 计算表达式是在外面然后函数调用计算而来
12. 一切都是计算求值,不这样做的时候,使用’来阻止
13. 循环dotimes,一直做多少次。
14. 块退出
15. 数组的使用比较复杂
16. 向量 vector ,暂时不知道可以用来干嘛
17. 集合
18. 树 二叉树
19. 哈希表
20. 结构 相当于table表,可以临时修改结构。结构是用户定义的数据类型,它让用户可以合并不同种类的数据项。
21. 宏
js里面的元编程
宏:sweet.js库可以实现宏定义结构,程序或操作符
内省:循环属性reflet.has()
自修改:修改函数定义 proxy,reflect
调节:动态修改get或者set
小语种-lisp-凡利于语言设计者的,也利于语言使用者相关推荐
- C语言发展历史,C语言特点,C语言利于弊,入门须知三招
C语言是面向过程的,而C++是面向对象的 这些是C/C++能做的 服务器开发工程师.人工智能.云计算工程师.信息安全(黑客反黑客).大数据 .数据平台.嵌入式工程师.流媒体服务器.数据控解.图像处理. ...
- python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程
本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...
- 是计算机程序设计语言的是,计算机设计语言
计算机设计语言是编写计算机程序所用的语言,可分为机器语言.汇编语言和高级语言.[1] 中文名 计算机设计语言 外文名 Computer language design 定 义 编写计算机程序的语 ...
- 【详解】Java语言的特点以及Java语言与C/C++的比较
文章目录 一.Java语言的特点 1.跨平台性/可移植性 2.面向对象 3.简单性 4.分布性 5.健壮性 6.安全性 7.解释型 8.多线程 二.Java与C/C++的区别 1.指针 2.多重继承 ...
- 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点
问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...
- c语言学习的计划,c语言重新学习计划(转帖)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 字符串 学习时间:1.5W("W"周,下同) 知识点checklist strlen()函数的返回值是什么类型的? 字符串strlen ...
- 怎样检查c语言程序的问题,C语言陷阱与技巧第24节,做代码选择,不一定都要使用 if 判断的...
在C语言程序开发中,实现需求的解决方案往往不止一个.解决一个问题,程序员一般都能够设计出多个解决方案,并写出相应的C语言代码. 可能有读者会觉得,解决问题的话,写出一种方法就可以了,给出多个方法没有意 ...
- c语言的菜单制作,C语言的菜单制作.ppt
C语言的菜单制作 C语言的菜单制作 图形化菜单 要完成一个菜单需要考虑以下几个方面: 菜单的定义 保存部分屏幕 恢复期望的屏幕 用户的响应值传递 如何显示菜单 可以利用输出字符画出主界面上的边框和主菜 ...
- 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态
介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...
最新文章
- 如何模拟超过 5 万的并发用户
- db设计专用excel_工程师必备:硬件EMC设计规范
- 基于分层注意力网络的方面情感分析
- linux spidev 应用_Linux下SPI驱动的移植和应用程序的测试
- matlab及机器学习
- 助力公共事业服务,RPA大显身手
- 怎样实现VLAN间通信,三种解决方案,一节课带你掌握
- 在阿里云服务器上安装常用应用
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程计量与计价10517k1
- JAVA:实现 gnome sort侏儒排序算法(附完整源码)
- 艾美捷抗人IL-8 (CXCL8)单抗MT8F19说明书
- 职场礼仪_举止_站姿
- springboot集成springSecurity,jwt实现前后端分离
- vue H5移动端项目使用高德地图定位/标点并点击导航跳第三方app且实现导航路线——实例
- 桌面的html文件怎么打开方式,怎么将浏览器打开的页面保存到桌面
- 记住要仰望星空,不要低头看脚下!
- Fisher Information(费雪信息)详解
- 什么是Android进程(app)保活、进程保活的方案
- 广和通车载模组荣获“2021年度汽车电子科学技术优秀创新产品奖”
- 训练阶段yolov7主干部分结构图
热门文章
- c语言中能逐个使用下标变量,在C语言中能逐个地使用下标变量,也能一次引用整个数组...
- 科目二考试之倒车入库步骤
- windows num_workers
- JVM之垃圾回收 II ——方法区和堆区的垃圾回收、STW
- Godot Engine:选择Skeleton节点时出现不停输出“object was deleted while awaiting a callback”并死机问题
- 自动化测试 - 12306火车票网站自动登录工具
- 百度map的简单例子
- 数据相关的在职研究生_西南政法大学拟清理20名博士研究生的学籍!
- html遮罩层动画制作,flash简单制作遮罩动画效果
- OnlyBill 简易记账软件(续)