Zu deiner Sprache:
In einem anderen Thema wurde mal Rust angesprochen, da es dort nicht möglich ist, auf
NullPointer-/
NullReferenceExceptions/... zu stoßen, da es
null in dieser Sprache nicht gibt. Ich will dir nicht vorschlagen, dieses Konzept genau so in deine Sprache zu übernehmen, allerdings wäre es evtl. ganz interessant, wenn standardmäßig einer Variable keine
null-Werte zugewiesen werden könnne (und kein
null durch Funktionen/Methoden zurückgegeben werden können), man aber explizit angeben kann, dass eine Variable "nullable" ist (bzw. dass eine Funktion bzw. eine Methode potenziell
null zurückgeben kann). Im .NET Framework gibt es
Nullable<T>, womit
null an Stelle von Wertetypen möglich wird. (Die Syntax ist dabei bspw.
private int? myMember;.)
Ich finde ein solches Konzept durchaus überlegenswert, nur kommt es auf das verwendete Typsystem an, ob es sich sinnvoll umsetzen lässt und dann auch brauchbar ist.
Bezüglich der Attribute kannst du dich evtl. auch an den Annotationen in anderen Klassen orientieren. In Java notiert man vor einer Klasse/einem Member mit einem @ vorangestellt (
@Annotation) und in C# von eckigen Klammern eingeschlossen (
[Annitation]). In Java und C# werden für solche im Hintergrund Klassen verwendet, allerdings kann das eigene System in der Hinsicht evtl. auch ein wenig anders ausgelegt werden. (Wenn man sich die Propertys in Python ansieht, sieht man auch 2 Möglichkeiten, wobei bei einer auch eine Java-artige Syntax verwendet wird, aber dennoch im Hintergrund wohl keine Klassen vorhanden sein müssen.)