changeset 31:7e2ceefcef54

update
author mir3636
date Sun, 21 Jan 2018 00:46:12 +0900
parents 33222880db79
children f78928bb28ad
files Slide/prosym.html Slide/prosym.md
diffstat 2 files changed, 56 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/Slide/prosym.html	Sun Jan 21 00:05:37 2018 +0900
+++ b/Slide/prosym.html	Sun Jan 21 00:46:12 2018 +0900
@@ -86,7 +86,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16]
-                on 2018-01-21 00:05:29 +0900 with Markdown engine kramdown (1.13.2)
+                on 2018-01-21 00:45:59 +0900 with Markdown engine kramdown (1.13.2)
                   using options {}
   -->
 
@@ -146,13 +146,14 @@
 <div class='slide '>
 <!-- _S9SLIDE_ -->
 <h1 id="cbc-">CbC のコード例</h1>
-<ul lang="Code_Gear">
+<ul>
   <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li>
   <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li>
   <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li>
   <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li>
 </ul>
-<pre><code>__code cg0(int a, int b){
+
+<pre lang="Code_Gear"><code>__code cg0(int a, int b){
   goto cg1(a+b);
 }
 
@@ -206,45 +207,43 @@
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="gears--1">Gears でのメタ計算</h1>
+<h1 id="gears--1">Gears でのメタ計算の記述</h1>
+
+<ul>
+  <li>各 Code Gear の引数は Data Gear である。</li>
+  <li>code1, node2 は ノーマルな Code Gear であり、meta は Meta Code Gear である。</li>
+</ul>
+
+<pre lang="code"><code>__code code1 (struct Array* array) {
+    ...
+    goto code2(array);
+}
+
+__code meta(struct Context* context, enum Code next) {
+    goto (context-&gt;code[next])(context);
+}
+
+__code code2(struct Array* array) {
+    ...
+}
+
+</code></pre>
+<p># Gears OS の構成
+- Gears OS は以下の要素で構成される。
+    - Context 
+        - 使用されるCode/Data Gear のリストを持っておりTaskでもある。<br />
+    - TaskQueue 
+        - Task のリストを扱う
+    - TaskManager 
+        - Task の依存関係の解決、作成や停止を行います。
+    - Worker 
+        - Task の実行を行う</p>
 
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="gears-os-">Gears OS の構成</h1>
-<ul>
-  <li>Gears OS は以下の要素で構成される。
-    <ul>
-      <li>Context
-        <ul>
-          <li>使用されるCode/Data Gear のリストを持っておりTaskでもある。</li>
-        </ul>
-      </li>
-      <li>TaskQueue
-        <ul>
-          <li>Task のリストを扱う</li>
-        </ul>
-      </li>
-      <li>TaskManager
-        <ul>
-          <li>Task の依存関係の解決、作成や停止を行います。</li>
-        </ul>
-      </li>
-      <li>Worker
-        <ul>
-          <li>Task の実行を行う</li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-</ul>
-
-
-</div>
-<div class='slide '>
-<!-- _S9SLIDE_ -->
-<h1 id="gears-os--1">Gears OS の構成図</h1>
+<h1 id="gears-os-">Gears OS の構成図</h1>
 
 <div style="text-align: center;">
  <img src="./fig/gears_structure.pdf" alt="gears_structure" width="900" />
--- a/Slide/prosym.md	Sun Jan 21 00:05:37 2018 +0900
+++ b/Slide/prosym.md	Sun Jan 21 00:46:12 2018 +0900
@@ -45,6 +45,7 @@
 - Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。
 - goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。
 - この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。
+
 ```Code_Gear
 __code cg0(int a, int b){
   goto cg1(a+b);
@@ -78,8 +79,26 @@
  <img src="./fig/meta.pdf" alt="MetaGear" width="600">
 </div>
 
-# Gears でのメタ計算
+# Gears でのメタ計算の記述
+
+- 各 Code Gear の引数は Data Gear である。
+- code1, node2 は ノーマルな Code Gear であり、meta は Meta Code Gear である。
 
+```code
+__code code1 (struct Array* array) {
+    ...
+    goto code2(array);
+}
+
+__code meta(struct Context* context, enum Code next) {
+    goto (context->code[next])(context);
+}
+
+__code code2(struct Array* array) {
+    ...
+}
+
+```
 # Gears OS の構成
 - Gears OS は以下の要素で構成される。
     - Context 
@@ -137,7 +156,6 @@
 };
 ```
 
-
 <!--
 # CbC による Gears OS 記述の問題点
 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。