Fortgeschrittenes Programmieren
-
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.
-
tntnet schrieb:
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.
Refactoring-Tools sind eher sowas wie das Getriebe im Auto. Den Code zu entwickeln heißt eben nicht nur neuen Code zu schreiben, sondern vor allem den bestehenden Code anzupassen und zu erweitern. Da gehört gesundes Refactoring zur Tagesordnung.
Und damit meine ich nicht triviales Umbenennen einer Funktion, sondern auslagern von Codeblöcken in neue Funktionen, auslagern von einer Gruppe von Variablen in eine eigene Klasse inklusive Anzeige der Funktionen, die dadurch geändert werden müssen usw. (und zwar letzteres nicht indem ich den Compiler anwerfe und warte bis er mir 3 Zeilen echte Fehler und 197 Zeilen Folgefehler vor die Füße kotzt)
Solche Refactoring-Tools sind leider sehr rar, was wohl auch mit der Grund dafür ist, dass eigentlich nötiges Refactoring nur mit Widerwillen in Angriff genommen wird, wenn überhaupt. Stattdessen werden häufig benutzte Codeteile lieber per Copy&Paste vervielfältigt und spätere Änderungen danach mit einem globalen "Suche und ersteze" über sämtlichen Code gebügelt der zu der eigentlich asuzulagernden Funktionalität gehört oder eben auch nicht.
-
tntnet schrieb:
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.
Refactoring Tool ändert die ganze Arbeitsweise. Ohne ein gutes Refactoring Tool ist alles statisch und man ändert nie etwas am Code, weil es viel Arbeit ist. Am Ende hat man dann unlesbaren Code, der viel mit Copy&Paste zusammen geflickt wurde.
In Eclipse kann ich nicht nur Member und Klassen, ich kann auch ein Interface/Superklasse erstellen lassen, Methoden aufteilen, die Signatur einer Methode ändern, usf. Das alles automatisch für das gesamte Projekt und extrem schnell (also unter 20 Sekunden).
Diese Einfachheit und Schnelligkeit ändert deine gesamte Arbeitsweise. Einmal geschriebener Code kann sehr einfach aufgeteilt und umgeschrieben werden. Das erlaubt mir den Code zu abstrahieren und wieder zu verwenden und Fehler im Model schnell zu beheben.
Eine IDE ohne die Refactoring Tools von Eclipse würde nicht mehr ernst nehmen.
Zum Topic: Wenn du fortschrittliches Programmieren sehen willst, schau dir eine fortschrittliche Sprache an.
-
tntnet schrieb:
Ich habe auch ein paar Jahre mit Java ... gearbeitet
[...]
Ich schätze die Typstrenge von C++.beide äusserungen haben nichts miteinander zu tun, richtig? denn wenn einer jahrelang mit einer relativ stark typisierten programmiersprache gearbeitet hat, wundert's mich, dass er die angebliche typstrenge einer schwach typisierten sprache hervorhebt.