0
|
1 \section{Continuation based C}
|
|
2 CbC とはC言語からループ制御構造とサブルーチンコールを取り除き、
|
|
3 継続を導入したC言語の下位言語である。継続呼び出しは引数付き goto 文で表現される。
|
|
4 また、CodeGear を処理の単位、DataGear をデータの単位として記述するプログラミング言語である。
|
|
5 CbC のプログラミングでは DataGear を CodeGear で変更し、その変更を次の CodeGear に渡して処理を行う。
|
|
6
|
|
7 \subsection{Code Gear / Data Gear}
|
|
8 CbCでは、検証しやすいプログラムの単位として DataGear と CodeGear という単位を用いる。
|
|
9
|
|
10 CodeGear はプログラムの処理そのものであり、一般的なプログラム言語における関数と同じ役割である。
|
|
11 DataGear は CodeGear で扱うデータの単位であり、処理に必要なデータである。
|
|
12 CodeGear の入力となる DataGear を Input DataGear と呼び、出力は Output DataGear と呼ぶ。
|
|
13
|
|
14 CodeGear 間の移動は継続を用いて行われる。
|
|
15 継続は関数呼び出しとは異なり、呼び出した後に元のコードに戻れず、次の CodeGear へ継続を行う。
|
|
16 これは、関数型プログラミングでは末尾再帰をしていることと同義である。
|
|
17
|
|
18
|
|
19 \subsection{Meta Code Gear / Meta Data Gear}
|
|
20 プログラムの記述する際は、ノーマルレベルの計算の他に、メモリ管理、スレッド管理、
|
|
21 資源管理等を記述しなければならない処理が存在する。これらの処理をメタ計算と呼ぶ。
|
|
22
|
|
23 メタ計算は OS の機能を通して処理することが多く、信頼性の高い記述が求められる。
|
|
24 そのため、 CbC ではメタ計算を分離するために Meta CodeGear、 Meta DataGear を定義している。
|
|
25
|
|
26 Meta CodeGear は CbC 上でのメタ計算で、通常の CodeGear を実行する際に必要なメタ計算を分離するための単位である。
|
|
27 CodeGear を実行する前後やDataGear の大枠として Meta Gear が存在している。
|
|
28
|
|
29 Meta DataGear は CbC 上のメタ計算で扱われる DataGear である。例えば stub
|
|
30 CodeGear では Context と呼ばれる接続可能な CodeGear、DataGear のリストや、DataGear
|
|
31 のメモリ空間等を持った Meta DataGear を扱っている。
|
|
32
|
|
33
|
|
34
|