各种Lisp系语言大检阅

主要特色:

CommonLISP : lisp系集大成者, 工业化强度的大型语言. 拥有理论上最高的表达力, 非常复杂, 学习难度极大. 喜欢的人捧到天上, 觉得它是一切语言的终点, 不喜欢的人恶心死, 觉得各种混乱各种冗余, 缺失美感. (工业化语言)

Scheme: 一种以静态作用域和强制严格尾递归实现为特色, 遵从的理念是编程语言发展不该越来越复杂,不断堆叠新的功能和特色, 而是应该不断消除缺陷和限制, 以使得不再需要添加功能和特性就能达到目的. 追求数学上的美感, 跟CommonLISP在很多理念上完全相反, 相对简单,但是极端灵活. 由于缺少实用的库而长期沦为教学语言, 很少用于实用. (算法语言)

Clojure: 一种新兴的lisp, 起于jvm平台, 现在已经移植到了.Net 和 Node.js 因为根植于几个非常流行的平台,使得其具有得天独厚的优势, 市场占有率节节上升, 直追前两大lisp. 语法上充分利用了多种括号,使得括号总数减少了.同时追求工业化强度和数学美感之间的平衡. 启动时间过长是最大的缺点.

newLISP: 剑走偏锋的独特lisp, 有大量创新内容, 同时保留一些在lisp系进化过程中被抛弃的设计(可能是过于大胆或者过于灵活副作用太大等原因),这些魔鬼设计的组合形成了一个强大独特的动态脚本语言系统.最大特色是语言好小,整个只有200k.

AutoLISP:曾经作为AutoCAD软件的内置脚本而成为最多人使用的lisp,但是语法古老, 缺陷很多,性能低下,代码丑陋, 世人关于lisp的种种不实的评论很多是由它而来. 现在已经被淘汰, 新版本AutoCAD用CommonLISP.

EmacsLISP: Emacs编辑器的扩展脚本语言, 现在依然存活的最古老的lisp语法之一, 因为编辑器而为世人所知. 但是跟AutoLISP一样,是一种古老的落后的lisp语言.



各个有影响力的分支:

Scheme的分支:

Racket: 以Scheme为基础, 增加了大量实用的语法和库, 使其成为一种更实用的语言而不仅仅是教学语言, 完全兼容低版本的scheme, 大部分兼容高版本的scheme.
IronScheme: .Net上的Scheme实现, 在R6RS标准的95%之上, 增加了跟.Net库的互操作和集成, 使得其成为一种实用的嵌入.NET程序的灵活脚本语言.在ngen的帮助上, 它成为启动最快的.Net lisp.

Clojure的分支:
ClojureCLR: .NET的DLR上的Clojure,并不是对jvm版的翻译,而是根据.Net而定制的实现. 
ClojureScript: 把Clojure编译为javascript以运行在浏览器或Node.js. 是clpjure的子集



社区和文档:

CommonLISP 社区对新人很不友好, 充满歧视. 教程很多, 但是很古老,文档多但是都过于庞大, 让人望而生畏.

EmacsLISP 社区教程丰富细致

Scheme社区像大学, 文档都像论文一样

Clojure社区非常友好, 同时文档书籍以很快的速度增加着

Racket文档庞杂,社区没什么人, 并且设计者很有闭门造车的意味

newLISP社区在没落,文档不完整, 但整体方向没问题.



流行程度:

CommonLISP (30几位)  
Scheme (40几位)
Clojure (50-100位)

其他(不在前100)



各种Lisp系语言大检阅

时间: 2024-10-21 20:49:58

各种Lisp系语言大检阅的相关文章

大四重写大一的C语言大作业是一种怎样的体验

序言 在整理文件时偶然发现大一时的C语言大作业,故突然心血来潮想看看曾经花费一个星期的成果. 它虽然只有一个文件,却足足有829行,可见当时我下了多大功夫.回忆起当时作业的要求,大致也不过是实现一个可以增删改记录的学生成绩管理系统,何至于要写829行呢?找到源码配备的文档,想起那些我绞尽脑汁想出来的诸多花哨的功能,我不禁感慨:年轻就是能折腾啊! 而在我准备仔细拜读时,我却高兴不起来了--我根本看不懂也不想看懂我的代码!尽管我读过很多很烂的代码,但当发现自己曾经的骄傲之作其实是一片垃圾不堪入目时,

C、C++、python、Java、php、C#六种流行语言大PK

本文是C.C++.python.Java.php.C#六种语言连接mysql数据库的代码展示,在LZ尝试的过程中,无论是语言环境搭建.mysql依赖库的导入还是代码的风格,各种语言都各有千秋.接下来,我们就让这些语言一一登场吧. Java(最具噱头的语言) Java给新人的印象应该是入门简单.代码优雅.活跃度高.跨平台.开源大家庭等等,实在是当之无愧的明星语言,而且是偶像派的.不过可惜的是, 偶像派明星很容易被干掉.Java语言是LZ赖以生存的语言,因此LZ不希望做个偶像派,只能奋起直追,争取做

Go语言大神亲述:历七劫方可成为程序员!

"历劫1":你坚信你可以用Go来做面向对象编程? 在经历了一次Go应用之旅之后,你可能就会开始思考:"怎么样才能让这种语言更像面向对象的编程语言?"因为你已经习惯了这种编程,你想要制作健壮的代码.想要多态. 然后,你说:"一定有办法实现的!"再然后,你就发现了结构嵌入,它可以将来自封闭对象的方法巧妙的委托给嵌入对象,而无需重复代码.这简直是太伟大了! 当然,很快你就会发现这并不能真正解决问题.因为结构嵌入只允许委派方法调用,所以看起来你是在做多态

golang语言编译的二进制可执行文件为什么比 C 语言大(转载)

最近一位朋友问我"为什么同样的hello world 入门程序"为什么golang编译出来的二进制文件,比 C 大,而且大很多.我做了个测试,来分析这个问题.C 语言的hello world程序: 1 2 3 4 5 #include <stdio.h> int main() {     printf("hello world!\n");     return 0; } golang 语言的hello world程序: 1 2 3 4 5 6 7 pac

C语言大总结

一.C语言基本常识 1.语言由函数组成 2.main是程序入口 3.C语言中不能出现中文或中文字符 (注释和字符串除外) 关键字 : C语言提供表示特殊含义的单词 特点 : 1. 全部小写 2.在Xcode中是紫褐色 标识符 : 程序员自己在代码中为某些东西起的名字 规则 : 1.字母.数字.下划线组成 2.严格区分大小写 3.不能以数字开头 4.不能与关键字重名 规范:驼峰标识 注释:对代码的解释说明,它是程序员看的,它不参与编译 单行注释 和 多行注释 多行注释可以嵌套单行注释,但多行注释不

开发语言大PK:php和Java哪个更好?

Java通过jdbc来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库.访问数据库的接口比较统一. PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强.例如:用java开发的web应用从MySQL数据库转到Oracle数据库只需要做很少的修改.而php则需要做大量的修改工作. 2语言比较 php是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和C语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发.而java需要先学好java的

2.1 ARM家族大检阅

芯片名称 ARM核 指令架构 S3C2440 ARM9 ARMv4T S3C6410 ARM11 ARMv6 S5PV210 Cortex A8 ARMv7-A Cortex M工控 Cortex R 实时 Cortex A 多媒体 对比 ? S3C2440 S3C6410 S5PV210 处理速度(MHz) 400~500 533~607 800 缓存 16KB 16KB 32KB 内存接口 SDRAM SDRAM/DDR LPDDR1/DDR2 支持的OS WinCE/Linux WinCE

Part2_lesson1---arm家族大检阅

芯片(比如2440.6410.210等等)包含ARM核. 指令结构和ARM核有关系: ARM9对应指令架构版本ARMV4 ARM11对应指令架构版本ARMV6 cortex A8对应指令架构版本ARMV7 6410芯片的概况: 2440芯片的概况: 210芯片的概况:

[国嵌笔记][020][ARM家族大检阅]

ARM芯片:2440(arm9) 6410(arm11) 210(cortex-A8) ARM核:arm9(arm-v4) arm11(arm-v6) cortex-A8(arm-v7) 指令架构:arm-v4 arm-v6 arm-v7 在一个芯片中最重要的是ARM核 ARM核演变 ARM经典: ARM7.ARM9.ARM11 Cortex系列: 1.Cortex-M:应用于工控 2.Cortex-R:应用于实时 3.Cortex-A:应用于多媒体 ARM芯片对比 芯片 2440 6410 4