view mindmap.mm @ 98:a74c49fd0359

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 05 Feb 2021 22:31:08 +0900
parents 0a326d53e572
children
line wrap: on
line source

<map version="freeplane 1.8.0">
<!--To view this file, download free mind mapping software Freeplane from http://freeplane.sourceforge.net -->
<node TEXT="GearsOSのAPI" FOLDED="false" ID="ID_1391122564" CREATED="1607406106629" MODIFIED="1611909750513" STYLE="oval">
<font SIZE="18"/>
<hook NAME="MapStyle" zoom="1.5">
    <properties edgeColorConfiguration="#808080ff,#ff0000ff,#0000ffff,#00ff00ff,#ff00ffff,#00ffffff,#7c0000ff,#00007cff,#007c00ff,#7c007cff,#007c7cff,#7c7c00ff" fit_to_viewport="false"/>

<map_styles>
<stylenode LOCALIZED_TEXT="styles.root_node" STYLE="oval" UNIFORM_SHAPE="true" VGAP_QUANTITY="24.0 pt">
<font SIZE="24"/>
<stylenode LOCALIZED_TEXT="styles.predefined" POSITION="right" STYLE="bubble">
<stylenode LOCALIZED_TEXT="default" ICON_SIZE="12.0 pt" COLOR="#000000" STYLE="fork">
<font NAME="SansSerif" SIZE="10" BOLD="false" ITALIC="false"/>
</stylenode>
<stylenode LOCALIZED_TEXT="defaultstyle.details"/>
<stylenode LOCALIZED_TEXT="defaultstyle.attributes">
<font SIZE="9"/>
</stylenode>
<stylenode LOCALIZED_TEXT="defaultstyle.note" COLOR="#000000" BACKGROUND_COLOR="#ffffff" TEXT_ALIGN="LEFT"/>
<stylenode LOCALIZED_TEXT="defaultstyle.floating">
<edge STYLE="hide_edge"/>
<cloud COLOR="#f0f0f0" SHAPE="ROUND_RECT"/>
</stylenode>
</stylenode>
<stylenode LOCALIZED_TEXT="styles.user-defined" POSITION="right" STYLE="bubble">
<stylenode LOCALIZED_TEXT="styles.topic" COLOR="#18898b" STYLE="fork">
<font NAME="Liberation Sans" SIZE="10" BOLD="true"/>
</stylenode>
<stylenode LOCALIZED_TEXT="styles.subtopic" COLOR="#cc3300" STYLE="fork">
<font NAME="Liberation Sans" SIZE="10" BOLD="true"/>
</stylenode>
<stylenode LOCALIZED_TEXT="styles.subsubtopic" COLOR="#669900">
<font NAME="Liberation Sans" SIZE="10" BOLD="true"/>
</stylenode>
<stylenode LOCALIZED_TEXT="styles.important">
<icon BUILTIN="yes"/>
</stylenode>
</stylenode>
<stylenode LOCALIZED_TEXT="styles.AutomaticLayout" POSITION="right" STYLE="bubble">
<stylenode LOCALIZED_TEXT="AutomaticLayout.level.root" COLOR="#000000" STYLE="oval" SHAPE_HORIZONTAL_MARGIN="10.0 pt" SHAPE_VERTICAL_MARGIN="10.0 pt">
<font SIZE="18"/>
</stylenode>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,1" COLOR="#0033ff">
<font SIZE="16"/>
</stylenode>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,2" COLOR="#00b439">
<font SIZE="14"/>
</stylenode>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,3" COLOR="#990000">
<font SIZE="12"/>
</stylenode>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,4" COLOR="#111111">
<font SIZE="10"/>
</stylenode>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,5"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,6"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,7"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,8"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,9"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,10"/>
<stylenode LOCALIZED_TEXT="AutomaticLayout.level,11"/>
</stylenode>
</stylenode>
</map_styles>
</hook>
<hook NAME="AutomaticEdgeColor" COUNTER="6" RULE="ON_BRANCH_CREATION"/>
<node TEXT="プログラムの信頼性を保証するのは難しい" POSITION="right" ID="ID_182717011" CREATED="1607406127549" MODIFIED="1607409819862">
<edge COLOR="#ff0000"/>
<node TEXT="テストプログラムで全ては証明できない" ID="ID_1642945466" CREATED="1607406143787" MODIFIED="1607409818771"/>
<node TEXT="証明でアプローチしたい" ID="ID_328449335" CREATED="1607409771301" MODIFIED="1607409837716">
<node TEXT="agda" ID="ID_286995188" CREATED="1607409838103" MODIFIED="1607409841927"/>
<node TEXT="coq" ID="ID_104059977" CREATED="1607409842548" MODIFIED="1607409844388"/>
<node TEXT="モデル記述言語" ID="ID_1601862702" CREATED="1607409849304" MODIFIED="1607409856021"/>
</node>
<node TEXT="証明可能かつ動く実装が出来るのは限られる" ID="ID_1135633058" CREATED="1607409857312" MODIFIED="1607409869965">
<node TEXT="z" ID="ID_1351484358" CREATED="1607409870121" MODIFIED="1607409874526"/>
<node TEXT="C言語のように自由にプログラミングできない" ID="ID_1179551403" CREATED="1607409874775" MODIFIED="1607409894985"/>
</node>
</node>
<node TEXT="OSの信頼性" POSITION="right" ID="ID_14101489" CREATED="1607406133236" MODIFIED="1607410076159">
<edge COLOR="#0000ff"/>
<node TEXT="OS側の信頼性は高く保証される必要がある" ID="ID_415782527" CREATED="1607409802404" MODIFIED="1607409803889"/>
<node TEXT="アプリケーションはOSを前提にしている" ID="ID_1097881899" CREATED="1607409804234" MODIFIED="1607409808044"/>
<node TEXT="高い拡張性も持つ必要がある" ID="ID_942895988" CREATED="1607409902688" MODIFIED="1607409923018"/>
<node TEXT="証明可能かつ動くOSがほしい" ID="ID_1872416127" CREATED="1607409986379" MODIFIED="1607410002919"/>
<node TEXT="Gears/CbCで解決したい" ID="ID_1762270235" CREATED="1607410009412" MODIFIED="1607410076159">
<node TEXT="CodeGear" ID="ID_1507339587" CREATED="1607410015920" MODIFIED="1607410018257"/>
<node TEXT="MetaCodeGear" ID="ID_775893838" CREATED="1607410018670" MODIFIED="1607410023745">
<node TEXT="Metaで証明を挟む" ID="ID_566158152" CREATED="1607410026768" MODIFIED="1607410033878"/>
<node TEXT="信頼性の保証はMetaで行う" ID="ID_4745358" CREATED="1607410034270" MODIFIED="1607410045242"/>
</node>
<node TEXT="Agda &lt;-&gt; CbCで相互変換をする" ID="ID_1273550084" CREATED="1607410085979" MODIFIED="1607410097425">
<node TEXT="agdaからCbCの一方方向?" ID="ID_41779345" CREATED="1607410098476" MODIFIED="1607410108129"/>
</node>
</node>
</node>
<node TEXT="GearsOS" POSITION="left" ID="ID_1651648479" CREATED="1607406135887" MODIFIED="1609837810229">
<edge COLOR="#00ff00"/>
<node TEXT="GearsスタイルからCbCへの変換" ID="ID_1244075601" CREATED="1609837792112" MODIFIED="1609837836142">
<node TEXT="stubの作成" ID="ID_218099555" CREATED="1609837838247" MODIFIED="1609837842235"/>
<node TEXT="メタ計算の作成" ID="ID_1788852251" CREATED="1609837842671" MODIFIED="1609837852512"/>
<node TEXT="煩雑なCbCの変換" ID="ID_497430972" CREATED="1609837852929" MODIFIED="1609837862907"/>
<node TEXT="Interfaceの型チェック" ID="ID_1508103733" CREATED="1609837868606" MODIFIED="1609837880782">
<node TEXT="未実装のCodeGearがある場合はエラー" ID="ID_1847394451" CREATED="1609837885333" MODIFIED="1609837895351"/>
<node TEXT="対応するコンストラクタも自動生成" ID="ID_1786557666" CREATED="1609837896506" MODIFIED="1609837908386"/>
</node>
<node TEXT="" ID="ID_946596406" CREATED="1609837882084" MODIFIED="1609837882084"/>
</node>
<node TEXT="CbCで記述する" ID="ID_641565429" CREATED="1609837816689" MODIFIED="1609837822732"/>
<node TEXT="Gearsプログラミング支援" ID="ID_617663523" CREATED="1609837930761" MODIFIED="1609837939906">
<node TEXT="Perlスクリプトが複数" ID="ID_1656547910" CREATED="1609837941674" MODIFIED="1609837948147"/>
<node TEXT="static_gen_header.pl" ID="ID_345097738" CREATED="1609837948606" MODIFIED="1610798814512">
<node TEXT="ヘッダーファイルの雛形生成" ID="ID_1000317681" CREATED="1610798802760" MODIFIED="1610798810313"/>
<node TEXT="Interface/Implを作成" ID="ID_35780263" CREATED="1610798810707" MODIFIED="1610798824117"/>
<node TEXT="型構造の確認" ID="ID_1868906930" CREATED="1610798824540" MODIFIED="1610798834449"/>
</node>
<node TEXT="check" ID="ID_1489454833" CREATED="1610798837901" MODIFIED="1610798839720">
<node TEXT="context.hへの変換を確認" ID="ID_1374126086" CREATED="1610798842586" MODIFIED="1610798851232"/>
<node TEXT="ユーザーデバッグ用" ID="ID_1296414310" CREATED="1610798851801" MODIFIED="1610798857209"/>
<node TEXT="プログラマレベルでもデバッグ可能" ID="ID_1841644186" CREATED="1610798857588" MODIFIED="1610798869511"/>
</node>
<node TEXT="trans_impl.pl" ID="ID_92911291" CREATED="1610798840032" MODIFIED="1610798876883">
<node TEXT="型からCbCを作成する" ID="ID_429966766" CREATED="1610798877807" MODIFIED="1610798886059"/>
<node TEXT="入力はImplのヘッダファイル" ID="ID_1539817420" CREATED="1610798886594" MODIFIED="1610798905341"/>
<node TEXT="コンストラクタも自動生成される" ID="ID_975576594" CREATED="1610798905698" MODIFIED="1610798913421">
<node TEXT="削除しても問題ない" ID="ID_69222688" CREATED="1610798914473" MODIFIED="1610798926796"/>
<node TEXT="ovverwriteする場合は直接編集" ID="ID_1735584338" CREATED="1610798927168" MODIFIED="1610798941091"/>
</node>
<node TEXT="ヘッダファイル側を更新した場合は、アップデートされる" ID="ID_255644807" CREATED="1610798955704" MODIFIED="1610798976628"/>
</node>
</node>
<node TEXT="Interface" ID="ID_111711637" CREATED="1611909760905" MODIFIED="1611909768652">
<node TEXT="モジュール化のしくみ" ID="ID_270020594" CREATED="1611909769914" MODIFIED="1611909774458">
<node TEXT="実装と分離" ID="ID_899199598" CREATED="1611909811289" MODIFIED="1611909815346"/>
<node TEXT="実装内で使いたい値はImplに書き込む" ID="ID_1283189873" CREATED="1611909815846" MODIFIED="1611909831274"/>
</node>
<node TEXT="goto metaする際の引数書き込み" ID="ID_148149632" CREATED="1611909774937" MODIFIED="1611909789400">
<node TEXT="Contextに格納" ID="ID_169852895" CREATED="1611909790577" MODIFIED="1611909797381"/>
<node TEXT="enumの番号で管理" ID="ID_1116903119" CREATED="1611909797944" MODIFIED="1611909802303"/>
</node>
<node TEXT="Interfaceの型" ID="ID_618159776" CREATED="1611909839730" MODIFIED="1611909844737">
<node TEXT="headerファイルで定義(昔から" ID="ID_1530280048" CREATED="1611909847731" MODIFIED="1611909858088"/>
<node TEXT="Implの型は不定" ID="ID_1409555565" CREATED="1611909858716" MODIFIED="1611909863810">
<node TEXT="contextに直接書き込み(以前)" ID="ID_266895831" CREATED="1611909866488" MODIFIED="1611909876149"/>
<node TEXT="headerファイルを作成(今回)" ID="ID_45565008" CREATED="1611909876480" MODIFIED="1611909887165"/>
<node TEXT="実装の型はCbCで指定する" ID="ID_228155313" CREATED="1611909890897" MODIFIED="1611909902405"/>
</node>
</node>
<node TEXT="" ID="ID_659656641" CREATED="1611909845049" MODIFIED="1611909845049"/>
</node>
</node>
<node TEXT="GearsOSのトランスコンパイラ" POSITION="left" ID="ID_1641267398" CREATED="1609837808837" MODIFIED="1611555634865">
<edge COLOR="#7c0000"/>
<node TEXT="context" ID="ID_626163141" CREATED="1610799004456" MODIFIED="1610799006023">
<node TEXT="すべてのCodeGearとDataGearの組" ID="ID_116856033" CREATED="1610799007096" MODIFIED="1610799015889"/>
<node TEXT="使われるデータ構造をすべて管理" ID="ID_1431340983" CREATED="1610799016422" MODIFIED="1610799025839"/>
<node TEXT="" ID="ID_397901455" CREATED="1610799028369" MODIFIED="1610799028369"/>
</node>
<node TEXT="contextの生成" ID="ID_142064842" CREATED="1610799037651" MODIFIED="1610799048671">
<node TEXT=".cbcで使われている型から作成" ID="ID_1264134662" CREATED="1610799044277" MODIFIED="1610799062228"/>
<node TEXT="従来は手書き" ID="ID_1021123996" CREATED="1610799062640" MODIFIED="1610799069785"/>
<node TEXT="__codeをenum Codeに変換する" ID="ID_1920059346" CREATED="1610799076485" MODIFIED="1610799095429"/>
</node>
<node TEXT="trans_impl" ID="ID_445569997" CREATED="1610799041195" MODIFIED="1611555644361">
<node TEXT="既存言語" ID="ID_1480614077" CREATED="1611555659875" MODIFIED="1611555663249">
<node TEXT="Java" ID="ID_360165652" CREATED="1611555663771" MODIFIED="1611555665765">
<node TEXT="満たしていないとコンパイルエラー" ID="ID_93338973" CREATED="1611555670092" MODIFIED="1611555681132"/>
<node TEXT="IntelliJ IDE" ID="ID_1756918635" CREATED="1611555681569" MODIFIED="1611555687306"/>
</node>
<node TEXT="golang" ID="ID_1760072778" CREATED="1611555666055" MODIFIED="1611555667943">
<node TEXT="コンパイルエラー" ID="ID_760702846" CREATED="1611555689920" MODIFIED="1611555693550"/>
<node TEXT="impl" ID="ID_213890247" CREATED="1611555693966" MODIFIED="1611555697202"/>
<node TEXT="vscode" ID="ID_1701370642" CREATED="1611555697471" MODIFIED="1611555698810"/>
</node>
</node>
<node TEXT="GearsOS" ID="ID_1562949372" CREATED="1611555702818" MODIFIED="1611555706688">
<node TEXT="今回作成" ID="ID_1375511077" CREATED="1611555707865" MODIFIED="1611555714076"/>
<node TEXT="Implの型をいれれば良い" ID="ID_1933132029" CREATED="1611555714450" MODIFIED="1611555722838"/>
<node TEXT="Interfaceは自動で検索 or 静的に指定" ID="ID_1314051121" CREATED="1611555723253" MODIFIED="1611555736752"/>
</node>
</node>
<node TEXT="generate_stub.pl" ID="ID_1288980250" CREATED="1611909051834" MODIFIED="1611909057701">
<node TEXT="Cmakeから呼び出される" ID="ID_1187142003" CREATED="1611909060932" MODIFIED="1611909069108"/>
<node TEXT="Gears(*.cbc) -&gt; CbC (*.c)への変換系" ID="ID_415006908" CREATED="1611909069563" MODIFIED="1611909083397">
<node TEXT="各CbCファイルごとに呼び出される" ID="ID_997384321" CREATED="1611909092632" MODIFIED="1611909103080"/>
<node TEXT="変換結果はオプションで指定" ID="ID_1460216686" CREATED="1611909103658" MODIFIED="1611909113324"/>
<node TEXT="以前は単純なスクリプト?" ID="ID_1549402452" CREATED="1611909113609" MODIFIED="1611909127510"/>
<node TEXT="" ID="ID_260554999" CREATED="1611909407051" MODIFIED="1611909407051"/>
</node>
<node TEXT="Interfaceの解析" ID="ID_1056610181" CREATED="1611909083727" MODIFIED="1611909396270">
<node TEXT="ライブラリを使用" ID="ID_429244613" CREATED="1611909410133" MODIFIED="1611909419186"/>
<node TEXT="使っているInterfaceのメソッドの整合性" ID="ID_1245044371" CREATED="1611909419560" MODIFIED="1611909434683"/>
<node TEXT="out put valueがあるかどうかの確認" ID="ID_1713446258" CREATED="1611909435120" MODIFIED="1611909448213"/>
<node TEXT="method nameの自動変換" ID="ID_1730605261" CREATED="1611909459337" MODIFIED="1611909470188"/>
<node TEXT="construcorの自動生成" ID="ID_273908561" CREATED="1611909470563" MODIFIED="1611909477799"/>
</node>
<node TEXT="use warnings, use strict" ID="ID_1085657332" CREATED="1611909490015" MODIFIED="1611909496148"/>
</node>
</node>
<node TEXT="GearsOS" POSITION="left" ID="ID_1469562629" CREATED="1607410324461" MODIFIED="1611909754800">
<edge COLOR="#ff00ff"/>
</node>
<node TEXT="GearsのAPI" POSITION="right" ID="ID_164532708" CREATED="1607410326821" MODIFIED="1607410339785">
<edge COLOR="#00ffff"/>
<node TEXT="context" ID="ID_221503071" CREATED="1607410340389" MODIFIED="1607410345184">
<node TEXT="createContext" ID="ID_1897722231" CREATED="1607410347503" MODIFIED="1607410350601">
<node TEXT="コンストラクタに相当する" ID="ID_1993397173" CREATED="1607410359489" MODIFIED="1607410367244"/>
<node TEXT="構造体の初期化" ID="ID_145693211" CREATED="1607410375763" MODIFIED="1607410419367"/>
<node TEXT="enumの設定" ID="ID_929172173" CREATED="1607410419707" MODIFIED="1607410424172"/>
<node TEXT="現在は自動生成" ID="ID_1917526305" CREATED="1607410464668" MODIFIED="1607410469829"/>
</node>
<node TEXT="Meta計算" ID="ID_1460127604" CREATED="1607410350903" MODIFIED="1607410357673">
<node TEXT="Perlで生成される" ID="ID_1187821600" CREATED="1607410471357" MODIFIED="1607410475684"/>
<node TEXT="ほとんどはstub" ID="ID_1187732606" CREATED="1607410476147" MODIFIED="1607410491112">
<node TEXT="prevCodeGear" ID="ID_1246312422" CREATED="1607410492527" MODIFIED="1607410507814"/>
<node TEXT="contextから値を取り出す" ID="ID_539268101" CREATED="1607410508120" MODIFIED="1607410515547"/>
<node TEXT="contextへ値を積むのはCodeGearの末尾" ID="ID_958749071" CREATED="1607410521360" MODIFIED="1607410537963"/>
</node>
</node>
</node>
<node TEXT="" ID="ID_1080105775" CREATED="1607410345523" MODIFIED="1607410345523"/>
</node>
</node>
</map>