现在流行一种语言叫做Clojure,他是lisp直接嫁接到java的结果,但是我就感觉这却成为lisp的失败。

因为lisp最强大最有优势的能力是构造抽象,构造设计思想,而不是运行期以确定的方式运行,硬要拿去真正在一个环境中去运行,那么它将被限制在一个环境,而是他的应用范围变窄,比如我想开发操作系统或者开发分布式应用,或者为并行处理器GPU写程序,那就无望了。

更悲剧的是Clojure与JAVA之间的关系是API调用关系,这将很大程度上限制lisp的高阶抽象的发挥,我们不得不经常设计合适的谓词为lisp与java之间找到一个合适的分界点。现实与天堂模糊的分界点是lisp能高效快速开发抽象逻辑的重要保障,如果加入一个分界点区分设计工作,那将是很复杂的,甚至是不能成功的,lisp的分界点转换可能是很快的,人为跟不上的。

当然Common Lisp本身平台也很弱小,弱小到根本不具备强大的目标平台开发能力,我们活在人间,天堂的饼子再美好也无法喂饱我们的肚子。

我觉着Common Lisp要能有发展,最好的出路是借鉴类似UML的代码设计工具,做不同语言的代码生成器,因为所有平台其都有最好的开发语言,并且有最好的厂商支持,这样我们只需要能构造建立在format之上的高阶抽象就可以让lisp将进入任何平台领域,成为最好的"设计语言".

比如我们要写一个操作系统,并且这个操作系统很特别,他需要为AMD的GCN异构计算做全面优化,那么这个操作系统肯定不能用已有的C语言去写,因为以前的操作系统用C开发几十年,架构稳定,虽然能移植过去,但是却不能发挥性能,因为性能的关键取决于应用,这也是windows linux的失败,那么如果有更高级抽象操作系统 (lisp)那么移植到GCN应该是容易的,抽象的操作系统,抽象的应用执行,将很容易为异构硬件平台作优化。

又比如我们要写一个分布式系统,有很多异构服务器组成,有的是http,有的是c为目标平台优化写的主控服务器,那么要设计这种系统,如果能用lisp做设计,为不同平台生成目标代码,那么我们将可以站在全局更上层的抽象上做更多全局控制甚至更改推翻重来,用c写的就玩不起了。

lisp学习总结(二)-----lisp应该探索发展的方向的更多相关文章

  1. Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋

    Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋 Common Lisp学习笔记(0):从SLIME开始

  2. 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)

    项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...

  3. 2019/3/4 java集合学习(二)

    java集合学习(二) 在学完ArrayList 和 LinkedList之后,基本已经掌握了最基本的java常用数据结构,但是为了提高程序的效率,还有很多种特点各异的数据结构等着我们去运用,类如可以 ...

  4. 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用

    目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...

  5. PHP中的MySQLi扩展学习(二)mysqli类的一些少见的属性方法

    虽说是少见的一些属性方法,但是可能还是有不少同学在日常的开发中使用过,这里只是学习了可能相对来说我们用得比较少的一些 mysqli 的属性或方法.就当是扩展一下自己的知识体系. 切换用户 首先就是切换 ...

  6. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

  7. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  8. Android Animation学习(二) ApiDemos解析:基本Animators使用

    Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...

  9. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

随机推荐

  1. C/C++ 获取键盘事件

    Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件 #include <conio.h> #include <i ...

  2. dotnet 手动解决 json 解析中不合法字符串

    如果使用 Newtonsoft Json 解析字符串,字符串里面有不清真的格式,那么默认的解析将会炸掉.如果想要自己解决字符串中的不清真格式,可以使用传入 JsonSerializerSettings ...

  3. linux安装python3.*,更换Python2.*

    下载并解压:Python-3.5.7.tgz [root@AH-aQYWTYSJZX01 python3]# ll total 20268 -rw-r----- 1 temp01 temp01 207 ...

  4. python OrderedDict

    15年16年接触python时候,还不知道这个函数,只知道dict的无序,造成了一些麻烦 今天view 代码,发现了 OrderedDict() 在python2.7中比较吃内存 pop(获取指定ke ...

  5. 关于QT中的隐式共享

    网上关于隐式共享的解释很多,在此不再陈述.本文主要是记录一下自己学习隐式共享的坑点: 即:隐式共享只发生在非指针的情况下!!!! 如下代码: QImage image1; QImage image2; ...

  6. 洛谷p2149----两个终点和两个起点,最短路最大交汇长度!!!

    说实话,这题真第一次见,学到了不少有趣的东西,因吹丝汀!! 思路:因为不可能同时并行和相遇(我也不知道为啥,等我会证明了就来说说) 所以正向建边再反向建边,拓扑排序+dp求最下长路,记录下最大的就是解 ...

  7. 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务

    实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...

  8. 搭建高可用的flink JobManager HA

    JobManager协调每个flink应用的部署,它负责执行定时任务和资源管理. 每一个Flink集群都有一个jobManager, 如果jobManager出现问题之后,将不能提交新的任务和运行新任 ...

  9. Kafka学习笔记4--Kafka消费者的客户端(PHP)开发

    一.准备工作 虽然 Kafka 是用 Java/Scala 语言编写的,但这不妨碍它对多语言的支持.可以在 Kafka 官网的 CLIENTS 查看 Kafka 支持的语言,其中包括 C/C++.Py ...

  10. Git是什么?

    Git是什么? Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控 ...