general considerations and further recherche to Unix design philosophies
using Claude to dig into the ''MIT vs Berkely'' divide, then dive into various original sources. Relevant since the Unix design is often linked to the ''Berkely'' attitude, and this system of simple building blocks is rooted in blocking IO as an concurrency primitive
This commit is contained in:
parent
5068e04bd7
commit
7650da5d67
1 changed files with 230 additions and 4 deletions
|
|
@ -97,6 +97,30 @@
|
|||
<node CREATED="1784567752745" ID="ID_1176340721" MODIFIED="1784567769924" TEXT="und dann so anornen, daß er weniger stört"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785790228608" ID="ID_1967437025" MODIFIED="1785790231541" TEXT="Darstellung">
|
||||
<node CREATED="1785790274888" ID="ID_642718439" MODIFIED="1785790618638" TEXT="Target-Audience beachten">
|
||||
<arrowlink COLOR="#9c3f50" DESTINATION="ID_1612420528" ENDARROW="Default" ENDINCLINATION="-1002;67;" ID="Arrow_ID_1857563368" STARTARROW="None" STARTINCLINATION="-316;34;"/>
|
||||
<node CREATED="1785790624736" ID="ID_942453754" MODIFIED="1785790659474" TEXT="muß annehmen daß Denkweisen der systemnahen Programmierung nicht bekannt sind"/>
|
||||
<node CREATED="1785790662323" ID="ID_337982910" MODIFIED="1785790682620" TEXT="kann aber keine Einführung geben (systematisch gar nicht möglich)"/>
|
||||
<node CREATED="1785790692615" ID="ID_1452357773" MODIFIED="1785790710776" TEXT="also: „ich laß euch mal zuschauen....“"/>
|
||||
</node>
|
||||
<node CREATED="1785790716243" ID="ID_1869514045" MODIFIED="1785790725942" TEXT="muß »Synchronisation« eigens behandeln">
|
||||
<node CREATED="1785791037159" ID="ID_396828809" MODIFIED="1785791086458" TEXT="hier »trennt sich die Spreu vom Weizen«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
die allermeisten Entwickler heutzutage gehen niemals über diese Schwelle, und verstecken sich deshalb hinter Frameworks
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1785791092863" ID="ID_709044928" MODIFIED="1785791103479" TEXT="es ist viel Halbwissen unterwegs"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1715854555555" ID="ID_364372421" MODIFIED="1519335105159" TEXT="Fazit"/>
|
||||
</node>
|
||||
<node CREATED="1715854555555" HGAP="138" ID="ID_757112290" MODIFIED="1527787200581" POSITION="right" TEXT="Darstellung" VSHIFT="-22">
|
||||
|
|
@ -300,8 +324,39 @@
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1785706612483" ID="ID_1663361337" MODIFIED="1785706623541" TEXT="use abstractions to describe what is needed">
|
||||
<node CREATED="1785706639886" ID="ID_1744235557" MODIFIED="1785706644658" TEXT="a barrier / fence"/>
|
||||
<node CREATED="1785706645606" ID="ID_1006949995" MODIFIED="1785706652761" TEXT="an atomic with memory-order"/>
|
||||
<node CREATED="1785706639886" ID="ID_1744235557" MODIFIED="1785706644658" TEXT="a barrier / fence">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1785788524638" ID="ID_1954156183" MODIFIED="1785788529676" TEXT="ambiguity">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1785788536375" ID="ID_1664468875" MODIFIED="1785788543946" TEXT="barrier is used in two flavours">
|
||||
<node CREATED="1785788545065" ID="ID_615184502" MODIFIED="1785788558771" TEXT="synchronisation barrier ⟹ a control-flow device"/>
|
||||
<node CREATED="1785788560407" ID="ID_902009764" MODIFIED="1785788570172" TEXT="memory barrier: synonymous to "fence""/>
|
||||
</node>
|
||||
<node CREATED="1785788228092" ID="ID_1833234694" MODIFIED="1785788240158" TEXT="fence is used in two meanings">
|
||||
<node CREATED="1785788486161" ID="ID_1563041065" MODIFIED="1785788507616" TEXT=""fence" in OS literature: a hardware supported primitive"/>
|
||||
<node CREATED="1785788262637" ID="ID_293253681" MODIFIED="1785788483923" TEXT="std::atomic_thread_fence ⟹ a standarlone version of atomic ordering"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785788597320" ID="ID_612417499" LINK="#ID_1041458587" MODIFIED="1785788689382" TEXT="typically related to hardware / ISA"/>
|
||||
</node>
|
||||
<node CREATED="1785706645606" ID="ID_1006949995" MODIFIED="1785706652761" TEXT="an atomic with memory-order">
|
||||
<node CREATED="1785791118824" ID="ID_140629594" MODIFIED="1785791139325" TEXT="a conceptual tool of the language standard (C++)"/>
|
||||
<node CREATED="1785791141122" ID="ID_1377087178" MODIFIED="1785791155253" TEXT="BUT: it integrates limitations for the Compiler/Optimiser"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785791188795" ID="ID_1512345327" MODIFIED="1785791203573" TEXT="visiblity vs. control-flow">
|
||||
<node CREATED="1785791204505" ID="ID_1519603089" MODIFIED="1785791238988" TEXT="a memory barrier in itself does not impact the control flow"/>
|
||||
<node CREATED="1785791217111" ID="ID_1010220877" MODIFIED="1785791232073" TEXT="but it is the foundation to synchronise two control-flows"/>
|
||||
</node>
|
||||
<node CREATED="1785791243995" ID="ID_564793830" MODIFIED="1785791259240" TEXT="Example: Producer-Consumer">
|
||||
<node CREATED="1785791260357" ID="ID_1065157346" MODIFIED="1785791274112" TEXT="Claude hat ein sehr gutes Code-Beispiel aufgeschrieben"/>
|
||||
<node CREATED="1785791274543" ID="ID_1417066396" MODIFIED="1785791277867" TEXT="daran kann man zeigen">
|
||||
<node CREATED="1785791279262" ID="ID_367637685" MODIFIED="1785791288802" TEXT="welche fences hier auftreten"/>
|
||||
<node CREATED="1785791289198" ID="ID_1104497858" MODIFIED="1785791294720" TEXT="was synchronises-with heißt"/>
|
||||
<node CREATED="1785791295444" ID="ID_523589950" MODIFIED="1785791302711" TEXT="das "walk-away"-Pattern"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785791338743" ID="ID_124246727" MODIFIED="1785791346259" TEXT="Futex und wait-states bauen darauf auf">
|
||||
<node CREATED="1785791353939" ID="ID_602058573" MODIFIED="1785791370380" TEXT=""walk away" ⟹ heißt hier "Schlaf!""/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -564,7 +619,7 @@
|
|||
<icon BUILTIN="clanbomber"/>
|
||||
</node>
|
||||
<node CREATED="1723508279705" ID="ID_1768919179" MODIFIED="1723508290155" TEXT="daß ich hier einen durchaus eigenwilligen Weg gehe"/>
|
||||
<node CREATED="1784566608876" ID="ID_1680364545" MODIFIED="1784566714722" TEXT="daß die eigentlichen Probleme für Lumiera ungelöst sind">
|
||||
<node CREATED="1784566608876" ID="ID_1680364545" MODIFIED="1785790359493" TEXT="daß die eigentlichen Probleme für Lumiera ungelöst sind">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -574,7 +629,26 @@
|
|||
Damit meine ich, ob der Ansatz mit symbolisch repräsentierten externen Fähigkeiten überhaupt aufgeht, und ob es tatsächlich gelingt, ein Werkzeug-Paradigma auf der Basis von Placements zu schaffen. Und, last but not least, ob ich Leute finden, die mich unterstützen und sich diese Vision aneignen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1785790294093" ID="ID_1612420528" MODIFIED="1785790618638" TEXT="innerer Widerspruch bezüglich »Audience«">
|
||||
<linktarget COLOR="#9c3f50" DESTINATION="ID_1612420528" ENDARROW="Default" ENDINCLINATION="-1002;67;" ID="Arrow_ID_1857563368" SOURCE="ID_642718439" STARTARROW="None" STARTINCLINATION="-316;34;"/>
|
||||
<node CREATED="1785790491314" ID="ID_215785223" MODIFIED="1785790509619" TEXT="das Thema ist eigentlich zu komplex für eine »allgemeine« Zuhörerschaft"/>
|
||||
<node CREATED="1785790510700" ID="ID_94720075" MODIFIED="1785790531089" TEXT="aber ich richte mich gezielt an diese — weil es eigentlich um Lumiera geht"/>
|
||||
<node CREATED="1785790544447" ID="ID_652954139" MODIFIED="1785790586779">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
der Talk kommt <i>fachlich</i> daher — ist aber eigentlich ein <i>Narrativ</i>  und <i>allgemeines Lehrstück</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1303,6 +1377,7 @@
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1785788731289" ID="ID_967019067" MODIFIED="1785788740700" TEXT="this is expensive"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1865,6 +1940,157 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785804402157" ID="ID_1203491113" MODIFIED="1785804415528" TEXT="Design-Philosophien">
|
||||
<node CREATED="1785804416696" ID="ID_520132718" MODIFIED="1785804431381" TEXT="warum ist Linux »im Kern synchron«?">
|
||||
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785804452783" ID="ID_1420036923" MODIFIED="1785804939680" STYLE="fork" TEXT="Ansätze">
|
||||
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||
<icon BUILTIN="wizard"/>
|
||||
<node CREATED="1785804462733" ID="ID_1457799258" MODIFIED="1785804939678" TEXT="weil es von Unix abstammt">
|
||||
<node CREATED="1785804482173" ID="ID_1948549857" MODIFIED="1785804939678" TEXT="blocking-IO macht Pipelines möglich"/>
|
||||
<node CREATED="1785804501768" ID="ID_1281083182" MODIFIED="1785804939678" TEXT="daher ist es tatsächlich eine concurrency-Lösung"/>
|
||||
<node CREATED="1785804513028" ID="ID_810564608" MODIFIED="1785804939678" TEXT="früher war IO inhärent "sequentiell" (und laaaaangsam)"/>
|
||||
<node CREATED="1785804579094" ID="ID_169491261" MODIFIED="1785804939678" TEXT="klar strukturierte Prozesse — concurrency macht der Kernel"/>
|
||||
</node>
|
||||
<node CREATED="1785804617057" ID="ID_1017583320" MODIFIED="1785804939678" TEXT="die MIT vs. Berkely (oder "New Yersey") - Spaltung">
|
||||
<node CREATED="1785804660938" ID="ID_1005661547" MODIFIED="1785804939678" TEXT=""Worse is Better""/>
|
||||
<node CREATED="1785804666379" ID="ID_1582632" MODIFIED="1785804939678" TEXT="Unix ist klein und leicht zu portieren"/>
|
||||
<node CREATED="1785804699380" ID="ID_1566178029" MODIFIED="1785804939678" TEXT="Komplexität wird zum User verschoben"/>
|
||||
</node>
|
||||
<node CREATED="1785804734992" ID="ID_689668422" MODIFIED="1785804939678" TEXT="direct style vs. continuation-passing">
|
||||
<node CREATED="1785804754814" ID="ID_1857083368" MODIFIED="1785804939678" TEXT="letzteres erfoldert ein Framework oder Sprachunterstützung"/>
|
||||
<node CREATED="1785804771030" ID="ID_942195693" MODIFIED="1785804939678" TEXT="diekt-Style kann man leicht in C schreiben"/>
|
||||
</node>
|
||||
<node CREATED="1785804791625" ID="ID_1260040279" MODIFIED="1785804939678" TEXT="historische Wurzeln">
|
||||
<node CREATED="1785804799556" ID="ID_1705484855" MODIFIED="1785804939678" TEXT="Großrechner">
|
||||
<node CREATED="1785804803735" ID="ID_1712110487" MODIFIED="1785804939678" TEXT="hatten schon in den 60ern echtes Async-processing">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Stichwort: Channel Programs
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1785804820899" ID="ID_1792223474" MODIFIED="1785804939678" TEXT="damals war die Core extrem teuer, und die Peripherie billig"/>
|
||||
</node>
|
||||
<node CREATED="1785804856072" ID="ID_1948328630" MODIFIED="1785804939678" TEXT="Minicomputers">
|
||||
<node CREATED="1785804891691" ID="ID_570139726" MODIFIED="1785804939678" TEXT="DEC und VMS"/>
|
||||
<node CREATED="1785804904554" ID="ID_565305668" MODIFIED="1785804939678" TEXT="AST: Asynchronous System Traps">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
a completion routine the system delivers by interrupting your thread. Results land in an I/O Status Block; you synchronize with event flags. Submit, continue, get called back.
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785805001938" ID="ID_1225715009" MODIFIED="1785805004288" TEXT="Dave Cutler">
|
||||
<node CREATED="1785805005222" ID="ID_1389176244" MODIFIED="1785805009419" TEXT="hat für VMS gearbeitet"/>
|
||||
<node CREATED="1785805009875" ID="ID_1379143061" MODIFIED="1785805024309" TEXT="dann zu Microsoft ⟶ dort NT entwickelt"/>
|
||||
<node CREATED="1785805224198" ID="ID_1190503655" MODIFIED="1785805266125" TEXT="NT hatte ein POSIX-Subsystem, nur für FIPX-151-compliance">
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1190503655" ENDARROW="Default" ENDINCLINATION="89;4;" ID="Arrow_ID_1739832767" SOURCE="ID_1416441454" STARTARROW="None" STARTINCLINATION="72;-2;"/>
|
||||
<node CREATED="1785805270424" ID="ID_1212846076" MODIFIED="1785805325165" TEXT="das war hier ein "Randfall" — und in der Praxis irrelevant">
|
||||
<arrowlink DESTINATION="ID_1748959283" ENDARROW="Default" ENDINCLINATION="212;10;" ID="Arrow_ID_1416167543" STARTARROW="None" STARTINCLINATION="40;148;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785805084727" ID="ID_1061852207" MODIFIED="1785805087933" TEXT="POSIX">
|
||||
<node CREATED="1785805088928" ID="ID_107490748" MODIFIED="1785805102753" TEXT="war lediglich eine Konsolidierung der damaligen Unix-Landschaft"/>
|
||||
<node CREATED="1785805103406" ID="ID_237364056" MODIFIED="1785805119376" TEXT="hat den Ansatz der inter-process-Concurrency festgeschrieben"/>
|
||||
<node CREATED="1785805187779" ID="ID_1416441454" MODIFIED="1785805266125" TEXT="US "FIPS 151" : verlangt POSIX-compliance für Government-Procurment">
|
||||
<arrowlink DESTINATION="ID_1190503655" ENDARROW="Default" ENDINCLINATION="89;4;" ID="Arrow_ID_1739832767" STARTARROW="None" STARTINCLINATION="72;-2;"/>
|
||||
</node>
|
||||
<node CREATED="1785805120184" ID="ID_1504987026" MODIFIED="1785805141196" TEXT="Linux war POSIX-compiliant und konnte damit gar nicht anders sein"/>
|
||||
<node CREATED="1785805149384" ID="ID_1748959283" MODIFIED="1785805325166" TEXT="POSIX ASIO ist als Reandfall gedacht, für "real-time systems"">
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1748959283" ENDARROW="Default" ENDINCLINATION="212;10;" ID="Arrow_ID_1416167543" SOURCE="ID_1212846076" STARTARROW="None" STARTINCLINATION="40;148;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785805358964" ID="ID_1303284509" MODIFIED="1785805366918" TEXT="MIT vs. Berkely">
|
||||
<node CREATED="1785805368992" ID="ID_1532683119" MODIFIED="1785805387092" TEXT="Async-IO ist vor allem ein Interface — MIT-Style">
|
||||
<node CREATED="1785805389503" ID="ID_1066936890" MODIFIED="1785805399454" TEXT="also eine vereinfachende Abstraktion"/>
|
||||
<node CREATED="1785805400390" ID="ID_1446974737" MODIFIED="1785805414664" TEXT="bietet einen einheitlichen Kontrakt mit Korrektheits-Garantie"/>
|
||||
</node>
|
||||
<node CREATED="1785805417964" ID="ID_1034172535" MODIFIED="1785805436167" TEXT="demgegenüber könnte man blocking-IO als »Berkely-style« bezeichnen">
|
||||
<node CREATED="1785805436996" ID="ID_592860998" MODIFIED="1785805441828" TEXT="einfach zu iimplementieren"/>
|
||||
<node CREATED="1785805442576" ID="ID_103267801" MODIFIED="1785805450215" TEXT="Komplexitäten wandern zum User"/>
|
||||
</node>
|
||||
<node CREATED="1785805476292" ID="ID_763961218" MODIFIED="1785805493653" TEXT="inzwischen gibt es einen Mittelweg: abstracted continuations">
|
||||
<node CREATED="1785805498849" ID="ID_1654664703" MODIFIED="1785805536048" TEXT="Erlang, Aktoren, Goroutines, Coroutinen"/>
|
||||
<node CREATED="1785805586557" ID="ID_945535370" MODIFIED="1785805615976" TEXT="»function coloration« leicht gemacht">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
d.h. das Problem mit den <i>coloured functions</i> wird nicht gelöst, aber der Schmerz wird reduziert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785805707014" ID="ID_1430769471" MODIFIED="1785805735016" TEXT="Channel Progams ⟶ IO-Logik">
|
||||
<node CREATED="1785805739128" ID="ID_307384766" MODIFIED="1785805756035" TEXT="auf dem Mainframe laufen die Channel-Programs separat vom Kern"/>
|
||||
<node CREATED="1785805760204" ID="ID_166287783" MODIFIED="1785805767042" TEXT="io_uring und BPF">
|
||||
<node BACKGROUND_COLOR="#f2e1ba" COLOR="#2f2577" CREATED="1785805768996" ID="ID_1807082301" MODIFIED="1785805802984" TEXT="das sind Neuerungen in 2026">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1785805808990" ID="ID_1350573167" MODIFIED="1785805815881" TEXT="zwei verschiedene Entwicklungen">
|
||||
<node CREATED="1785805817007" ID="ID_418215666" MODIFIED="1785805860708" TEXT="cBPF für Sicherheits-Filtering"/>
|
||||
<node CREATED="1785805827846" ID="ID_506178696" LINK="https://lkml.rescloud.iu.edu/2106.0/05620.html" MODIFIED="1785806029205" TEXT="eBPF for event-loop control">
|
||||
<node CREATED="1785806034520" ID="ID_675648051" MODIFIED="1785806047826" TEXT="vermeidet den Kontext-Switch für continuation-chaining"/>
|
||||
<node CREATED="1785806048491" ID="ID_24264743" MODIFIED="1785806066487" TEXT="das eBPF-Programm kann unimittelbar weiteres IO beauftragen"/>
|
||||
<node CREATED="1785806067739" ID="ID_867470885" MODIFIED="1785806079174" TEXT="allerdings: das läuft alles im Kernel (nicht auf einem externen Device)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1785806134178" ID="ID_196718915" MODIFIED="1785806167810" TEXT="»Worse is Better«">
|
||||
<node CREATED="1785806143377" ID="ID_769817813" LINK="https://en.wikipedia.org/wiki/Worse_is_better" MODIFIED="1785806156651" TEXT="Wikipedia"/>
|
||||
<node CREATED="1785806196578" ID="ID_106898826" LINK="https://yosefk.com/blog/what-worse-is-better-vs-the-right-thing-is-really-about.html" MODIFIED="1785806220192" TEXT="Blog: What "Worse is Better vs The Right Thing" is really about">
|
||||
<node CREATED="1785806227700" ID="ID_646833802" MODIFIED="1785806241320" TEXT="argumentiert daß es um »evolutionären Erfolg« geht"/>
|
||||
<node CREATED="1785806242287" ID="ID_1662494576" MODIFIED="1785806257395" TEXT="nicht um besser/schlechter/richtig/falsch"/>
|
||||
</node>
|
||||
<node CREATED="1785806885989" ID="ID_1342407665" MODIFIED="1785806905620" TEXT="Richard Gabriel hat mit sich selber eine »Debatte« geführt">
|
||||
<node CREATED="1785806906727" ID="ID_290906212" MODIFIED="1785806928635" TEXT="sein erster Artikel was als satirische Überzeichnung gedacht"/>
|
||||
<node CREATED="1785806929283" ID="ID_1833959351" MODIFIED="1785807147619">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
nachdem der Artikel so stark eingeschlagen hat,
|
||||
</p>
|
||||
<p>
|
||||
hat er selber, unter einem Pseudonym, eine Replik geschrieben
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1785807193346" ID="ID_977154454" LINK="http://dreamsongs.com/Files/worse-is-worse.pdf" MODIFIED="1785807201901" TEXT=""Worse is Better is Worse""/>
|
||||
</node>
|
||||
<node CREATED="1785807148579" ID="ID_1979393125" LINK="https://dreamsongs.com/Essays.html" MODIFIED="1785807160610" TEXT="Essays von Richard Gabriel">
|
||||
<icon BUILTIN="back"/>
|
||||
<node CREATED="1785807208321" ID="ID_1501711769" MODIFIED="1785807219621" TEXT="beachte: Auseinandersetzung mit Christopher Alexander">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519001955679" ID="ID_65625223" MODIFIED="1779386731937" TEXT="Demo-Inhalte">
|
||||
|
|
|
|||
Loading…
Reference in a new issue