解释型面向对象语言: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-C和Ruby代码之间的相似性。
(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及更新的版本中。