一个结合了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前向声明的需要可能会移除
分享到:
相关推荐
LISP是一种早期的高级编程语言,以其简洁的语法和强大的函数式编程能力著称。在Python中,我们也能看到很多LISP的影子,尤其是在使用函数、高阶函数、闭包以及列表推导等方面。 函数式编程是一种编程范式,它将计算...
史上最全编程语言全套教程,共99门编程语言,包括: 函数式编程语言 壳编程语言 常见编程语言 并行编程语言 数据分析编程语言 数据库查询语言 系统编程语言 脚本编程语言 逻辑编程语言 面向对象编程语言 等所有常见...
AutoLISP是一种基于LISP语言的编程环境,专为Autodesk的AutoCAD软件设计,用于扩展AutoCAD的功能和自定义工作流程。这个压缩包文件包含了关于AutoLISP编程的教程,对于想要掌握这一技能的用户来说是宝贵的资源。 在...
AutoLISP作为一种强大的编程语言,不仅能够帮助用户扩展AutoCAD的功能,还能促进第三方软件的开发。通过掌握基本的数学运算和其他高级特性,用户可以轻松地实现自己的定制化需求。对于有兴趣学习AutoLISP的初学者来...
在编程领域,Lisp 是一种历史悠久的高级编程语言,以其独特的语法和强大的元编程能力著称。Python 作为现代流行的解释型语言,因其简洁易读的语法而深受程序员喜爱。这个学习项目旨在通过 Python 来实现一个类似 ...
1_lisp_python_》是一本深度探讨编程语言理论与实践的书籍,它将传统的程序设计语言教科书内容与编译原理相结合,同时加入了关于汇编层体系结构的基础知识,旨在为那些没有计算机组织背景的读者提供一个全面的学习...
Common Lisp作为Lisp语言的一个标准化版本,旨在为开发者提供一个稳定且功能强大的编程平台。 ### Common Lisp的特点与优势 #### 1. 动态类型和垃圾回收机制 Common Lisp支持动态类型,这意味着变量可以在运行时...
Python编程入门指南旨在引导初学者踏入编程世界,特别是聚焦于Python这一强大且广泛应用的编程语言。以下是基于提供的信息,详细阐述的学习路径和相关知识点: 1. **MIT 6.00.1x 麻省理工学院:计算机科学和Python...
Lisp是一种历史悠久的编程语言,以其独特的语法和强大的功能而闻名,尤其是它的括号表示法和函数式编程特性。通过这个项目,你可以深入理解编程语言解析器的工作原理以及Python语言的强大之处。 首先,我们要构建的...
Common Lisp是一种功能强大的动态类型语言,以其强大的元编程能力和高级特性著称。在NES(任天堂娱乐系统)模拟器的实现中,Common Lisp可能被用来构建高效且可扩展的代码结构,用于解析和执行NES的指令集。由于NES...
对于需要高级图形和控制系统的项目,MATLAB是一个强大的工具。 7. **C#/.NET**:C#是微软的专用编程语言,尤其在使用微软机器人开发工作室时。C#/.NET提供了面向对象的编程模型,适合Windows环境下的机器人开发。 ...
owoScript设计的目标可能是为了提供一种独特的编程体验,结合Python的易读性和命令式的堆栈操作。开发者可能会发现,它在某些场景下能提供更直观的代码表示,特别是处理数据结构或者进行计算密集型任务时。 在...
- **Haskell**:Haskell作为纯函数式编程语言,对于特定的编程范式有优势,但对于大多数开发者,Python提供了一个更直接的学习曲线和更广泛的应用场景。 6. **性能与解释器**:尽管Python是解释型语言,其运行速度...
函数全集包含了Autolisp提供的各种功能,用于增强用户在AutoCAD环境中的编程能力。尽管描述中提到部分函数未列出,但我们仍然可以探讨一些核心和常见的Autolisp函数,以理解其基本概念和用法。 1. **`setq`**:这是...
总而言之,Python-Pixie是一个为Python开发者设计的原生LISP方言,它集成了LISP的简洁和Python的实用,提供了高效的脚本环境。通过学习和使用Pixie,开发者能够提升编程效率,解锁新的编程技巧,并深入理解函数式...
《Common Lisp 高级编程技术》是一本深入探讨LISP编程语言的专业书籍,由Paul Graham撰写,Chun Tian(binghe)和Kov Chai共同翻译。这本书详细介绍了Common Lisp,这是一种功能强大的、动态类型的编程语言,具有...
Python作为一门高级编程语言,既不像汇编那样接近硬件底层,也不像Haskell那样追求极致的理论纯粹性,而是以易读、易写、易维护的特性占据了一席之地。它在C、C++、Java、Ruby等通用语言之间找到了平衡,既能处理...
- **Python**:借鉴了ABC、C++、Modula-3、Icon、Ruby和Ada等语言的优点,以简洁易读著称。 通过以上概述,我们可以清晰地看到编程语言之间错综复杂而又紧密相连的关系。每一种语言都在前人的基础上不断创新和发展...