Fortgeschrittenes Programmieren
-
Mit boost ist es eben so, dass nicht alle Librarys gleich gut/modern implementiert wurden, da es ja sehr viele verschiedene Autoren gibt. Die internen Abhängigkeiten sind teilweise wahrscheinlich kaum enthebeln, ansonsten würde man andere Bibliotheken nutzen.
Es gibt ja auch Librarys von boost, welche nahezu alleine lauffähig sind. Andere wiederum nicht.Also XML Reader sind üblicherweise recht einfach zu handhaben, aber da hast du ja schon Links bekommen. Mit der Implementierung der Standardbibliothek ist es halt so, dass die auch nicht überall gleich ist. Allerdings stimme ich schon zu, dass sie nicht gerade Leserfreundlich gestaltet ist, aber mit der Zeit gewöhnst du dich dran und kannst auch die relativ gut lesen.
Und ja auch das builden von gewissen boost Bibliotheken kann manchmal ein weilchen gehen, aber bei einem rebuild sollte das nicht mehr so viel sein, weil ein Haufen Sachen dann ja gar nicht mehr verändert werden.
Also moderne Programmierung heisst nicht, dass es lange geht und man nix versteht.
Lass dir einfach ein wenig Zeit und früher oder später wirst du dann schon auch bei Library Code durchblicken können. (die von den üblichen Standardbibliotheken und boost sind meist tatsächlich nicht gerade für einen Anfänger geeignet). Die Benutzung allerdings sollte dir keine Probleme machen, denn dafür sind sie ja da. Etwas kompliziertes mit einer einfachen Schnittstelle zu versehen, damit es jeder richtig benutzen kann.
Nennt sich Abstraktion und ist ein Zeichen für moderne Programmierung./EDIT
Und Intellisense (und allgemein Unterstützung durch eine IDE) sind modern. Wer immernoch in einem einem öden Texteditor rumgurkt, der verliert Zeit und Nerven für die wirklich wichtigen Dinge.
Ebenso gehören externe Bibliotheken, wie z.B boost dazu (können auch andere sein), aber Fakt ist, dass boost bei C++ Programmieren weit verbreitet ist und einen gewissen Standard pfelgt. Ebenso finden viele Dinge aus boost auch im neuen Standard platz.
-
drakon schrieb:
Und Intellisense (und allgemein Unterstützung durch eine IDE) sind modern.
eine IDE zu benutzen ist schon ok, aber wenn er 5 minuten auf intellisense warten muss (wie er geschrieben hat), ist ja irgendwo der wurm drin. naja, über intellisense meckern doch sowieso alle.
-
Der meiste Code ist hässlich, unleserlich, fehlerhaft und schlecht dokumentiert.
Intellisense scheint nicht so gut zu sein. Mir wollte neulich mal wieder jemand zeigen, wie toll doch VS ist und dann hat Intellisense immer so Vorschläge ala "boost::boost::boost::boost::boost::boost::boost:: ..." gemacht. Hat mich nicht so überzeugt. Wenn man Geld ausgeben will, dann hat wohl VisualAssist (für VS) oder Xfactory (für Emacs) echt gute Completions (und mehr). Wenn man was gratis haben will, dann soll KDevelop (in der neuesten (svn?) version) extrem guten Support haben und CEDET (für Emacs) soll wohl angeblich auch recht brauchbare Completions anbieten.
Die Boost-Interna sind oft nicht sonderlich hübsch. Gerade die neueren Sachen haben oft böse Implementierungen, wo Header sich selbst einbinden und so über den Prepro die ganzen Klassen und Funktionen generieren.
-
Wenigstens ist die IntelliSense im VS2010 um einiges besser geworden
-
;fricky schrieb:
drakon schrieb:
Und Intellisense (und allgemein Unterstützung durch eine IDE) sind modern.
eine IDE zu benutzen ist schon ok, aber wenn er 5 minuten auf intellisense warten muss (wie er geschrieben hat), ist ja irgendwo der wurm drin. naja, über intellisense meckern doch sowieso alle.
Naja. Beim ersten mal muss auch da einiges an Code geparst werden, damit da überhaupt was sinnvolles bei rauskommen kann. Und es sei ebenfalls gesagt, dass VS 2010 noch beta ist und da wahrscheinlich noch die einte oder andere Optimierung reinfinden wird. Und Intellisense ist bei 2010 wirklich cool:
Habe hier oben was dazu geschrieben (auch was es so kann).
http://www.drakon.ch/?id=&offset=&mobile=0&show_entry=86rüdiger schrieb:
Intellisense scheint nicht so gut zu sein. Mir wollte neulich mal wieder jemand zeigen, wie toll doch VS ist und dann hat Intellisense immer so Vorschläge ala "boost::boost::boost::boost::boost::boost::boost:: ..." gemacht. Hat mich nicht so überzeugt. Wenn man Geld ausgeben will, dann hat wohl VisualAssist (für VS) oder Xfactory (für Emacs) echt gute Completions (und mehr). Wenn man was gratis haben will, dann soll KDevelop (in der neuesten (svn?) version) extrem guten Support haben und CEDET (für Emacs) soll wohl angeblich auch recht brauchbare Completions anbieten.
Wie gesagt unter VS2010 haben sie da einiges an Arbeit reingesteckt und wenn es sich durchgehend so verhält, wie bei den Beispiele, die ich getestet habe, dann ist wirklich nett. (Ich habe allerdings noch keinen Stresstest mir boost gemacht, aber Wert wäre es das sicher einmal zu sehen). Von Visual Assist habe ich nur positives gehört, aber es wäre mal interessant den mit dem Intellisense von VS2010 zu vergleichen.
-
drakon schrieb:
..., aber es wäre mal interessant den mit dem Intellisense von VS2010 zu vergleichen.
Wird aktuell leider nur schwierig sein. Derzeit gibt es nur eine Beta 2 von VAX für VS2010. Da wurden noch verschiedene Optimierungen nicht durchgeführt. Der Release von VAX für VS2010 soll zum Start von VS2010 rauskommen oder zumindest kurz danach.
@bnz,
Du hast dir da aber ein paar sehr schlechte Beispiele rausgesucht
Boost.Spirit ist eine hochkomplexe Bibliothek für das erstellen von Parsern über viele Templatemeta-Tricks. Boost.Spirit stösst an vielen Orten an die Grenzen von C++ und bedient sich daher zum Teil recht seltsamer Konstrukte, um fast noch über diese Grenzen hinaus zu gehen.
XmlLite von Microsoft dagegen ist eine Bibliothek, wo ich das Gefühl habe, dass die Entwickler in Urzeiten stecken geblieben sind. So Dinge wieCOM_VERIFY
oderreinterpret_cast
für ganz übliche Operationen, sind einfach nur hässlich und löst man heutzutage in modernem C++ anders.Ein relativ aktuelles/modernes C++ kannst du zum Beispiel bei SFML finden:
http://www.sfml-dev.org/Oder auch eine sehr schöne C++ Bibliothek in Boost dürfte
boost::asio
sein. Wenn vielleicht auch etwas mit den Namespaces übertrieben wurdeGrüssli
-
Dravere schrieb:
drakon schrieb:
..., aber es wäre mal interessant den mit dem Intellisense von VS2010 zu vergleichen.
Wird aktuell leider nur schwierig sein. Derzeit gibt es nur eine Beta 2 von VAX für VS2010. Da wurden noch verschiedene Optimierungen nicht durchgeführt. Der Release von VAX für VS2010 soll zum Start von VS2010 rauskommen oder zumindest kurz danach.
Nein, ich meinte eigentlich schon einfach eine aktuelle Version von VAX verglichen mit VS2010.
@bnz,
Du hast dir da aber ein paar sehr schlechte Beispiele rausgesuchtDas dachte ich eben auch, als ich das gelesen habe.
-
drakon schrieb:
Nein, ich meinte eigentlich schon einfach eine aktuelle Version von VAX verglichen mit VS2010.
Auch nicht ganz fair, weil sich VAX mit dem IntelliSense zum Teil rumstreiten muss. Ausser man schaltet das IntelliSense ganz ab, was aber aktuelle noch nicht so einfach ohne weiteres geht (man muss dem VS ein DLL File wegnehmen :)). Dadurch gehen dann aber gewisse VS Features nicht mehr, vor allem alle möglichen Wizards von VS.
Mit VS2010 soll es anscheinend endlich deutlich besser aussehen, weil nicht nur das GUI völlig überarbeitet wurde, sondern auch viel unter der Haube verändert und verbessert wurde. Also auch VAX wird von VS2010 stark profitieren, wie es aussieht.
Ich warte daher jetzt einfach mal ab. Irgendwann sollte ich ja noch meine Lizenz erneuern für VAX. Wenn dann VS2010 draussen ist, wäre das vielleicht ein idealer Zeitpunkt
Grüssli
-
drakon schrieb:
Naja. Beim ersten mal muss auch da einiges an Code geparst werden, damit da überhaupt was sinnvolles bei rauskommen kann.
ist klar, aber sowas könnte doch im hintergrund passieren. machen andere IDEs ja auch.
Dravere schrieb:
Oder auch eine sehr schöne C++ Bibliothek in Boost dürfte
boost::asio
sein.das ist in etwa sowas, was der OP bemängelt. *fg* wenn ich mir diese tcp_echo_server/client-beispiele anschaue, mit länglichen funktionsaufrufen die über 4 zeilen gehen (und die grösse der codes allgemein)... einfach grausam. das kriegt man wahrscheinlich mit der einfachen socket-API kürzer und einfacher hin. dieses 'asio' scheint sowas zu sein, das dinge verkompliziert, die ohne nur halb so schlimm wären.
-
boost generell finde ich gewaltig 'overrated'. Es gibt paar Konstrukte, ohne die ich selbst nichtmehr auskommen will (lexical_cast, variant z.b.), aber für das allermeiste andere Zeug, dass ich bisher verwendet habe, habe ich immer bessere Alternativen gefunden.
-
TravisG schrieb:
boost generell finde ich gewaltig 'overrated'. Es gibt paar Konstrukte, ohne die ich selbst nichtmehr auskommen will (lexical_cast, variant z.b.), aber für das allermeiste andere Zeug, dass ich bisher verwendet habe, habe ich immer bessere Alternativen gefunden.
Sehe ich mittlerweile leider auch so. Es gibt sehr viele nützliche Dinge in Boost, aber die Header- und Templatelastigkeit ist teilweise einfach pervers.
-
audacia schrieb:
Es gibt sehr viele nützliche Dinge in Boost, aber die Header- und Templatelastigkeit ist teilweise einfach pervers.
du nennst es pervers, manch anderer würden dazu 'modernes C++' sagen. *fg*
-
Modern oder nicht, sie muten auch in der Benutzung oft kryptisch an. Wie mit allen Dingen kann man auch damit übertreiben.
-
@bnz,
Du hast dir da aber ein paar sehr schlechte Beispiele rausgesuchtDas dachte ich eben auch, als ich das gelesen habe.
Diese Bibiothek schien meinem Ziel am ehesten gerecht zu werden.
XmlLite von Microsoft dagegen ist eine Bibliothek, wo ich das Gefühl habe, dass die Entwickler in Urzeiten stecken geblieben sind. So Dinge wie COM_VERIFY oder reinterpret_cast für ganz übliche Operationen, sind einfach nur hässlich und löst man heutzutage in modernem C++ anders.
Gut, das zu hören!
Ein relativ aktuelles/modernes C++ kannst du zum Beispiel bei SFML finden:
http://www.sfml-dev.org/Danke, die werd' ich mir auf jeden Fall ansehen. Ich muss mir nur noch überlegen für was ich sie benutzen könnte...
ist klar, aber sowas könnte doch im hintergrund passieren. machen andere IDEs ja auch.
Es passiert auch im Hintergrund, d.h. man kann schon anfangen zu arbeiten, wenn er noch parst, aber es wird angezeigt was er alles lädt. Ich habe einfach mal gewartet, bis alles fertig war, und fand es erschreckend wie viele Abhängigkeiten Boost.Spirit anscheinend hat.
Den IntelliSense selber finde ich super, da er im Gegensatz zu VC++ 2008 auch wirklich funktioniert.bnz
-
bnz schrieb:
Ich habe einfach mal gewartet, bis alles fertig war, und fand es erschreckend wie viele Abhängigkeiten Boost.Spirit anscheinend hat.
Wie gesagt. Du hast dir da so ziemlich die schlimmse Bibliothek, was das anbelangt ausgesucht.
(hinter lambda steckt z.B auch recht viel)
Den IntelliSense selber finde ich super, da er im Gegensatz zu VC++ 2008 auch wirklich funktioniert.
Da stimme ich voll zu. Ich war wirklich erstaunt, als ich den arbeiten sah.
Was mich aber immernoch enttäuscht ist, dass es anscheinend immernoch kein Refactoring Tool gibt. (oder ich habe es zumindest nicht gefunden..)
-
Was mich aber immernoch enttäuscht ist, dass es anscheinend immernoch kein Refactoring Tool gibt. (oder ich habe es zumindest nicht gefunden..)
Das habe ich auch in deinem Blog-Eintrag schon gelesen und mir schon damals nichts darunter vorstellen können.
Unter Refactoring würde ich mir jetzt die Wiederverwendung von Code vorstellen, aber was soll ein Refactoring Tool machen?bnz
-
bnz schrieb:
aber was soll ein Refactoring Tool machen?
Schreibe mal ein Java-Programm in Eclipse oder NetBeans, dann klärt sich das von selbst.
-
Unter Refactoring würde ich mir jetzt die Wiederverwendung von Code vorstellen, aber was soll ein Refactoring Tool machen?
ZB sowas wie das Umbenennen von Dingen unter Rücksicht auf die Semantik. So spart man sich die schrecklichen regulären Ausdrücke, durch die jedes mal irgendwas durchfällt.
-
Also so ganz habe ich diesen Hype um Refactoring tools nie verstanden. Ich habe auch ein paar Jahre mit Java und Eclipe gearbeitet und hin und wieder die Refactoring-Funktion genutzt. Da ging in einem Projekt das Umbenennen einer Methode, Variablen oder Klasse oder auch andere Strukturelle Änderungen in wenigen Sekunden, für die ich mit C++ etliche Minuten brauche. Wenn man bedenkt, dass man so etwas doch alle paar Tage mal braucht, ist der Gewinn nicht wirklich so hoch.
Ich schätze die Typstrenge von C++. Wenn ich da etwas ummodele, dann werfe ich den Compiler an und der zeigt mir genau die Stellen, an denen ich anpassen muss.
Natürlich ist das ein Hilfsmittel, welcher die Arbeit erleichtert. In der Praxis sehe ich aber ganz andere Probleme die wesentlich mehr Aufwand erfordern. Ich vergleiche das so ein wenig mit der Klimaanlage im Auto. Schön wenn sie da ist, aber wenn nicht, dann komme ich dennoch von A nach B.
-
tntnet schrieb:
Also so ganz habe ich diesen Hype um Refactoring tools nie verstanden. Ich habe auch ein paar Jahre mit Java und Eclipe gearbeitet und hin und wieder die Refactoring-Funktion genutzt. Da ging in einem Projekt das Umbenennen einer Methode, Variablen oder Klasse oder auch andere Strukturelle Änderungen in wenigen Sekunden, für die ich mit C++ etliche Minuten brauche. Wenn man bedenkt, dass man so etwas doch alle paar Tage mal braucht, ist der Gewinn nicht wirklich so hoch.
Ich schätze die Typstrenge von C++. Wenn ich da etwas ummodele, dann werfe ich den Compiler an und der zeigt mir genau die Stellen, an denen ich anpassen muss.
Natürlich ist das ein Hilfsmittel, welcher die Arbeit erleichtert. In der Praxis sehe ich aber ganz andere Probleme die wesentlich mehr Aufwand erfordern. Ich vergleiche das so ein wenig mit der Klimaanlage im Auto. Schön wenn sie da ist, aber wenn nicht, dann komme ich dennoch von A nach B.
Ich brauche es auch nicht all zu oft, aber wenn ich mal wirklich einen Bezeichner umbenennen will, dann würde ich das gerne elangt mit einem Schlag machen und nicht mit Suchen/Erstzen arbeiten. So ein Tool ist ja nicht so viel Aufwand im Vergleich zu anderen Dingen und kann die Arbeit an gewissen Ecken doch vereinfachen. Ich verlange ja nix grossartiges, aber so ein Umbenennen wäre wirklich toll.