Mercurial > hg > Papers > 2022 > soto-sigos
diff Paper/tex/cbc.tex @ 2:f9794e92f964
WIP 8割くらいできた
author | soto <soto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 05 May 2022 00:32:42 +0900 |
parents | 9f6cb9166d06 |
children | 952d4dbb7c6a |
line wrap: on
line diff
--- a/Paper/tex/cbc.tex Sun May 01 15:17:52 2022 +0900 +++ b/Paper/tex/cbc.tex Thu May 05 00:32:42 2022 +0900 @@ -1,23 +1,30 @@ \section{Continuation based C} -Continuation based C\cite{kaito-lola} (以下 CbC) は CodeGear を処理の単位、 -DataGear をデータの単位として記述するプログラミング言語である。 -CbC は C 言語とほぼ同じ構文を持つが、よりアセンブラに近い記述になる。 +Continuation based C\cite{kaito-lola} (以下 CbC) は +関数呼び出しの際にjmp命令で遷移をし、環境を持たずに遷移する +ことができるC言語である、 +つまりC言語の下位言語にあたり、よりアセンブラに近い記述を行う -CbC では検証しやすいプログラムの単位として DataGear と CodeGear という -単位を用いるプログラミングスタイルを提案している。 +jmp命令であるため関数遷移をし、実行が終了しても +もとの関数に戻ることはない。 +そのため次に遷移する Code Gear を指定する。 +これは、関数型プログラミングでの末尾関数呼び出しに相当する。 -DataGear は CodeGear で扱うデータの単位であり、処理に必要なデータである。 -CodeGear の入力となる DataGear を Input DataGear と呼び、 -出力は Output DataGear と呼ぶ。 +Code Gear に Deta Gear を与え、それをもとに処理を行い、 +出力として Data Gear を返し、また次の Code Gearに遷移 +していく流れとなる。 + +CbC では CodeGear を処理の単位、 +DataGear をデータの単位として記述するプログラミング言語である。 -CodeGear はプログラムの処理そのもので、図 で示しているように任意の数の -Input DataGear を参照し、処理が完了すると任意の数の Output DataGear に書き込む。 +他のプログラミング言語とは違い、 +Code Gear が 暗黙の環境を持たず、受け取った Data Gear のみを +もとに処理をすること、 +さらに Code Gear 単位で処理が完結していることから、 +検証に適したプログラミング言語であると言える。 -CodeGear 間の移動は継続を用いて行われる。継続は関数呼び出しとは異なり、呼び出し -た後に元のコードに戻らず、次の CodeGear へ継続を行う。 -これは、関数型プログラミングでは末尾関数呼び出しを行うことに相当する。 +--- -また、プログラムの記述する際は、ノーマルレベルの計算の他に、メモリ管理、スレッド管理、資源管理等を記述しなければならない処理が存在する。 +また、プログラムを記述する際は、ノーマルレベルの計算の他に、メモリ管理、スレッド管理、資源管理等を記述しなければならない処理が存在する。 これらの計算はノーマルレベルの計算と区別してメタ計算と呼ぶ。 メタ計算は OS の機能を通して処理することが多く、信頼性の高い記述が求められる。 @@ -28,7 +35,7 @@ \begin{figure}[htpb] \begin{center} - \scalebox{0.3}{\includegraphics{fig/meta-cg-dg.pdf}} + \scalebox{0.35}{\includegraphics{fig/meta-cg-dg.pdf}} \end{center} \caption{メタ計算を可視化した CodeGear と DataGear} \label{fig:meta-cgdg}