lisp学习总结(二)-----lisp应该探索发展的方向
现在流行一种语言叫做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应该探索发展的方向的更多相关文章
- Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋
Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋 Common Lisp学习笔记(0):从SLIME开始
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- 2019/3/4 java集合学习(二)
java集合学习(二) 在学完ArrayList 和 LinkedList之后,基本已经掌握了最基本的java常用数据结构,但是为了提高程序的效率,还有很多种特点各异的数据结构等着我们去运用,类如可以 ...
- 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用
目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...
- PHP中的MySQLi扩展学习(二)mysqli类的一些少见的属性方法
虽说是少见的一些属性方法,但是可能还是有不少同学在日常的开发中使用过,这里只是学习了可能相对来说我们用得比较少的一些 mysqli 的属性或方法.就当是扩展一下自己的知识体系. 切换用户 首先就是切换 ...
- crawler4j 学习(二)
crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- Android Animation学习(二) ApiDemos解析:基本Animators使用
Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
随机推荐
- 【u104】组合数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 组合数C(N, K)表示了N个数字不重复地选取K个作组合的方案数. C(N, K) = N!/(N-M ...
- Microsoft Ignite The Tour Beijing 记录: Learn Connect Explore
坦率的说,这是我第一次以讲师的身份参加微软的Ignite大会.同时我也很开心能作为微软社区MVP来参加这个活动.而我的演讲主题也和我的社区有关——Unity.C#以及跨平台开发. 这篇用来记录MSIg ...
- 关于react的redux的知识点
项目小的时候我们getState()进行管理数据,只有当数据庞大的时候我们采用Redux来进行管理. Redux: ①:它是专注于状态管理的库,和React是解耦的 ②:它是单向数据流,单一的状态 ③ ...
- 2018-10-23-WPF-使用-Pandoc-把-Markdown-转-Docx
title author date CreateTime categories WPF 使用 Pandoc 把 Markdown 转 Docx lindexi 2018-10-23 11:35:47 ...
- gif 格式
现在使用gif的场景有很多,很多老师喜欢在课件添加 gif 图片 在开始讲gif之前,先告诉大家 gif 的格式. 请看图片,gif 图分为图片文件头(File Header),gif信息(GIF D ...
- wpf遮罩~~~(搬运过来的)
方便自己以后用,原文:https://blog.csdn.net/lwwl12/article/details/78472235 直接上代码 public partial class BaseWind ...
- 小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- basedir的介绍
os内置dirname方法就是文件目录的往上找一级 #得到当前文件名或者路径 if __name__ == "__main__": print(__file__) #这是os的一个 ...
- CodeTypeDeclaration,CodeMemberProperty动态生成代码
由于是CodeDom些列,所以先介绍几个CodeDom表达式: :CodeConditionStatement:判断语句即是if(condition){} else{},看最全的那个构造函数: pub ...
- 【一起学源码-微服务】Nexflix Eureka 源码九:服务续约源码分析
前言 前情回顾 上一讲 我们讲解了服务发现的相关逻辑,所谓服务发现 其实就是注册表抓取,服务实例默认每隔30s去注册中心抓取一下注册表增量数据,然后合并本地注册表数据,最后有个hash对比的操作. 本 ...