本页使用了标题或全文手工转换

Io (编程语言)

维基百科,自由的百科全书
跳转至: 导航搜索
Io
Io-logo.svg
编程范型 面向对象编程 原型程式设计
設計者 Steve Dekorte
實作者 Steve Dekorte, Jonathan Wright, Jeremy Tregunna
发行时间 2002
型態系統 dynamic, strong

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

特点[编辑]

Io language并非主流编程语言,但其学习价值和启发价值都很高。这门语言吸收了LISPLuaSmalltalk等语言的特点。

Io language是纯面向对象的原型继承语言,它的创造过程是综合了SmalltalkSelfNewtonScriptAct1LISPLua等语言的特点[1]

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

  • Smalltalk——所有的变量均为对象、所有的消息都是动态的;
  • Self——基于原型的面向对象设计
  • NewtonScript——差异化继承
  • Act1——并发行为和特征
  • LISP——code is a runtime inspectable/modifiable tree
  • Lua——小巧且具有可嵌入能力

历史[编辑]

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

方法和块[编辑]

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

示例[编辑]

经典的Hello World程序:

 "Hello, world!" println

新对象是通过克隆其他对象来创建的。特别是在Io中,一个新的空对象在创建后,其中只保存了与其父对象的不同之处,这种行为被称为差别继承。下面是一个例子:

 A := Object clone         // 创建一个新的空对象,命名为"A"

Io语言中一个简单的非递归的阶乘方法:

factorial := method(n,
    if(n == 0, return 1)
    res := 1
    Range 1 to(n) foreach(i, res = res * i)
)

由于将res * i赋值给res是方法的最后一个操作,这个函数会隐式地返回这个结果,因此不需要显式地加上一个返回语句。上面这段代码展示了ranges的用法而没有用for(),后者会更快一些。

参考资料[编辑]

  1. ^ Io Programming Guide

外部链接[编辑]