解释型面向对象语言:Nu

jopen 10年前

Nu 是一门解释型的面向对象语言,最初由Tim Burks开发。其语法来自 Lisp,但是 Nu 在语义上要更接近于 Ruby。Nu 使用 Objective-C 语言实现,并且它被设计用于能够充分利用 Objective-C 运行时和许多使用 Objective-C编写的成熟的类库。Nu 代码可以完美集成在使用 Objective-C 写的代码中。Nu 和 Objective-C 中的对象可以互相接受和发送消息(messages)而无须考虑该消息是由二者中的哪一个实现的。

该语言最初在 C4 会议(在2007年8月由独立的 Mac 开发者举办的大会)上发布。

Nu语言之所以被认为是相对小众的工具,可能是因为它的类 Lisp 语法,不过最近开始随着函数式编程语言的流行而开始引人注意。

事例代码:

下面的Nu代码定义了一个简单的复数(complex number)类:

(class Complex is NSObject    (ivar (double) real          (double) imaginary)       (- initWithReal:(double) x imaginary:(double) y is      (super init)      (set @real x)      (set @imaginary y)      self))

 该事例是一个复数的基本定义:其定义了实例变量(instance variable)以及一个用于初始化该对象的方法(method)。该事例展示了Nu代码与Objective-CRuby代码之间的相似性。

(unless @prefix          (set @prefix                "#{((((NSProcessInfo processInfo) arguments) 0) dirName)}.."))     (unless @icon_files           (set @icon_files                (array "#{@prefix}/share/nu/resources/nu.icns")))

上面这段代码来自与Nu语言捆绑在一起的nuke工具,这段代码也展示了在Nu这门语言的设计中存在许多Objective-C, Lisp 和 Ruby 的影子。

Nu 需要运行在 Mac OS X 10.7 or iOS 4.3及更新的版本中。

项目主页:http://www.open-open.com/lib/view/home/1418002044230