Write causality driven, asymmetric non-linear, scalable, topological, data abstracted and evolving software.
means your software is built on the well-known thinking of cause and effect.
means your software is not forced into sequence by functional thinking.
Unlike numerical simulations it is also not forced into symmetric iterative execution. Still diverse and even fractal processing symmetry is possible by defining the meaning of systems time. Still there might be meaningful systems not requiring a symmetric meaning of time.
means your software will utilize given processing environment as allowed by configuration and inner relations.
means your software consists of elements related and configured as described in loaded topology graph.
Topology is created using the dot language also used by Graphviz.
means your algorithms does not know and do not care if given data is persisted and what technology is behind.
However, data needs to be MessagePack serializable for getting persisted when configured.
means your software might adapt it's topology to its environment and evolving needs.
Initial topology is like a seed.
The german word "Wirklichkeit" describes the sum of all happening. Unlike "Reality", which describes the sum of all being, it is not about the what but about the how, not about objects but about causing effects.
The german word "Wirkung" describes how cause set in context leads to effect. It not only depends on the mechanism but also it's circumstances.
Unlike the english "Action" it is very specific to this meaning.
"Wirks" is a word introduced by the physicist Hans-Peter Dürr. It points out that "Wirklichkeit" could be described as an interacting set of virtual entities.
„Wirklichkeit ist ein Zusammenspiel von ‚Wirks‘“
My translation: "Wirklichkeit" is interaction of "Wirks"
The Causal Runtime is my interpretation of this definition in context of the observations of complex systems available to me.
A discrete piece of data stored into memory is called an "Aspect". The thing about aspects is, they are managed by a ref counting borrowing pattern.
A borrowing pattern means, before you can access the memory you have to lock it to a scope. This borrow pattern ensures there are no concurrent mutable accesses to protected memory. However immutable accesses can be concurrent.
This memory protection is realized by a so called "Essence". It manages its atomic lock state.
An "Essence" can be referenced by multiple ref tracking/counting "References".
A "Tick" is a procedure taking in/out parameters triggering consecutive Ticks. An "Act" is a "Tick" set into an execution context.
A "Wirks" is a meaningful set of Ticks and their contextual requirements.
Discrete algorithm's execution order is given by "Branches". Branches are thread safe.
Processes/Ticks "Branch"(es). "Dispatcher" are thread safe.
Each "Aspect" can relate to other "Aspect"s through so called "Facet"s. A facet defines how an "Aspect" can interact. While relational information could also be stored at runtime just in the happening "Wirkung" a topology should always rely on properly defined "Facet"s except you have very certain intentions beyond.
„Wie kann ich das Netz haben, ohne die Knoten des Netzes einzeln zu knüpfen?"
My translation: How can I get a net, without individually knotting each single knot?