Io (编程语言)

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

Io
编程范型面向对象基于原型同像性
设计者Steve Dekorte
实作者Steve Dekorte, Jonathan Wright, Jeremy Tregunna
发行时间2002年,​22年前​(2002
型态系统动态, 强类型
网站iolanguage.org 编辑维基数据链接
主要实作产品
Io, Io.NET
启发语言
Smalltalk, NewtonScript, Self, Lua, LISP, Act1英语Actor_model_middle_history#Actor_programming_languages
影响语言
Ioke[1], Potion

特点

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

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

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

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

历史

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

语法

在它的最简单形式下,它可以构成自一个单一标识符:

 doStuff

假定上述doStuff是一个方法,它被以零个实际参数来调用,因而不需要显式的圆括号。

如果doStuff有实际参数,它可能如下这样调用:

 doStuff(42)

消息

Io是一种消息传递语言,因为在Io中所有东西都是一个消息(不包括注释),每个消息都被发送给一个接收者。上述例子展示的并不完全。要更好的描述这一点,请看下面的例子:

 System version

这个例子展示了Io中的消息传递,version消息被发送到System对象。

运算符

运算符是特殊情况,这里的语法不像上述例子那样业已定型。Io的解析器检视由解释器定义的一组运算符,并把它们转译成方法调用,例如:

 1 + 5 * 8 + 1

被转译成:

 1 + (5 *(8)) +(1)

在Io中所有运算符都是方法,它们不需要显式圆括号的事实是一种方便。如你所见,这里仍存在一点运算符优先级,它们同于C运算符优先级

对象

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

 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是方法的最后一个操作,这个函数会隐式地返回这个结果,因此不需要显式地加上一个返回语句。上面这段代码展示了Range英语Range (computer programming)的用法,而没有用for(),后者会更快一些。

引用

  1. ^ 存档副本. [2023-01-19]. (原始内容存档于2021-01-30). 
  2. ^ Io Releases. [2020-02-06]. (原始内容存档于2020-11-24). 
  3. ^ Io Programming Guide. [2013-08-16]. (原始内容存档于2013-08-06). 
  4. ^ Tate, Bruce. Chapter 3: Io . Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages 1st. Raleigh, North Carolina: Pragmatic Bookshelf英语The Pragmatic Programmer. 2010: 60, 72. ISBN 978-1934356593. 

外部链接