“在编程的时候你可能会想 ‘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编程的方向,但不至于此。

广泛应用:

  1. 自动推理证明
  2. 自动规划
  3. 自动调度
  4. 计算机视觉
  5. 大规模模拟
  6. 自然语言接口
  7. 操作系统
  8. 编辑器
  9. 编译器
  10. 解析器
  11. 其他软件
    上面的应用是根据书中描述总结的

这么好,为什么不流行

市场上的需求

没有大公司推广,为什么不推广?语言太灵活,无法标准化,团队无法合作
后期维护难,招人难,库少,很多都要自己做,标准不一,语言容易分化,正如开头所说的,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-凡利于语言设计者的,也利于语言使用者相关推荐

  1. C语言发展历史,C语言特点,C语言利于弊,入门须知三招

    C语言是面向过程的,而C++是面向对象的 这些是C/C++能做的 服务器开发工程师.人工智能.云计算工程师.信息安全(黑客反黑客).大数据 .数据平台.嵌入式工程师.流媒体服务器.数据控解.图像处理. ...

  2. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  3. 是计算机程序设计语言的是,计算机设计语言

    计算机设计语言是编写计算机程序所用的语言,可分为机器语言.汇编语言和高级语言.[1] 中文名 计算机设计语言 外文名 Computer language design 定    义 编写计算机程序的语 ...

  4. 【详解】Java语言的特点以及Java语言与C/C++的比较

    文章目录 一.Java语言的特点 1.跨平台性/可移植性 2.面向对象 3.简单性 4.分布性 5.健壮性 6.安全性 7.解释型 8.多线程 二.Java与C/C++的区别 1.指针 2.多重继承 ...

  5. 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点

    问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...

  6. c语言学习的计划,c语言重新学习计划(转帖)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 字符串 学习时间:1.5W("W"周,下同) 知识点checklist strlen()函数的返回值是什么类型的? 字符串strlen ...

  7. 怎样检查c语言程序的问题,C语言陷阱与技巧第24节,做代码选择,不一定都要使用 if 判断的...

    在C语言程序开发中,实现需求的解决方案往往不止一个.解决一个问题,程序员一般都能够设计出多个解决方案,并写出相应的C语言代码. 可能有读者会觉得,解决问题的话,写出一种方法就可以了,给出多个方法没有意 ...

  8. c语言的菜单制作,C语言的菜单制作.ppt

    C语言的菜单制作 C语言的菜单制作 图形化菜单 要完成一个菜单需要考虑以下几个方面: 菜单的定义 保存部分屏幕 恢复期望的屏幕 用户的响应值传递 如何显示菜单 可以利用输出字符画出主界面上的边框和主菜 ...

  9. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

最新文章

  1. 如何模拟超过 5 万的并发用户
  2. db设计专用excel_工程师必备:硬件EMC设计规范
  3. 基于分层注意力网络的方面情感分析
  4. linux spidev 应用_Linux下SPI驱动的移植和应用程序的测试
  5. matlab及机器学习
  6. 助力公共事业服务,RPA大显身手
  7. 怎样实现VLAN间通信,三种解决方案,一节课带你掌握
  8. 在阿里云服务器上安装常用应用
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程计量与计价10517k1
  10. JAVA:实现 gnome sort侏儒排序算法(附完整源码)
  11. 艾美捷抗人IL-8 (CXCL8)单抗MT8F19说明书
  12. 职场礼仪_举止_站姿
  13. springboot集成springSecurity,jwt实现前后端分离
  14. vue H5移动端项目使用高德地图定位/标点并点击导航跳第三方app且实现导航路线——实例
  15. 桌面的html文件怎么打开方式,怎么将浏览器打开的页面保存到桌面
  16. 记住要仰望星空,不要低头看脚下!
  17. Fisher Information(费雪信息)详解
  18. 什么是Android进程(app)保活、进程保活的方案
  19. 广和通车载模组荣获“2021年度汽车电子科学技术优秀创新产品奖”
  20. 训练阶段yolov7主干部分结构图

热门文章

  1. c语言中能逐个使用下标变量,在C语言中能逐个地使用下标变量,也能一次引用整个数组...
  2. 科目二考试之倒车入库步骤
  3. windows num_workers
  4. JVM之垃圾回收 II ——方法区和堆区的垃圾回收、STW
  5. Godot Engine:选择Skeleton节点时出现不停输出“object was deleted while awaiting a callback”并死机问题
  6. 自动化测试 - 12306火车票网站自动登录工具
  7. 百度map的简单例子
  8. 数据相关的在职研究生_西南政法大学拟清理20名博士研究生的学籍!
  9. html遮罩层动画制作,flash简单制作遮罩动画效果
  10. OnlyBill 简易记账软件(续)