Mercurial > hg > Papers > 2017 > mitsuki-thesis
diff final_main/chapter2.tex @ 6:5b368e14bb64
update
author | mir3636 |
---|---|
date | Tue, 14 Feb 2017 18:48:26 +0900 |
parents | 6d00f6c9bb8a |
children |
line wrap: on
line diff
--- a/final_main/chapter2.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter2.tex Tue Feb 14 18:48:26 2017 +0900 @@ -1,7 +1,8 @@ \chapter{Continuation based C (CbC)} \section{Continuation based C (CbC)} CbC は 処理を Code Gear とした単位を用いて記述するプログラミング言語である。 -Code Gear から次の Code Gear へと goto による継続で遷移をし処理を行う。 +Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。 +Code Gear から次の Code Gear へと goto による継続で遷移で処理を行い、引数として出力を与える。 図\ref{fig:cs}は Code Gear 間の処理の流れを表している。 \begin{figure}[htpb] @@ -16,9 +17,12 @@ Code Gear は CbC における最も基本的な処理単位である。 リスト \ref{code_simple} は最も基本的な CbC のコードの一例で、図 \ref{fig:code_simple}はそれを図示したものである。 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。 +ただし、これは \_\_code 型の戻り値を返すという意味ではなく、Code Gear であることを示すフラグのようなものである。 + Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。 goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。 -この goto の行き先を継続と呼ぶ。 +リスト \ref{code_simple} の goto cs1(a+b); などがこれにたる。 +この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。 Scheme の継続と異なり CbC には呼び出し元の環境がないので、この継続は単なる行き先である。 したがってこれを軽量継続と呼ぶこともある。 軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。 @@ -77,6 +81,14 @@ } \end{lstlisting} +\begin{figure}[htpb] + \begin{center} + \scalebox{0.55}{\includegraphics{fig/factorial.pdf}} + \end{center} + \caption{階乗を求める CbC プログラムの軽量継続図} + \label{fig:factorial} +\end{figure} + \section{環境付き継続} 環境付き継続は C との互換性のために必要な機能である。 CbC と C の記述を交える際、CbC の Code Gear から C の関数の呼び出しは問題なく行える。