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)
  • Lässt sich die Frage nach dem Warum? als ein Konzept beschreiben und abprüfen?
  • Strategy: Fast oder Safety. Fast erlaubt undefined behaviour, Safety nicht.

KI-Anfragen

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

Environment

Funktionen

Funktionsdefinition

Implementiert Beschreibung siehe auch
✗ Declaration
✗ precall
✗ autofunc (Mini-Templates, Textabkürzungen)
✗ factory Produziert etwas, ändert aber nicht den Programmauflauf
✗ interfacefac Interface als Factory
✗ enhance Erweitere Funktionalität von Objekten
✗ fix Konditional - abschaltbar
✗ infix Infix-Operatoren selbst gestalten
✗ xmlconstruct XML-Notation für Konstruktoren
✗ unimplemented null-Rückgabewert für nicht implementierte Funktionen
✗ inline Code, der inline verarbeitet wird
✗ guard guard für Funktionen, die per fail verlassen wurden
✗ assert Annahme, die zur Laufzeit geprüft wird
✗ move move-Konstruction
✗ lazy lazy parameter
✗ forward forward parameter
✗ adapter adapter/workflow-Funktionen
✗ fail workflow als failabfrage
✗ workflow workflow als failabfrage
✗ template template-Funktionen
✗ use anonyme Funktion (use x, y {})
✗ comfort point() comforts Point( this );
✗ debug Debug-Parameter
✗ caller caller - Spezialisierung aufgrund des callers
✗ connotation connotation - Seiteneffekte

Operatoren

Implementiert Beschreibung siehe auch
✓ env path = $(PATH);
✗ power A = Pi * r**2
✗ inequality a <> b
✗ condition a ⇒ b; a ⇒ b ! c
✗ stringformat „Hello %s“ % „World“
✗ value dp is double ptr; dp# : 3.1415
✗ split „1,2,3“ / „,“ ⇒ [&„1,2,3“,&„2,3“,&„3“]
✗ or var1 or var2
✗ construct construct winbmp { .. }
✗ prefix +(1,2,3)
✗ guard guard func();
✗ include include „file“;
✗ require require de.xsd.bitmap;
✗ is val is int
✗ eq add is code( a = 1, b = lastresult() )
✗ to castings
✗ as castings
✗ from castings
✗ definition Identifier definitions
✗ iterable iterable
✗ arrow →
✓✓✗ do 5..8 do print value;
✗ matrix 2d if;
✗ react 5..8 react print value;
✗ switch
✗ autoref
✗ net Neuronale Netzwerke
✗ par Appendix-Parallel-Operator
✗ notes Arithmethisches Mittel (aus Liste)
✗ notes Liste sortieren
✗ notes Duplikate entfernen
✗ set Mengen- und -operationen (map, filter, reduce)
✗ if if

Klammerung:

Implementiert Beschreibung siehe auch
✗ 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
✗ interface
✗ scope
✗ set bei Funktionen

Datentypen / Klassen

Implementiert Beschreibung Stichwörter
✗ Sets set is int[] unique
✗ array classes listet classes
✗ construct as new Rectangle( SourcePoint sp, TargetPoint tp ) { sp.x = x+offset; sp.y = y+offset; }
✗ view view( source )
✗ override overrides bei Mehrfachvererbung
✗ autoinit i $: new int(5);
✗ logical ehemals inquiry (true, false, null, unknown/empty)
✗ Teapot t is teapot;
✗ test t is test;
✗ reflection r is reflection;
✗ io file is io( "json://test.c" );
✗ element html is element("html")
✗ subarrays print "Hallo Welt"[ 6..11 ]
✗ typelist construct( parameters of( char const *, string )[]
✗ identifier id is identifier : "main";
✗ abstract id is abstract int;
✗ StructOfArrays
✗ state state a.size > 2;
✗ validate/guarantee
✗ implements
✗ Aufbau einer Klasse
✗ Enumerations
✗ configurable
✗ profile
✗ mutable inheritance Person contains mutable Age
✗ absrel a is int abs;
✗ property a is int property( getInt, setInt );
✗ persistant a is int persistant( system.homepath/".mysoftware-config" );
✗ persist
✗ feature (doc) feature
✗ documentation document / see<nowiki> | | <html><font color=darkred>&#10007</font></html> | [[notes:type:entail]]| <nowiki>entail
✗ type templates Vector( v1 is id = "x", v2 is id = "y" ); Offsets is Vector( offset1, offset2 );
✗ stringchecker stringchecker

Attribute

Implementiert Beschreibung Stichwörter
✗ attribute Direction is valid
✗ uninitialized hund is uninitialized Hund
✗ replaces MyString replaces string
✗ constrains add is code( a, b ) noheap
✗ abstract, deprecated foo is deprecated code

Generics / Templates

Implementiert Beschreibung Stichwörter
✗ for toString is code for Point3d

Mitzuliefernde Funktionalität / Standard-Lib

Implementiert Beschreibung Stichwörter
✗ context Kontexte
✗ cloud cloud
✗ list Listen

Parsen

Dokumentation

Implementiert Beschreibung Stichwörter
✗ warning Warnungen
✗ sic sic
✗ section section Preparation {}
✗ remark remark

Genesys as Service/Shared Object

Implementiert Beschreibung Stichwörter
✗ inject external Functions and Values

Ini-File

Implementiert Beschreibung Stichwörter
✗ forbid Warnungen

Test

Implementiert Beschreibung Stichwörter
✗ record record and replay

Codegenerierung

✗ emit (Codegenerierung)
✗ make makefiles

Lib

Connect

for y in 20{23..26}
do
 echo “$y - AI will change everything”
done

 => 

2000+{23..26} do         // hier ist eine Range in einer Expression drin
  puts "$value$ - AI will change everything";