Io语言

Io语言是一门计算机高级编程语言，其发展历史并不长，2002年3月7日由Steve Dekorte研发出来。 Io语言因为没有关键字，因而很容易进行扩展，并很灵活。

 特点 
Io语言并非主流编程语言，但其学习价值和启发价值都很高。这门语言吸收了LISP、Lua、Smalltalk等语言的特点。

Io语言是纯面向对象的原型继承语言，它的创造过程是综合了Smalltalk、Self、NewtonScript、Act1、LISP和Lua等语言的特点；

Io语言主要吸取了这些语言的如下特点：

 Smalltalk，所有的变量均为对象、所有的消息都是动态的。
 Self，基于原型的面向对象设计。
 NewtonScript，差异化继承。
 Act1，并发行为和特征。
 LISP，代码是运行时间可内省/可修改的树。
 Lua，小巧且具有可嵌入能力。

 历史 

Io语言大约是由Steve Dekorte在2002年3月7日创造的，创造初衷则是Steve Dekorte为了帮助他的朋友Dru Nelson，改造另一门称作“Cel”的语言，Steve Dekorte发现自己对编程语言的原理并不是很了解，于是决定写一个简单的语言，来帮助自己理解相关的问题。

语法
在它的最简单形式下，它可以构成自一个单一标识符：
 doStuff
假定上述doStuff是一个方法，它被以零个实际参数来调用，因而不需要显式的圆括号。

如果doStuff有实际参数，它可能如下这样调用：
 doStuff(42)

消息
Io是一种消息传递语言，因为在Io中所有东西都是一个消息（不包括注释），每个消息都被发送给一个接收者。上述例子展示的并不完全。要更好的描述这一点，请看下面的例子：
 System version
这个例子展示了Io中的消息传递，version消息被发送到System对象。

运算符
运算符是特殊情况，这里的语法不像上述例子那样业已定型。Io的解析器检视由解释器定义的一组运算符，并把它们转译成方法调用，例如：
 1 + 5 * 8 + 1
被转译成：
 1 + (5 *(8)) +(1)
在Io中所有运算符都是方法，它们不需要显式圆括号的事实是一种方便。如你所见，这里仍存在一点运算符优先级，它们同于C运算符优先级。

对象
新对象是通过克隆其他对象来创建的。特别是在Io中，一个新的空对象在创建后，其中只保存了与其父对象的不同之处，这种行为被称为。下面是一个例子：
 A := Object clone         // 创建一个新的空对象，命名为"A"

方法和块
在Io语言中有两种方法来创建匿名函数：方法和块。这两种方法除了作用域不同外，几乎是没有区别的。块拥有词法作用域，方法拥有动态作用域。方法和块都是高阶函数。

示例
Hello, World!
经典的Hello, World!程序：
 "Hello, world!" println

非递归的阶乘
Io语言中一个简单的非递归的阶乘方法：
factorial := method(n,
    if(n == 0, return 1)
    res := 1
    Range 1 to(n) foreach(i, res = res * i)
)
由于将res * i赋值给res是方法的最后一个操作，这个函数会隐式地返回这个结果，因此不需要显式地加上一个返回语句。上面这段代码展示了的用法，而没有用for()，后者会更快一些。

引用

 外部链接 
 Io  官方网站
 Io Notes
 Io at Synrc Research Center


Category:动态类型编程语言
Category:基于原型的编程语言
Category:同像性编程语言
Category:脚本语言
Category:2002年建立的程式語言