fbpx
维基百科

Io (编程语言)

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

Io
编程范型面向对象基于原型同像性
設計者Steve Dekorte
實作者Steve Dekorte, Jonathan Wright, Jeremy Tregunna
发行时间2002年,​21年前​(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. 

外部链接

编程语言, io语言是一门计算机高级编程语言, 其发展历史并不长, 2002年3月7日由steve, dekorte研发出来, io语言因为没有关键字, 因而很容易进行扩展, 并很灵活, io编程范型面向对象, 基于原型, 同像性設計者steve, dekorte實作者steve, dekorte, jonathan, wright, jeremy, tregunna发行时间2002年, 21年前, 2002, 型態系統动态, 强类型網站iolanguage, org主要實作產品io, net啟發語言smallta. Io语言是一门计算机高级编程语言 其发展历史并不长 2002年3月7日由Steve Dekorte研发出来 Io语言因为没有关键字 因而很容易进行扩展 并很灵活 Io编程范型面向对象 基于原型 同像性設計者Steve Dekorte實作者Steve Dekorte Jonathan Wright Jeremy Tregunna发行时间2002年 21年前 2002 型態系統动态 强类型網站iolanguage wbr org主要實作產品Io Io NET啟發語言Smalltalk NewtonScript Self Lua LISP Act1 英语 Actor model middle history Actor programming languages 影響語言Ioke 1 Potion 目录 1 特点 2 历史 3 语法 3 1 消息 3 2 运算符 3 3 对象 3 4 方法和块 4 示例 4 1 Hello World 4 2 非递归的阶乘 5 引用 6 外部链接特点 编辑Io语言并非主流编程语言 但其学习价值和启发价值都很高 这门语言吸收了LISP Lua Smalltalk等语言的特点 Io语言是纯面向对象的原型继承语言 它的创造过程是综合了Smalltalk Self NewtonScript Act1 LISP和Lua等语言的特点 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是方法的最后一个操作 这个函数会隐式地返回这个结果 因此不需要显式地加上一个返回语句 上面这段代码展示了 span class ilh all data orig title 范围 编程 data lang code en data lang name 英语 data foreign title Range computer programming span class ilh page Range span span class noprint ilh comment span class ilh lang 英语 span span class ilh colon span span class ilh link span lang en dir auto Range computer programming span span span span 的用法 而没有用for 后者会更快一些 引用 编辑 存档副本 2023 01 19 原始内容存档于2021 01 30 Io Releases 2020 02 06 原始内容存档于2020 11 24 Io Programming Guide 2013 08 16 原始内容存档于2013 08 06 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 含有內容需登入查看的頁面 link 外部链接 编辑Io 页面存档备份 存于互联网档案馆 官方网站 Io Notes Io at Synrc Research Center 开放式目录计划中和Io相关的内容 取自 https zh wikipedia org w index php title Io 编程语言 amp oldid 75617429, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。