Io_(プログラミング言語)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Io_(プログラミング言語)の意味・解説 

Io (プログラミング言語)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/27 14:35 UTC 版)

Io
パラダイム オブジェクト指向プロトタイプベース
登場時期 2002年
設計者 Steve Dekorte
開発者 Steve Dekorte 他
最新リリース 2017.09.06/ 2017年8月12日 (6年前) (2017-08-12)
型付け 強い動的型付け
主な処理系 Io
影響を受けた言語 SmalltalkNewtonScript英語版SelfLuaLISP、Act1
ウェブサイト io language
テンプレートを表示

Io(イオあるいはアイオー[1])は純粋なオブジェクト指向プログラミング言語であり、SmalltalkSelfLuaLISP、Act1、NewtonScript英語版の影響を受けている。Self や NewtonScript のようなプロトタイプベースのオブジェクトモデルであり、オブジェクトクラスを区別しない。Smalltalk のようにあらゆるものをオブジェクトとして扱い、動的型付けを行う。LISPのように文の概念がなく、制御フローは関数を使って実現される。Io はアクターによる並行性を実現しており、最近[いつ?]のプログラミング言語には珍しい特徴となっている。

Io の特筆すべき特徴は、その効率のよさ、処理系の小ささ、外部リソースを自由に使えるオープン性である。Io は小型で移植性の高い仮想機械で実行される。

歴史

この言語は、2002年3月7日ごろ Steve Dekorte が友人の協力を得て作った。彼はプログラミング言語の仕組みをよく知らなかったため、勉強のために小型の言語を実際に作ってみることにした。そして完成したのが Io である。

方針

Io の目的は概念的な統一 (conceptual unification) と動的言語の研究にあるので、トレードオフとして性能向上よりも単純さと柔軟性を好む傾向がある。

機能/特徴

文法

最も単純な形式では、次のような1つの識別子でも Io のプログラムと言える。

doStuff

この doStuff はメソッドであり、引数がないので後ろに括弧をつける必要がない。

doStuff に引数がある場合、次のように記される。

doStuff(42)

Io はメッセージパッシング言語であり、Io ではコメント以外はメッセージの集積でプログラムが構成される。上掲の例でもそれが現れているがこれが全てではない。メッセージパッシング言語であることを明確に示すため、次の例を示す。

System version

これは、 "version" というメッセージが "System" オブジェクトに送られていることを示している。

演算子は特別であり、これまでの例ほど単純ではない。Ioの構文解析器はインタプリタが定義する演算子をインターセプトし、それをメソッドコールに翻訳する。例えば、次のような記述があったとする。

1 + 5 * 8 + 1

これは次のように翻訳される。

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

見ての通り、演算子の優先順位が一応存在しており、C言語での優先順位と同じである。

また、演算子がメソッドコールになっていることにも注意されたい。Io の演算子は全てメソッドである(ただし、例外として代入演算子 ":=" と "=" は構文解析器が全く異なるメッセージに翻訳する)。このため、演算順序を制御するための括弧が不要という特徴がある。

メソッドとブロック

Io には匿名の関数を作る2つの方法がある。メソッドとブロックである。この2つの違いはスコープである。ブロックは静的スコープであり、メソッドは動的スコープである。

メソッドもブロックも高階関数である。

Hello world は次のようになる。

"Hello, world!" println

新たなオブジェクトはクローニングで生成される。Io では新たな空のオブジェクトが作られたとき、その親との違いだけが新しいオブジェクトに格納される。このような方式を差分継承と呼ぶ。以下に例を示す。

A := Object clone // 新しい空のオブジェクト "A" を作る

再帰を使わない階乗プログラムを以下に示す。

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

この例では range を使っているが、for ループの方が高速である。もう1つの例を以下に示す。

// C++ 風のコメントが書ける
# シェル風のコメントでもよい
/* C言語風でもよい */

for(i, 1, 10, i print) // 1 から 10 までの数を表示

x := Object clone // 新たなスロットを作るときは ':=' を使う
x = Map clone // 上書きするときは '=' を使う
x prettyprint := method( // 引数のないメソッドを作る
    foreach(key, value, write(key, ": ", value, "\n")) // マップ上でループする
)
x atPut("hi", 1) // キーと値のペアをマップに置く
x atPut("hello", 2)
x prettyprint
/* 出力は次のようになる:
      hi: 1
      hello: 2
*/

脚注

  1. ^ Io言語の名前の由来は2つあり、ひとつはイタリア語一人称代名詞 io であり、もうひとつは木星第1衛星イオ (: Io, [ˈ.]) である。The Reflective Programming Language Io

関連項目

  • jEdit - Io のソースファイル向けの強調設定がある

外部リンク


「Io (プログラミング言語)」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Io_(プログラミング言語)」の関連用語

Io_(プログラミング言語)のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Io_(プログラミング言語)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのIo (プログラミング言語) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS