Wozu braucht man Reflection?
-
Kellerautomat schrieb:
ja und... schrieb:
Kellerautomat schrieb:
Ich denke, dass Compiletime Reflection viel wichtiger ist als Runtime Reflection. Damit kann ich mir naemlich memberweise Vergleichsoperatoren oder Serialisierungsroutinen automatisch generieren lassen. Oder wie waere es mit einer GUI-View, die fuer meine Klasse generiert wird.
Geht alles mit Runtime Reflection.
Jau, ganz toll. Dann fragst du jedes einzelne Objekt, wie es aufgebaut ist, oder wie?
Da braucht man schon nen Quantencomputer um so ne GUI aufzubauen.
-
reflection is slow as fuck
-
english guest schrieb:
reflection is slow as fuck
like Java
-
Reflection setzt man ja auch nicht in performancekritischem Code ein...
-
Eisflamme schrieb:
Reflection setzt man ja auch nicht in performancekritischem Code ein...
like Java
-
Das einzige was ich ueber Compiletime Reflection hier gelernt habe, ist der Post von Shade, wo es gleichgesetzt wird mit Compiletime Metaprogramming. Wenn dem so ist, warum wird dann hier so ein Fass aufgemacht? Ist dem so?
@Kellerautomat: Nun, ich kenne Scala nicht, aber dafuer Scheme sehr gut, insbesondere das Makrosystem. Damit damit kann ich zur Kompilezeit und Laufzeit Code generieren. Meinst du sowas?
-
Ich würde mir das Template-System von C++ kombiniert mit dem Code-Generator von D wünschen. Wo passive Code-Generierung (aka. templates) hilft, finde ich templates ja gut, aber wo man mit templates auf Compile-Time-Rekursionen ausweichen muss, gehen sie mir streckenweise doch sehr stark auf den Sack.
Geil finde ich auch die Jungens, die eine variable Liste von Template-Parametern so in Typ-Listen und MPL-Compile-Time-Suche aufdröseln, dass man die Paramater in beliebiger Reihenfolge angeben kann. Keine Sau braucht sowas, aber die Compiler und unbedarften Programmierer schwitzen über Jahrzehnte an diesen Konstrukten... Einfach lächerlich...
Keine Ahnung, was das jetzt mit dem Thema zu tun hat, aber bei Templates gehts mit mir immer los.
-
C++ Template Metaprogrammierung hat nur bedingt was mit Compiletime Reflection zu tun. Type Traits gehoeren natuerlich dazu, aber die sind dann Compiler-generiert, bzw. werden durch constexpr Funktionen ersetzt. Es gab mal ein Proposal, das in die richtige Richtung geht: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1471.pdf
Man kann Code zur Compilezeit ausfuehren (aka constexpr) und Code injecten (fehlt noch). Zudem kann man identifier zusammenbauen wie Strings.
-
D-teilweise-Gutfinder schrieb:
Geil finde ich auch die Jungens, die eine variable Liste von Template-Parametern so in Typ-Listen und MPL-Compile-Time-Suche aufdröseln, dass man die Paramater in beliebiger Reihenfolge angeben kann. Keine Sau braucht sowas, aber die Compiler und unbedarften Programmierer schwitzen über Jahrzehnte an diesen Konstrukten... Einfach lächerlich...
Natürlich, das ist dermaßen unwichtig, dass das Sprachmittel dazu zu einem der der größten neuen Features von C++11 wurde...;)
-
Kellerautomat schrieb:
C++ Template Metaprogrammierung hat nur bedingt was mit Compiletime Reflection zu tun. Type Traits gehoeren natuerlich dazu, aber die sind dann Compiler-generiert, bzw. werden durch constexpr Funktionen ersetzt. Es gab mal ein Proposal, das in die richtige Richtung geht: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1471.pdf
Man kann Code zur Compilezeit ausfuehren (aka constexpr) und Code injecten (fehlt noch). Zudem kann man identifier zusammenbauen wie Strings.Ich muss wohl zu blöd sein um dem sinn zu erkennen. Jeden Punkt wird mit C++14 abbildbar werden. Was heute fehlt ist die C++ Templatelib für Reflection.
Ich bin pessimistisch. Ein Vorschlag aus dem Jahre 2003, der nicht als Proposalreport niedergeschrieben ist und außerdem noch von eine Nicht-Compilerfraktion stammt.
-
dot schrieb:
D-teilweise-Gutfinder schrieb:
Geil finde ich auch die Jungens, die eine variable Liste von Template-Parametern so in Typ-Listen und MPL-Compile-Time-Suche aufdröseln, dass man die Paramater in beliebiger Reihenfolge angeben kann. Keine Sau braucht sowas, aber die Compiler und unbedarften Programmierer schwitzen über Jahrzehnte an diesen Konstrukten... Einfach lächerlich...
Natürlich, das ist dermaßen unwichtig, dass das Sprachmittel dazu zu einem der der größten neuen Features von C++11 wurde...;)
Ich habe nichts gegen Variadics gesagt, die man für vernünftige Code-Generatoren nunmal braucht, wenn man eben nur templates zur Hand hat, statt einer vernünftigen Code-Generier-Sprache.
Mit Typ-Listen meinte ich überhaupt nichts in die Richtung Variadics, sondern soetwas wie boost::mpl::vector und darin dann nach Typ-Argumenten mit boost::mpl::find_first oder sowetwas fischen, nur damit man die Sachen in einer beliebigen Reihenfolge angeben kann.
-
Man kann Code zur Compilezeit ausfuehren (aka constexpr) und Code injecten (fehlt noch). Zudem kann man identifier zusammenbauen wie Strings
Also ein Makrosystem wie in Lisp oder Scheme ...