Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Boost vs. QT  
Gehen Sie zu Seite 1, 2, 3, 4, 5, 6  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Eisflamme
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 1734
Beitrag Eisflamme Mitglied 01:20:29 09.09.2010   Titel:   Boost vs. QT            Zitieren

Hey,

Falls es den Thread schon gibt, tut es mir Leid, ich habe via Google naemlich gesucht, aber nicht gefunden.

Was mich heute interessiert, ist, ob Boost oder QT unterschiedlich sind. Ich habe gerade Boost kennen gelernt und bin begeistert und lese mir jeden Tag einiges davon durch.

Jetzt meinte ein Kollege, QT sei vieeeeeel besser, da einfacher zu bedienen. Er hat mir dann ein paar SQL-Klassen und Socketklassen gezeigt und meinte, wie einfach das sei... habe das an den Beispielen zwar nicht gesehen, weil die mit UI vermischt waren, aber gut. Und auch wenn es einfacher ist, ist das fuer mich selten ein Argument, weil einfache Bedienung immer irgendwo Nachteile hat :P Jedenfalls oft, aber ich bin kein Experte.

QT bietet natuerlich plattformunabhaengige GUIs an, was sehr schoen ist.

Nach kurzer Recherche im Internet habe ich nur wenig gefunden, allerdings u.a. einige, die QT und Boost gemischt einsetzen, was wohl heisst, dass QT fuer Oberflaechen und Boost fuer die Logik verwendet wird.

Wieso wuerden diese Leute nicht nur QT benutzen? Es scheint ja noch etwas umfangreicher zu sein und XML-Parser zu haben etc., aber auch da bin ich nicht ganz sicher.

Da ich davon ausgehe, dass es hier einige gute Programmierer gibt und QT wegen der "einfachen Bedienung" sicher auch von vielen benutzt wird, die C++ Templates nicht so verstehen (das ist jetzt eine sehr provokative Unterstellung und korrigiert mich, wenn ich falsch liege, aber das kam bei den wenigen Googlediskussionen imo etwas raus), wende ich mich lieber vertrauensvoll an dieses Forum hier.

Also, was denkt ihr dazu?

Vielen Dank im Voraus!


Zuletzt bearbeitet von Eisflamme am 01:31:56 09.09.2010, insgesamt 1-mal bearbeitet
l'abra d'or
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 1201
Beitrag l'abra d'or Mitglied 06:56:49 09.09.2010   Titel:              Zitieren

Ich würde Qt nur dann einsetzen, wenn ich auch die Gui brauch, und diese nur mit Qt bereitstellen will. Wenn für die Gui kein Framework festgelegt werden soll, würde ich auch kein Qt einsetzen. Brauch ich überhaupt keine Gui, dann sowieso alles ohne Qt.
Qt ist schön und ich mag es sehr, nur ist es für eine reine Konsolenanwendung (oder einen Daemon) viel zu viel zusätzlicher Ballast. Neben dem dass Qt in den meisten Distributionen auch gleich X installiert und das noch mehr unnötigen Mist (aus Sicht des Rechner-Admins) mit anzieht, ist die Lizenz restriktiver als bei boost.
asc
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.01.2007
Beiträge: 5048
Beitrag asc Mitglied 07:05:31 09.09.2010   Titel:              Zitieren

Eisflamme schrieb:
Was mich heute interessiert, ist, ob Boost oder QT unterschiedlich sind.


QT und Boost haben nur eine Teilüberschneidung. QT ist ein Framework was versucht alles abzubilden (von DB-Zugriffen bis Oberflächenprogrammierung), Boost ist eine Bibliothekssammlung die eher auf der Denkweise der STL, und bei weiten nicht versucht alles abzubilden.

Ich ziehe STL und Boost für die Programmlogik vor, und umfangreichere Frameworks für die Reine Datenbank- und UI-Schicht.

Gerade wenn ein Projekt Jahre oder Jahrzehnte gepflegt wird (wie die letzten beiden an denen ich gearbeitet habe), ist es zumindest in meinen Augen sinnvoll, sich nicht zu viele Abhängigkeiten zu riesigen Frameworks zu holen (Ich habe schon mehrere Frameworks sterben sehen, und Firmen die mit aller Gewalt an diesen, schon seit vielen Jahren nicht mehr unterstützten Frameworks hangen, und mit jeder OS-Generation mehr Ärger bekommen haben).

Die STL oder Boost halte ich für wesentlich "stabiler" als z.B. QT, MFC, VCL usw. Zudem kann es immer mal passieren das ein "besseres" Framework kommt, das z.B. für die UI besser geeignet ist. Bei schnelllebigen Projekten ist dies kein Problem, bei langlebigen würde ich zumindest eine grundsätzliche Austauschbarkeit als wichtig erachten.

Etwas ganz anderes habe ich zudem in Projekten erlebt die sich auf ein Framework eingeschossen haben: Häufig wird die Programmlogik früher oder später in die GUI gelagert (Das ist zwar kein Zwang, aber eine Tendenz die ich aus Projekten fest gestellt habe).

_________________
in theory there's no difference between theory and practice. in practice there is. (yogi berra)

In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
gastgast
Unregistrierter




Beitrag gastgast Unregistrierter 07:41:25 09.09.2010   Titel:              Zitieren

Ich nutze Qt nur für die Sachen, die mir die Standard-Bibliothek bzw. boost nicht liefern. Ausnahme: Netzwerk, da Nutze ich ebenfalls Qt.

Der vielbeschworene Vorteil von Qt - nämliche der schnelle Einstieg und das einfache Anwenden - sind m.E. auch dessen Fluch. Wie der Threadstarter oben bereits angedeutet hat: Da wird dann munter GUI und Netzwerkcode gemischt und, was ich am schlimmsten finde, sobald die Leute das mit signal und slot verstanden haben, fliegen unzählige Signale durchs System, weil der Mechnismus auch für nicht Qt Logik verwendet wird.

Dann ist das Framework mit dem Rest des Programms "verklebt" was die Wartung unnötig erschwert.
Eisflamme
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 1734
Beitrag Eisflamme Mitglied 09:24:59 09.09.2010   Titel:              Zitieren

Okay, aber die Argumente der Verschmelzung von UI und Programmlogik gelten ja für den aufmerksamen Programmierer nicht, oder? ;) Ich mein, das kann passieren, aber kann man das als ernsthaftes Argument durchgehen lassen? Schwierig, würde ich sagen.

Mit der Langlebigkeit der Projekte stimmt das mit Boost vs QT womöglich schon. Aber ich glaube, so etwas entwickle ich zur Zeit nicht.

Na ja und sonst so? Wegen der Aufgeblähtheit wurde mir entgegnet, dass durch die Modularisierung von QT das eigentlich kein Argument sei, da sowieso immer nur das eingebunden wird, was verwendet wird. Ich bin ehrlich gesagt nicht sicher, wie viel davon eingebunden wird oder nicht, ob es, um als Windowsnutzer zu sprechen, für Teile gesonderte libs gibt und dass die Header halt auch wie üblich eben nur bestimmte Funktionalitäten einbinden.

Und dann verstehe ich nicht: Wenn QT mehr als Boost hat und man beides nutzt, wieso dann nicht nur QT? Ebenfalls Austauschbarkeitsmöglichkeit für den UI-Teil erhalten?
l'abra d'or
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 1201
Beitrag l'abra d'or Mitglied 09:48:23 09.09.2010   Titel:              Zitieren

Austauschbarkeit für den GUI-Part ist ein Argument. Das andere mit der Abhängigkeit zu X hast du ganz unterschlagen :P boost selbst braucht eigentlich nur die STL (in vielen Bereichen nicht mal das) und einen C++-Compiler. Plattformspezifische Sachen für asio und threads sollten sowieso vorhanden sein.

Um was für Teile geht es dir denn jetzt speziell? SQL? wirklich schwerer ist das manuelle Handhaben nicht. Einziger Vorteil: ich kann den Datenbanktreiber on-the-fly ändern. Aber ehrlich: wann machst du das?
Entweder soll die DB eine einfache Variante sein, Daten deiner Desktop-Applikation zu speichern -> sqlite.
Oder du brauchst eine komplexe DB, Zugriffe sind Zeitkritisch -> MySQL/PostgreSQL/...
Du möchtest keinen SQL-Server laufen lassen? sqlite, mysql-embedded, User-eigener mysqld.
usw.
Es ist also nur minimal bequemer mit QtSQL, dafür bindest du dich absolut an QT, denn QtSQL arbeitet mit QVariant! Dadurch werden die SQL-Typen in Qt-Typen "gecastet", was eine Verwendung in einer anderen Umgebung als Qt erschwert und ein ganzes Projekt neu geschrieben werden darf, sollte Qt wegfallen.

Dass Qt modular ist ist ja schön, aber SO modular ist es auch wieder nicht. libQtCore enthält schon so viel, was man nicht unbedingt braucht - Threads, Regexp, usw. Mit boost kannst du das wenn nötig mitlinken, ansonsten lass es weg. libQtCore hat hier 2,6MB, libQtNetwork hat 1,2MB.
Macht für bissl Core-Funktionalität gleich 3,8MB! Wenn eh schon Qt läuft ist es egal...

Verwende std::tr1 (oder Funktionen wie threads, die mit dem nächsten Standard kommen, aber jetzt schon von den meisten std-libs/compilern unterstützt werden) und du solltest gar kein Argument mehr für Qt haben.

Wenn du weißt, dass du nur Qt für die Gui einsetzen wirst, dann ist es natürlich absolut kein Problem, für alles andere auch gleich Qt zu nehmen - wobei ich auch hier mittlerweile genau überleg ob ich das wirklich will ;)
Eisflamme
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 1734
Beitrag Eisflamme Mitglied 10:14:51 09.09.2010   Titel:              Zitieren

Hi,

Okay, das sind doch Mal eine Hand voll Argumente. Ich dachte mir doch gleich, dass ich wieder nur Halbwissen-Geschwätz präsentiert bekomme, denn richtige Argumente von meinem Kollegen außer "das ist viel leichter" gab es nicht... aber hätte ich auch nicht erwartet.

Von X habe ich keine Ahnung, das wird dann unter Linux relevant sein, oder? Keine Ahnung, ob ich da X installieren würde oder nicht.

Ich glaube, dann finde ich Boost + QT tatsächlich doch ganz cool. Vielleicht weiß ich zum Teil ja nicht Mal, ob ich eine Oberfläche benutzen möchte... oder ich will die halt nachher tatsächlich Mal ersetzen. Wenn SQL so eine Abhängigkeit zu QT schafft, würde ich das wohl tatsächlich nicht benutzen.

Nagut, danke! Weitere Punkte interessieren mich natürlich nach wie vor!
asc
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.01.2007
Beiträge: 5048
Beitrag asc Mitglied 10:37:14 09.09.2010   Titel:              Zitieren

Eisflamme schrieb:
Wenn SQL so eine Abhängigkeit zu QT schafft, würde ich das wohl tatsächlich nicht benutzen.


Grundsätzlich habe ich gegen eine QT-Abhängigkeit nichts, solange sie nur bestimmte Schichten der Anwendung betrifft (Wenn die Schnittstelle zur Datenschicht kein QT enthält, es aber in dessen Implementierung enthalten ist, kann man es dennoch leicht austauschen).

_________________
in theory there's no difference between theory and practice. in practice there is. (yogi berra)

In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
pumuckl
Moderator

Benutzerprofil
Anmeldungsdatum: 21.06.2005
Beiträge: 6315
Beitrag pumuckl Moderator 10:58:12 09.09.2010   Titel:   Re: Boost vs. QT            Zitieren

Eisflamme schrieb:
Nach kurzer Recherche im Internet habe ich nur wenig gefunden, allerdings u.a. einige, die QT und Boost gemischt einsetzen, was wohl heisst, dass QT fuer Oberflaechen und Boost fuer die Logik verwendet wird.

Wieso wuerden diese Leute nicht nur QT benutzen?


Weil diese Leute, wenn ihre Anwendung sowas wie eine Architektur besitzt, GUI und Programmlogik voneinander getrennt in verschiedenen Modulen/Schichten implementieren und jede Schicht die Frameworks/Bibliotheken benutzt, die für die jeweilige Aufgabe (nach Meinung des Entwicklers/Designers) am Besten geeignet ist. Also beispielsweise QT für die GUI-Schicht, einzelne boost-Bibliotheken für die Anwendungslogik usw.

_________________
Du brauchst Hilfe? - Kleines Einmaleins der Forenregeln.
When your hammer is C++, everything begins to look like a thumb. (Steve Haflich)
GigaBytes
Unregistrierter




Beitrag GigaBytes Unregistrierter 11:23:53 09.09.2010   Titel:              Zitieren

l'abra d'or schrieb:

Dass Qt modular ist ist ja schön, aber SO modular ist es auch wieder nicht. libQtCore enthält schon so viel, was man nicht unbedingt braucht - Threads, Regexp, usw. Mit boost kannst du das wenn nötig mitlinken, ansonsten lass es weg. libQtCore hat hier 2,6MB, libQtNetwork hat 1,2MB.
Macht für bissl Core-Funktionalität gleich 3,8MB! Wenn eh schon Qt läuft ist es egal...

Sag mal das ist nicht dein ernst du Hoschi? Im Zeitalter von mehreren GB RAM ist es so etwas von Schnuppe ob eine einzelne Anwendung 1MB oder 10MB schluckt. Auf das Rausgerede bin ich jetzt mal gespannt aber ich denke ich werde wieder laut lachen.
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Boost vs. QT  
Gehen Sie zu Seite 1, 2, 3, 4, 5, 6  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.