====== Ideen zum Sprachdesign ======
===== Todo =====
* Marker"klassen" (Wurzel, Knoten, Blatt is DOMElement, wobei DOMElement keine Elemente hat, sondern nur Tag/Marker ist)
* Eheklassen (GFXElement contains GFXPosition, GFXOutput): Klassen, die von GFXPosition und GFXOutput erben, müssen erklären, was passiert, wenn der Punkt GFXPosition verändert wird (z.B. GFXOutput zum Neuzeichnen informieren). Auch wenn "GFXPosition is Point" ist, hat dieser Point, der mit GFXOutput kombiniert wird nun zwangsweise Setter, die GFXOutput kennen und eine Funktion aufrufen, die GFXPoint und GFXOutput übergeben bekommen. (vgl. Rules)
* Pointer und Reference als Ref und "optional ref": [[notes:concept:optional]]
* Compilerbaum requests [[notes:concepts:astrequests]]
* "Connect-Klassen": [[notes:concepts:connectclass]]
* "Container-Klassen": [[notes:concepts:container]]
* [[http://de.wikipedia.org/wiki/LINQ|LINQ]]
* [[notes:concecpts:Pipes]]/Tables
* [[http://www.vishalchovatiya.com/cpp20-coroutine-under-the-hood/?fbclid=IwAR2Ytj393o-VIHoYC_M8Zfiz8vP8P8dGpwq7VwaTOh05JJqkGaQ-tBglkyE|Coroutines]]
* Lässt sich die Frage nach dem [[https://de.quora.com/Ich-habe-gelesen-dass-die-Logikfehler-in-der-Programmierung-am-schwersten-zu-beheben-sind-im-Vergleich-zu-Syntax-und-Laufzeitfehlern-K%C3%B6nnen-Sie-mir-ein-Beispiel-daf%C3%BCr-zeigen-wie-schwierig-es-sein|Warum?]] als ein Konzept beschreiben und abprüfen?
* Strategy: Fast oder Safety. Fast erlaubt undefined behaviour, Safety nicht.
====== KI-Anfragen ======
* [[AI:Gemini]]
====== Process ======
Ein Prozess beschreibt den Übergang von Daten in neue Daten.
Die Idee entstand aus XBuild und Strakon. Ein Process beschreibt dann das Kompilieren von .cpp zu .o, dann das linken. In Strakon ist das Laying die Eingabe, BendingRodSet die Darstellung entsteht aus Laying, das Entity das fertige Produkt.
Entsprechend sollte ein Process einen Namensraum beschreiben und dokumentieren, das Klassen überführt werden können.
Ein Process könnte damit eine Art Variant darstellen, der den aktuellen Zustand der Daten repräsentiert.
Token -> Operator -> Generator -> Product -> Container
====== Funktionalität ======
* [[notes:concepts:build|Buildsystem]]
===== Environment =====
* [[notes:Environment:]]
===== Funktionen =====
[[notes:func:start|Funktionsdefinition]]
^ Implementiert ^ Beschreibung ^ siehe auch ^
|✗| [[notes:func:Declaration]] | |
|✗| [[notes:func:precall]] | |
|✗| [[notes:func:autofunc]] | (Mini-Templates, Textabkürzungen) |
|✗| [[notes:func:factory]] | Produziert etwas, ändert aber nicht den Programmauflauf |
|✗| [[notes:func:interfacefac]] | Interface als Factory |
|✗| [[notes:func:enhance]] | Erweitere Funktionalität von Objekten |
|✗| [[notes:func:fix]] | Konditional - abschaltbar |
|✗| [[notes:func:infix]] | Infix-Operatoren selbst gestalten |
|✗| [[notes:func:xmlconstruct]] | XML-Notation für Konstruktoren |
|✗| [[notes:func:unimplemented]] | null-Rückgabewert für nicht implementierte Funktionen |
|✗| [[notes:func:inline]] | Code, der inline verarbeitet wird |
|✗| [[notes:func:guard]] | guard für Funktionen, die per fail verlassen wurden |
|✗| [[notes:func:assert]] | Annahme, die zur Laufzeit geprüft wird |
|✗| [[notes:func:move]] | move-Konstruction |
|✗| [[notes:func:lazy]] | lazy parameter |
|✗| [[notes:func:forward]] | forward parameter |
|✗| [[notes:func:adapter]] | adapter/workflow-Funktionen |
|✗| [[notes:func:fail]] | workflow als failabfrage |
|✗| [[notes:func:workflow]] | workflow als failabfrage |
|✗| [[notes:func:template]] | template-Funktionen |
|✗| [[notes:func:use]] | anonyme Funktion (use x, y {})|
|✗| [[notes:func:comfort]] | point() comforts Point( this ); |
|✗| [[notes:func:debug]] | Debug-Parameter |
|✗| [[notes:func:caller]] | caller - Spezialisierung aufgrund des callers |
|✗| [[notes:func:connotation ]] | connotation - Seiteneffekte |
===== Operatoren =====
^ Implementiert ^ Beschreibung ^ siehe auch ^
|✓| [[notes:op:env]] | path = $(PATH); |
|✗| [[notes:op:power]] | A = Pi * r**2 |
|✗| [[notes:op:inequality]] | a <> b |
|✗| [[notes:op:condition]] | a => b; a => b ! c |
|✗| [[notes:op:stringformat]] | "Hello %s" % "World" |
|✗| [[notes:op:value]] | dp is double ptr; dp# : 3.1415 |
|✗| [[notes:op:split]] | "1,2,3" / "," => [&"1,2,3",&"2,3",&"3"] |
|✗| [[notes:op:or]] | var1 or var2 |
|✗| [[notes:op:construct]] | construct winbmp { .. } |
|✗| [[notes:op:prefix]] | +(1,2,3) |
|✗| [[notes:op:guard]] | guard func(); |
|✗| [[notes:op:include]] | include "file"; |
|✗| [[notes:op:require]] | require de.xsd.bitmap; |
|✗| [[notes:op:is]] | val is int |
|✗| [[notes:op:eq]] | add is code( a = 1, b = lastresult() ) |
|✗| [[notes:op:to]] | castings |
|✗| [[notes:op:as]] | castings |
|✗| [[notes:op:from]] | castings |
|✗| [[notes:op:definition]] | Identifier definitions |
|✗| [[notes:op:iterable]] | iterable |
|✗| [[notes:op:arrow]] | -> |
|✓✓✗| [[notes:op:do]]| 5..8 do print value; |
|✗| [[notes:op:matrix]]| 2d if; |
|✗| [[notes:op:react]]| 5..8 react print value; |
|✗| [[notes:op:switch]]| |
|✗| [[notes:op:autoref]]| |
|✗| [[notes:neuro:net]]| Neuronale Netzwerke |
|✗| [[notes:op:par]]| Appendix-Parallel-Operator |
|✗| [[]]| Arithmethisches Mittel (aus Liste) |
|✗| [[]]| Liste sortieren |
|✗| [[]]| Duplikate entfernen |
|✗| [[notes:op:set]]| Mengen- und -operationen (map, filter, reduce) |
|✗| [[notes:op:if]]| if |
Klammerung:
^ Implementiert ^ Beschreibung ^ siehe auch ^
|✗| [[notes:braces:while]]| I: :I |
Sollten Operatoren verbunden werden können, so dass * das gegenteil von / ist und ein neutrales Element 1 haben? - ist das Gegenteil von +, Neutral ist 0. New ist das gegenteil von Delete, nullptr neutral?
===== Speichermanagement =====
===== Schnittstellen =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:interface:interface|interface]] | |
| ✗ | [[notes:interface:scope|scope]] | |
| ✗ | [[notes:interface:set|set bei Funktionen]] | |
===== Datentypen / Klassen =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:class:sets|Sets]] | set is int[] unique|
| ✗ | [[notes:class:array|array classes]] | listet classes |
| ✗ | [[notes:class:construct|construct as]] | new Rectangle( SourcePoint sp, TargetPoint tp ) { sp.x = x+offset; sp.y = y+offset; } |
| ✗ | [[notes:class:view|view]] | view( source ) |
| ✗ | [[notes:class:override]] | overrides bei Mehrfachvererbung |
| ✗ | [[notes:type:init|autoinit]] | i $: new int(5); |
| ✗ | [[notes:type:logical|logical]] | ehemals inquiry (true, false, null, unknown/empty) |
| ✗ | [[notes:type:teapot|Teapot]] | t is teapot; |
| ✗ | [[notes:type:test|test]] | t is test; |
| ✗ | [[notes:type:reflection]] | r is reflection; |
| ✗ | [[notes:type:io]] | file is io( "json://test.c" ); |
| ✗ | [[notes:type:element]] | html is element("html") |
| ✗ | [[notes:type:subarrays]] | print "Hallo Welt"[ 6..11 ] |
| ✗ | [[notes:class:typelist]] | construct( parameters of( char const *, string )[] |
| ✗ | [[notes:type:identifier]] | id is identifier : "main"; |
| ✗ | [[notes:type:abstract]] | id is abstract int; |
| ✗ | [[notes:type:StructOfArrays]] | |
| ✗ | [[notes:type:state|state]] | state a.size > 2; |
| ✗ | [[notes:type:validate|validate/guarantee]] | |
| ✗ | [[notes:type:implements|implements]] | |
| ✗ | [[notes:type:setup|Aufbau einer Klasse]] | |
| ✗ | [[notes:type:enum|Enumerations]] | |
| ✗ | [[notes:type:configurable|configurable]] | |
| ✗ | [[notes:type:profile]] | |
| ✗ | [[notes:type:mutable inheritance]] | Person contains mutable Age |
| ✗ | [[notes:type:absrel]]| a is int abs; |
| ✗ | [[notes:type:property]]| a is int property( getInt, setInt ); |
| ✗ | [[notes:type:persistant]]| a is int persistant( system.homepath/".mysoftware-config" ); |
| ✗ | [[notes:type:persist]]| return persist Value(1);
| ✗ | [[notes:type:feature (doc)]]| feature |
| ✗ | [[notes:type:documentation]]| document / see |
| ✗ | [[notes:type:entail]]| entail |
| ✗ | [[notes:type:type templates]]| Vector( v1 is id = "x", v2 is id = "y" );
Offsets is Vector( offset1, offset2 ); |
| ✗ | [[notes:type:stringchecker]]| stringchecker |
===== Attribute =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:attr:attribute]] | Direction is valid |
| ✗ | [[notes:attr:uninitialized|uninitialized]] | hund is uninitialized Hund |
| ✗ | [[notes:attr:replaces]] | MyString replaces string |
| ✗ | [[notes:attr:constrains]] | add is code( a, b ) noheap |
| ✗ | abstract, [[notes:attr:deprecated]] | foo is deprecated code |
===== Generics / Templates =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:generic:for|for]] | toString is code for Point3d |
===== Mitzuliefernde Funktionalität / Standard-Lib =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:context:context|context]] | Kontexte |
| ✗ | [[notes:context:cloud|cloud]] | cloud |
| ✗ | [[notes:context:list|list]] | Listen |
===== Parsen =====
===== Dokumentation =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:doc:warning|warning]] | Warnungen |
| ✗ | [[notes:doc:sic]] | sic |
| ✗ | [[notes:doc:section]] | section Preparation {} |
| ✗ | [[notes:doc:remark]] | remark |
===== Genesys as Service/Shared Object =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:so:inject|inject]] | external Functions and Values |
===== Ini-File =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:ini:forbid]] | Warnungen |
===== Test =====
^ Implementiert ^ Beschreibung ^ Stichwörter ^
| ✗ | [[notes:test:record]] | record and replay |
===== Codegenerierung =====
| ✗ | [[notes:gen:emit]] | (Codegenerierung) |
| ✗ | [[notes:gen:make|make]] | makefiles |
===== Lib =====
* [[lib:angle]]
===== Connect =====
* [[notes:gcon:why]]
* [[notes:cmd:start|Kommandos]]
===== Links zu möglichen Features =====
* [[idea:GenesysFS]]
* [[http://msdn.microsoft.com/de-de/library/ms173224(v=vs.80).aspx]]