Fortgeschrittenes Programmieren
-
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.
-
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.