フリー百科事典『ウィキペディア(Wikipedia)』この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。languageテンプレートを表示Io(イオあるいはアイオー[1])は純粋なオブジェクト指向プログラミング言語であり、Smalltalk、Self、Lua、LISP、Act1、NewtonScript(英語版)の影響を受けている。ようなプロトタイプベースのオブジェクトモデルであり、オブジェクトとクラスを区別しない。ようにあらゆるものをオブジェクトとして扱い、動的型付けを行う。LISPのように文の概念がなく、制御フローは関数を使って実現される。アクターによる並行性を実現しており、最近[いつ?]のプログラミング言語には珍しい特徴となっている。特筆すべき特徴は、その効率のよさ、処理系の小ささ、外部リソースを自由に使えるオープン性である。小型で移植性の高い仮想機械で実行される。友人の協力を得て作った。彼はプログラミング言語の仕組みをよく知らなかったため、勉強のために小型の言語を実際に作ってみることにした。動的言語の研究にあるので、トレードオフとして性能向上よりも単純さと柔軟性を好む傾向がある。メソッドであり、引数がないので後ろに括弧をつける必要がない。引数がある場合、次のように記される。コメント以外はメッセージの集積でプログラムが構成される。上掲の例でもそれが現れているがこれが全てではない。メッセージパッシング言語であることを明確に示すため、次の例を示す。オブジェクトに送られていることを示している。演算子は特別であり、これまでの例ほど単純ではない。Ioの構文解析器はインタプリタが定義する演算子をインターセプトし、それをメソッドコールに翻訳する。次のような記述があったとする。1これは次のように翻訳される。+(1)見ての通り、演算子の優先順位が一応存在しており、C言語での優先順位と同じである。演算子がメソッドコールになっていることにも注意されたい。構文解析器が全く異なるメッセージに翻訳する)。このため、演算順序を制御するための括弧が不要という特徴がある。匿名の関数を作る2つの方法がある。メソッドとブロックである。この2つの違いはスコープである。ブロックは静的スコープであり、メソッドは動的スコープである。メソッドもブロックも高階関数である。println新たなオブジェクトはクローニングで生成される。新たな空のオブジェクトが作られたとき、その親との違いだけが新しいオブジェクトに格納される。このような方式を差分継承と呼ぶ。作る再帰を使わない階乗プログラムを以下に示す。ループの方が高速である。1つの例を以下に示す。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスのもとで利用できます。追加の条件が適用される場合があります。詳細については利用規約を参照してください。Cookieに関する声明モバイルビュ。