一个结合了Lisp的强大能力、python的易读性和C的性能的编程语言:Nimrod
项目主页:http://nimrod-code.org/
Nimrod是一个新型的静态类型、命令式编程语言,支持过程式、函数式、面向对象和泛型编程风格而保持简单和高效。Nimrod从Lisp继承来的一个特殊特性--抽象语法树(AST)作为语言规范的一部分,可以用作创建领域特定语言的强大宏系统。
Nimrod是一个编译型的具有垃圾收集的系统编程语言,有着极其卓越的生产/性能比。Nimrod的设计集中在三个E上:即效率(efficiency)、表达能力(expressiveness)和优雅(elegance)。
Nimrod示例:
import strutils
echo "Type in a list of ints of ints (separate by whitespace):"
let tokens = stdin.readLine.split
echo tokens.each(parseInt).max,"is the maxmum."
Nimrod是高效的:
- 原生代码生成(目前通过编译到C语言),不依赖虚拟机:Nimrod生成无依赖的小执行程序易于再发布。
- 一个快速的非追踪(non-tracing)垃圾收集器,支持实时系统如游戏。
- 系统编程特性:可以管理你自己的内存,直接访问硬件。指向垃圾收集器的内存的指针和指向手动管理内存的指针是有区别的。
- 零开销迭代器(zero-overhead iterators)。
- 跨模块内联。
- 有内联的动态方法绑定而无虚方法表。
- 用户定义函数的编译时计算。
- 整个程序死代码消除:仅用于包含在可执行程序中的函数。
- 基于值的数据类型:如对象和数组可以分配在栈上(stack)。
Nimrod表达能力强
-
Nimrod编译器和所有标准库都用Nimrod实现。
-
内建高级数据类型:字符串、集合、序列等等。
-
现代类型系统:本地类型推断(local type inference)、元组、变式、泛型等等。
-
用户可定义操作符;使用新操作符的代码通常比重载内建操作符的代码更易读。如=~操作符定义在re模块。
-
宏可以在编译时修改抽象语法树。
Nimrod是优雅的
- 宏可以使用命令范式构造解析树。Nimrod进行元编程时不需要使用不同的代码风格。
- 宏不能改变Nimrod的语法,因为没有这个必要。Nimrod的语法已经足够灵活。
- 语句可以用缩排(注:和python的缩进排版语法一样)组合语句但可以分成多行。缩排不能包含制表键(tabulators),因此编译器看到的代码和人看到的一样。
与外部世界共舞
- Nimrod编译器运行在Windows、Linux、BSD和Mac OS X上,移植到别的平台很容易。
- Nimrod编译器也可以生成C++或Objective C代码,接口很容易。
- 有大量的绑定:如已经有对GTK2、Windows API、POSIX API、OpenGL、SDL、Cairo、Python、Lua、TCL、X11、libzip、PCRE、libcurl、mySQL、SQLite的绑定包含在标准发行中。
- C到Nimrod的转换实用程序:对C库的新绑定可以用c2nim容易的产生。
- 一个Pascal到Nimrod的转换实用程序:大量的Object Pascal子集可以自动转换到Nimrod。
到1.0的路线图
Version 0.9.0
闭包closures
Version 0.9.X
-
recursive iterators/coroutines递归迭代器/协程
-
2-phase type system for better interaction between macros, templates and overloading 在宏、模板和重载间更好交互作用2相类型系统
-
term rewriting macros 项重写宏
-
the syntactic distinction between statements and expressions will be removed语句和表达式间的语法差别将被移除
-
the need for forward declarations may be removed前向声明的需要可能会移除
分享到:
相关推荐
Python受LISP启发的函数式编程思想
LISP编程语言简明手册,很适合初学者,简洁明了!
autolisp教程,供大家学习,来之不易
hy, 在 python 中,嵌入了一个Lisp方言 Lisp和 python 应该彼此相爱。 让我们来吧。试试它。 Hylarious攻击Django Lisppython sh 乐趣中的 miniKanren好,那么,为什么?我们非常棒,但是
学习用项目,用 Python 实现一个仿 lisp 语言的解释器.zip学习用项目,用 Python 实现一个仿 lisp 语言的解释器.zip学习用项目,用 Python 实现一个仿 lisp 语言的解释器.zip学习用项目,用 Python 实现一个仿 lisp ...
学习用项目,用Python实现一个仿lisp语言的解释器 支持: 算术表达式 条件表达式 变量 函数 递归 自然算数表达式 (2017/05/23 新增)
1.python⼊门 课程推荐:零基础⼊门学习Python 《⼩甲鱼零基础⼊门学习Python视频基础》(python教学版本:3.3.2)讲的是Python开发的⼊门教程,它将介绍Python语⾔的特点和 适⽤范围,Python基本的数据类型,条件...
Micro Lisp - 用不到200行的C代码实现一个非常小的Lisp编程语言
机器⼈编程语⾔python-10⼤热门机器⼈编程语⾔,你掌握了 哪种? 原标题:10⼤热门机器⼈编程语⾔,你掌握了哪种? 哪种编程语⾔最适合进⾏⼈⼯智能机器⼈研发?可能⼀百个攻城狮会有⼀百个答案?因为每种语⾔对机器...
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。Python是ABC语言的后继者,也可以视之为一种使用传统...
micro-lisp::Christmas_tree:一种非常小的Lisp编程语言:grinning_face:过去不到200行C
上学时候搜集到的autolisp教程,一个Autolisp编程大全(pdf),一个AUTOLISP帮助文件(.chm),还有两个word,一个文本,都是好东西,相信学AUTOLISP的一定会用到的
本书一开始完整地介绍Common Lisp语言,让读者彻底了解这个语言,最后用超过三分之一的篇幅介绍各种实际应用。本书有相当多应用程序的范例,透过本书的各个范例,你会渐渐体会到,运用Common Lisp写程序是很酷的事。
语言程序设计资料:LISP语言教程.doc
(How to Write a (Lisp) Interpreter (in Python))和(An ((Even Better) Lisp) Interpreter (in Python))的翻译,对解释器实现原理和函数式编程敢兴趣的可以下载看看!
这是LISP和Common LISP编程的上一页,我们正在处理中,将那里的所有书籍都转换为新页面。 请再次检查此页面!!!
这是一本不同寻常的Common...圾过滤器、解析二进制文件、构建ID3 解析器,以及如何编写一个完整的MP3 Web 应用程序等内容。最 后还对一些未介绍内容加以延伸。 本书内容适合Common Lisp 初学者及对之感兴趣的相关人士。