Wieso ist wxWidgets eigentlich "hässlich"?



  • Hallo!!!
    ich habe da mal eine frage: alle sagen immer, wxwidgets hat kein modernes C++, aber was genau ist denn so hässlich? Ich meine, vererbungs-hierachie, objektorientiert, ist doch alles dran?! gut, templates und namespaces net, aber wo braucht man die?!
    stören die makros? was ist da so "hässlich"?


  • Mod

    Schau dir einfach wxArray an, das ist einfach hässlich.
    wxWidgets hat den Punkt verpasst, seine eigene Api der Zeit anzupassen.
    Schau dir boost und andere Libs an, welche neue Technologien etc. nutzen.

    wxWidgets hat bis heute keine wirklichen Nutzen von Templates gemacht, ist voll von Altlasten (wie z.B. wxArray), und ist eigentlich nur für die GUI gut.
    Ich nutze selber häufig wxWidgets, aber nur für die GUI, und da kann man sagen, das sie das ganz ok gelöst haben. Aber, sie haben versäumt, die Library auf den aktuellen Stand in C++ zu bringen, wx3.0 war ein hochfliegender Plan, STL Integration etc., wirklich ist davon aber nicht viel umgesetzt worden.

    wxWidgets nutzt einfach C++ in einem Weg, wie wir es heute nicht mehr tun.
    Und auch das Fehlen von Namespaces sehe ich kritisch, eigentlich ist auch das heute Standard.

    phlox



  • Das verstehe ich an den Frameworks sowieso nicht... wieso CString, wxString, wxList, wenn die STL das alles hochperformant schon bietet? 🙄

    Zugegeben, es ist allerdings auch nicht leicht, den Low-Level-C-Code mit Makros und dem Mist in modernes OOP/Template-C++ zu fassen.



  • Die meisten Frameworks sind zu der Zeit vor dem Standard entstanden. Damals war die STL noch nicht immer Bestandteil der meisten Compiler. Aus Kompatibilitätsgründen hat man dann eigene Klassen entwickelt.
    So hat es mir letztens jemand von Qt erklärt (bei einem Lehrgang) und es klang plausibel.
    Später wollte man dann nicht mehr alles umschmeissen.



  • Ad aCTa schrieb:

    Das verstehe ich an den Frameworks sowieso nicht... wieso CString, wxString, wxList, wenn die STL das alles hochperformant schon bietet? 🙄

    Zugegeben, es ist allerdings auch nicht leicht, den Low-Level-C-Code mit Makros und dem Mist in modernes OOP/Template-C++ zu fassen.

    Kuck dir mal von Qt den QString an und dann kuckst du dir mal den STL string an. Der QString _deutlich_ mehr Methoden.



  • blub² schrieb:

    Ad aCTa schrieb:

    Das verstehe ich an den Frameworks sowieso nicht... wieso CString, wxString, wxList, wenn die STL das alles hochperformant schon bietet? 🙄

    Zugegeben, es ist allerdings auch nicht leicht, den Low-Level-C-Code mit Makros und dem Mist in modernes OOP/Template-C++ zu fassen.

    Kuck dir mal von Qt den QString an und dann kuckst du dir mal den STL string an. Der QString _deutlich_ mehr Methoden.

    Was heißt das? Das QString besser als std::basic_string ist??? Wohl kaum ein Argument. Ganz im Gegenteil! Man könnte viele Methoden als freie Funktionen implementieren.



  • Bulli schrieb:

    blub² schrieb:

    Ad aCTa schrieb:

    Das verstehe ich an den Frameworks sowieso nicht... wieso CString, wxString, wxList, wenn die STL das alles hochperformant schon bietet? 🙄

    Zugegeben, es ist allerdings auch nicht leicht, den Low-Level-C-Code mit Makros und dem Mist in modernes OOP/Template-C++ zu fassen.

    Kuck dir mal von Qt den QString an und dann kuckst du dir mal den STL string an. Der QString _deutlich_ mehr Methoden.

    Was heißt das? Das QString besser als std::basic_string ist??? Wohl kaum ein Argument. Ganz im Gegenteil! Man könnte viele Methoden als freie Funktionen implementieren.

    Ich habe nicht behauptet das sie besser sind, nur dass sie deutlich mehr Methoden implementieren.
    Für solche Framworks wie Qt braucht man eben eine erweiterte Funktionalität, z.B. implementiert der QString eine Methode in der Art von strtok(). Diesen als freie Funktion statt als Methode zu implementieren halte ich für problematisch, der Rechenaufwand und der Codeaufwand sollte deutlich größer sein. Außerdem ist man dann nichtmehr Objektorientiert.


  • Mod

    Also so toll ist std::string nun wirklich nicht.
    Q/wx/CString haben schon ihre Berechtigung, alleine sollte man sich doch fragen wieso es so etwas wie boost::stringalgo gibt, die STL hat sicher ihre Vorteile, aber std::basic_string ist sicher nur das notwendigste, was man für einen String braucht.
    In C++0x wurde ja nicht umsonst genau dies überarbeitet, um auch UTF8,16,32 unterstützen zu können.



  • Die Standardbibliothek bietet eben nur das allernötigste und besonders schnell ist die auch nicht (zumindest mit VC++). Ganz zu schweigen von der schrecklichen Formatierung, Benennung und der komplett fehlenden Kommentierung.


Anmelden zum Antworten