Der Sinn von Attributen in Programmiersprachen ist eigentlich der, dass der Compiler schon zur Compilezeit Methoden zusammenstückeln kann (mache etwas für alle Felder mit Atribut X, ...). Dadurch kann man dann eine Menge Schreibarbeit und Checks zur Laufzeit sparen. So wie das von Embarcadero aber implementiert ist, sind das aber nur Konstanten/Variablen, die etwas "anders" sind.
Dafür sind wie wenigstens Attribute gedacht.
Für ORMs sind die Dinger soweit ich sehe unbrauchbar, da die ganzen Checks für die Attribute zur Laufzeit geschehen. Das macht das ganze dann deutlich langsamer, als wenn man das gleich richtig ausprogrammiert. Die Attribute sparen so nur in eher exotischen Fällen ein wenig Schreibarbeit (auf Kosten der Geschwindigkeit).
Quatsch. Genau für sowas sind Attribute da. Attribute sollen auf Typen Meta-Informationen bereitstellen die dann später dynamisch zur Laufzeit ausgewertet können - und zwar ohne jeden Typen explizit imstanziieren zu müssen. Die alte Methode wäre, ein Flagging Interface zu verwenden (reine Attributpräsenz auf einer Klasse) und wenn man zusätzliche Informationen über Members bräuchte müsste man eine Instanz erzeugen und über die Methoden / Properties des Interfaces (die man jedes mal implementieren müsste) diese Informationen abzufragen.
Der Zugriff auf Attribute ist auch nicht wirklich langsam. Klar muss die runtime ein wenig suchen und laden, aber das macht man ja nicht permanent sondern genau ein einziges mal und cached die Informationen wenn man sie später nochmal braucht in Memory. Und zwar dort, wo sie gebraucht werden.
Die Syntax ist auch eher fragwürdig. Wenn man sich mit Delphi auskennt würde man eigentlich erwarten, dass sich das Attribut in deinem Beispiel (wie bei Interface-GUIDs) auf class bezieht.
Nein? Die Syntax ist genau so wie man sie von Java und .NET-Sprachen seit Jahren kennt. Attribut über das zu annotierende Element, in eckigen Klammern. That's it. Keine Magic.
Der Hauptnutzen von Attributen ist wohl (für Embarcadero) der, dass man damit Konstrukte in die Sprache bekommt, die dann mit anderen Compilern nicht mehr gehen (Vendor lock-in). Technisch sind die Attribute so wie sie jetzt sind eher nicht sinnvoll.
Entweder hast Du den Sinn und Nutzen von Attributen an sich wirklich nicht verstanden, oder Du willst nur Trollen. Nach diesem letzten Absatz würde ich tatsächlich eher auf letzteres schliessen.
Alle anderen modernen typisierten Sprachen haben Attribute um es den Entwicklern zu erlauben eigene Meta-Informationen auf Typen und Member zu legen. Um damit dynamisch Dinge zu bauen die ohne solche Informationen nicht möglich wären. Ein Vendor Lock-In ist bei Delphi im übrigen gar nicht möglich. Delphi ist keine Standardisierte Sprache und reines Pascal ist das schon lange nicht mehr. Delphi an sich ist ein einziger Vendor-Lock-In. Und FreePascal als einzige einigermaßen kompatible Alternative sieht auch schon länger Attribute vor (auch wenn sie noch nicht fertig implementiert sind, oder sind die inzwischen schon drin? Mein Stand hier ist ein halbes Jahr alt).