ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

コルーチン

索引 コルーチン

ルーチン(co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞 co は協調を意味するが、複数のコルーチンが中断・継続により協調動作を行うことによる。 サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。 コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語には Modula-2、Simula、Icon、Lua、C#、Limbo などがある。マルチスレッドで原理的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。ただし、マルチスレッドの場合プログラマが同期制御を行わなければならないので、コルーチンのような簡易さはない。 コルーチンという名称は、メルヴィン・コンウェイの1963年の論文が起源である。.

11 関係: メルヴィン・コンウェイプログラミング (コンピュータ)スレッド (コンピュータ)サブルーチンC Sharp継続IconLimboLuaModula-2Simula

メルヴィン・コンウェイ

メルヴィン・コンウェイ(英: Melvin Conway)は初期のコンピュータ科学者、プログラマーであり、コンウェイの法則として知られる法則「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう」 (原文: "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.")を生み出したハッカーとしても知られる。 コンウェイは、おそらくこの法則ではなく、コルーチンを発明した論文および 1958年にUNCOL を提唱したことで最も有名である。 コンウェイはバロースの model 220 コンピュータ向けに SAVE と呼ばれるアセンブラを書いた。SAVE は何かの頭文字ではなく、その機能によるものだった。つまり、SAVEでプログラムを書くことで、パンチカードを節約(SAVE)することができたのである。 1970年代と1980年代、彼はアメリカ国立標準技術研究所向けの MUMPS 医療コンピュータ言語と、 システム言語の標準化に携わっていた 。また、MUMPS についての参考書を著した 。.

新しい!!: コルーチンとメルヴィン・コンウェイ · 続きを見る »

プログラミング (コンピュータ)

ンピュータのプログラミング(programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。.

新しい!!: コルーチンとプログラミング (コンピュータ) · 続きを見る »

スレッド (コンピュータ)

レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.

新しい!!: コルーチンとスレッド (コンピュータ) · 続きを見る »

サブルーチン

ブルーチン(subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。サブプログラム (subprogram) と呼ばれることもある。また、「サブ」をつけずに「ルーチン」と呼ぶこともある。 プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。.

新しい!!: コルーチンとサブルーチン · 続きを見る »

C Sharp

C#(シーシャープ)は、アンダース・ヘルスバーグが設計(デザイン)したプログラミング言語であり、構文(syntax)は(名前にもある通り)C言語や、C言語風に構文が設計されたC++やJavaなどの影響があるが、構文以外についてはヘルスバーグが以前の所属であるBorlandで設計したDelphiからの影響がある。 Microsoftによる謳い文句としては、マルチパラダイムプログラミング言語、強い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ、などといった点が強調されている。 CLIといった周辺も含め、Microsoftのフレームワーク「.NET Framework」の一部である他、VJ++で「非互換なJava」をJavaに持ち込もうとしたような以前のMicrosoftとは異なり、その多くの仕様を積極的に公開し標準化機構に託して自由な利用を許す(ECMA-334、ISO/IEC 23270:2003、JIS X 3015)など、同社の姿勢の変化があらわれている一面でもある(実際に「Mono」という、フリーソフトウェアの定義に合致したライセンスの、コミュニティによる実装がある)。.

新しい!!: コルーチンとC Sharp · 続きを見る »

継続

継続は、前の状態を引き継ぐこと。持続、保持。 計算機科学における継続(けいぞく、continuation)とは、プログラムの実行においてある時点において評価されていない残りのプログラム(the rest of the program)を意味するものであり、手続き(procedure)として表現されるものである。.

新しい!!: コルーチンと継続 · 続きを見る »

Icon

Iconは、米国アリゾナ大学のグリスウォルド(Griswold)により開発されたプログラミング言語である。 Iconはテキスト処理を目的として作られ、Griswoldが以前に作成したSNOBOLの後継として作られたが、仕様はかなり異なる。 言語の特徴としては、ゴール指向評価(原語:goal-directed evaluation)、呼び出しごとにデータを返すジェネレータ、手続きをそのものを変数に格納する「コ・エクスプレッション」(co-expression)などがある。 Iconの後継にはUniconがある。.

新しい!!: コルーチンとIcon · 続きを見る »

Limbo

Limbo は分散システム構築用プログラミング言語であり、Infernoオペレーティングシステムでのアプリケーションソフトウェア作成に使う。ベル研究所の Sean Dorward、Phil Winterbottom、ロブ・パイクが設計した。 Limbo コンパイラはアーキテクチャ独立なオブジェクトコードを生成し、それを Dis 仮想機械でインタプリタ実行するか、性能を強化するために実行直前にコンパイルする。したがって、Limbo で書いたアプリケーションは全ての Inferno プラットフォーム上で動作可能である。 Limbo における並行性の方式は、アントニー・ホーアの Communicating Sequential Processes (CSP) に影響を受けている。.

新しい!!: コルーチンとLimbo · 続きを見る »

Lua

Lua(ルア)は、リオデジャネイロ・カトリカ大学の、主としてDepartment of Computer Science(コンピュータ科学科)and・or Computer Graphics Technology Group (Tecgraf) に属する、Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredo らによって設計開発されたスクリプト言語およびその処理系の実装である。 手続き型言語として、また、プロトタイプベースのオブジェクト指向言語としても利用することができ、関数型言語、データ駆動型としての要素も併せ持っている。 Luaという名前は、ポルトガル語の月に由来する。.

新しい!!: コルーチンとLua · 続きを見る »

Modula-2

Modula-2(モジュラ・ツー)は、コンピュータのプログラミング言語の一種で、1978年頃にチューリッヒ工科大学のニクラウス・ヴィルトにより、先立って構想されたプログラミング言語「Modula」の後継として創案されたものである。汎用手続き型言語で、構文の多くは同様にヴィルトの手掛けたPascal言語に基いたものとなっている。名前「Modula-2」は「モジュールの」を意味する英語「modular」に由来する。.

新しい!!: コルーチンとModula-2 · 続きを見る »

Simula

SIMULA(シミュラ; SIMUlation LAnguage)は、オルヨハン・ダールとクリステン・ニガードによってALGOL60を拡張する形で1960年代に開発が始められたシミュレーション用途のプログラミング言語である。 ALGOLのbegin...

新しい!!: コルーチンとSimula · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »