Was würdet ihr an C++ verbessern?
-
Ieh, eckige Klammern für Nicht-Feldbereiche.
Was habt ihr alle gegen Header? Wo soll ich denn sonst meine Klasse definieren?
-
Wenn ich um eine API/Lib bedienen zu koennen in den Header schauen muss, dann is sie eh Schrott.
Eine gute API liefert eine ordentliche Doku. Ich hatte z.B. in DirectX oder .NET noch NIE das Beduerfnis in irgend einen Header zu schauen. Man klickt einfach auf den relevanten Typ, drueckt F1 und bekommt eine uebersichtliche Hilfe ohne den ganzen irrelevanten Spam wie #includes, #defines, private Member usw.Eisflamme schrieb:
Was habt ihr alle gegen Header? Wo soll ich denn sonst meine Klasse definieren?
Seit wann definiert man Klassen in Header?
Offenbar hast du dir noch nie moderne Sprachen wie Java oder C# angeschaut...
-
Eisflamme schrieb:
Ieh, eckige Klammern für Nicht-Feldbereiche.
Was habt ihr alle gegen Header? Wo soll ich denn sonst meine Klasse definieren?
Direkt in einer Datei? Diese Trennung von Deklaration (und dank Templates auch oft Definition) und Definition ist ja nicht universal. Schau' mal über den Tellerrand. Ich glaube da sind C/C++ einige der wenigen Sprachen die ein solches Konzept verfolgen.
MfG SideWinder
-
Also wenn schon Trennung von Definition und Implementierung der Funktionen. Im Header steht ja die Klassendefinition.[/klugscheiß]
Hm... Ich fand das gar nicht so schlimm. Und wenn man nur ÜE hat und keine Header, muss sich der Compiler automatisch die Abhängigkeiten zurechtsuchen oder wollt ihr dann eine andere Bekanntmache haben? Oder inkludiert man dann die ÜE bzw. ist nicht mehr jede Quellcodedatei eine ÜE?
Edit: Oh, ich schreibe auch nicht ÜEs. Interessant.
-
Und wenn man nur ÜE hat und keine Header, muss sich der Compiler automatisch die Abhängigkeiten zurechtsuchen
Genau. Wo ist das Problem?
So eine Aufgabe kann doch auch gerne der Compiler übernehmen.
-
Normalerweise soll ein Computer den Menschen unterstützen. Und bei Multi-Core und Ghz CPUs sollte der Compiler die paar Abhängigkeiten für mich auflösen können. Es mutet schon ziemlich altertümlich und ignorant an, das vom Programmierer zu verlangen.
Außerdem kann der Compiler sich doch selber was zurecht cachen, wenn es denn angeblich so aufwändig sein soll. Wie er das macht, ist mir egal, genauso wie es mir egal ist, wie die Precompiled Headers von ihm umgesetzt werden. Hauptsache er übernimmt das.
-
SideWinder schrieb:
Zum Thema Header noch: Java ist so modular aufgebaut, dass jede noch so billige IDE dir ein wunderbares Outline angibt und du fast überall auch mit irgendeiner Tastenkombination in die Ehre kommst zu einer Methode einfach via Namenseingabe zu springen. Ich glaube soetwas geht noch nicht einmal in der aktuellsten VC++-Version.
F12. Das geht schon seit mindestens VS2005...und dann gibts da noch so nette Features wie das Code Definition Window...
-
F12 scheint eher eine Art "Go to definition" zu sein. Welches interessanterweise nicht sonderlich gut für Templates zu funktionieren scheint. Zumindest wird thrust::generate nicht gefunden bzw. es tut sich einfach nichts.
Ich habe aber davon geredet eine Methode im Projekt bzw. zumindest im derzeitigen File zu suchen.
MfG SideWinder
-
Das einzige, was am Visual Studio schlechter ist, ist daß es kein Refactoring kann, weil die entsprechenden Features nicht in einem Menü namens Refactoring zusammengefaßt wurden. Abgesehen davon kann man gut damit arbeiten.
Ich würde mir neben sizeof auch noch alignof wünschen, und dafür Arrays nebst new[]/delete[] abschaffen.
Außerdem wünsche ich mir, Objekte der Größe 0 zuzulassen (leere Klassen, 0-große Arrays/Container).
-
volkard schrieb:
Außerdem wünsche ich mir, Objekte der Größe 0 zuzulassen
Und das folgende hat nicht Größe 0?
class A {}; A a;
Sollte doch eigentlich so sein.
-
SideWinder schrieb:
Ich habe aber davon geredet eine Methode im Projekt bzw. zumindest im derzeitigen File zu suchen.
Geht wie gesagt mit VAX. Wer natürlich sich das nicht leisten kann oder will, hat Pech. Bzw. so wichtig scheint es ihm nicht zu sein.
-
Artchi schrieb:
volkard schrieb:
Außerdem wünsche ich mir, Objekte der Größe 0 zuzulassen
Und das folgende ist hat nicht Größe 0?
class A {};
Sollte doch eigentlich so sein.
Bisher nicht, und das finde ich traurig.
Damit die Biester in Arrays auf nachfolgenden Plätzen landen, damit der operator new nicht verreckt, damit sizeof(arr)/sizeof(arr[0]) klappt, und und und.
Dafür müssen andere Krafanen gemacht werden, http://www.cantrip.org/emptyopt.html
-
Jedes Objekt muss eine eindeutige Adresse haben, also muss es auch mindestens eine Größe von 1 haben. Es gibt im Standard m.W. nur eine Ausnahme im Falle leerer Basisklassen.
-
SideWinder schrieb:
F12 scheint eher eine Art "Go to definition" zu sein.
Exakt, bei mir funktioniert das eigentlich praktisch immer einwandfrei, auch mit Templates...
SideWinder schrieb:
Ich habe aber davon geredet eine Methode im Projekt bzw. zumindest im derzeitigen File zu suchen.
Dann könnte das Class View was für dich sein (Ctrl + Shift + C, das gibts auch schon seit maximal VC6 und damit seit über 10 Jahren)...
-
@dot: Dort ist aber wieder die Usability furchtbar. Nicht einmal der Fokus ist nach CTRL+SHIFT+C im Search-Feld, das heißt ich muss tatsächlich nochmal die Maus benutzen, da es nichtmal via Tab erreichbar ist. Alles in allem hilft wohl nur VAX wie Artchi bereits gesagt hat. Wer einmal längere Zeit mit Eclipse gearbeitet hat (für Java) findet Visual Studio eigentlich nicht mehr sonderlich beeindruckend. Eher enttäuschend.
MfG SideWinder
-
SideWinder schrieb:
Wer einmal längere Zeit mit Eclipse gearbeitet hat (für Java) findet Visual Studio eigentlich nicht mehr sonderlich beeindruckend.
Visual Studio für C++ vielleicht. Im C#-Modus ist es richtig gut
-
SideWinder schrieb:
Wer einmal längere Zeit mit Eclipse gearbeitet hat (für Java) findet Visual Studio eigentlich nicht mehr sonderlich beeindruckend.
Da muss ich widersprechen. Wann immer ich zwangsweise mit Eclipse gearbeitet hab (was zugegeben noch nicht so oft war, aber jedesmal Java ist einmal zu oft wenn du mich fragst) war ich heilfroh wenn ich wieder eine vernünftige IDE verwenden konnte. Aber das ist wohl stark Geschmackssache...und abgesehen davon sollte man eine C++ IDE wenn dan mit einer anderen C++ IDE vergleichen
-
GPC schrieb:
SideWinder schrieb:
Wer einmal längere Zeit mit Eclipse gearbeitet hat (für Java) findet Visual Studio eigentlich nicht mehr sonderlich beeindruckend.
Visual Studio für C++ vielleicht. Im C#-Modus ist es richtig gut
Ja, das habe ich mittlerweile auch mitgekriegt. Es scheint einfach Probleme mit C++ als Sprache zu geben um eine wunderbare IDE zu erstellen (bzw. man will VAX nicht ins Geschäft pfuschen?).
Alleine das Project Property Sheet ist ja aus Usability-Sicht nicht zu fassen. Additional Dependencies für den Linker sind in einer sehr interessanten 90er-Box hinzuzufügen. Wenn man sich da das hinzufügen von Libraries in Eclipse ansieht oder "References" im C#-Mode...
Aber das soll ja ein Thread über C++ werden. Ich hör' dann mal auf
MfG SideWinder
-
Gibt es jetzt eigentlich für C++ irgendeine Art Maven-Package-System mit Dependency-Resolution?
MfG SideWinder
-
SideWinder schrieb:
Gibt es jetzt eigentlich für C++ irgendeine Art Maven-Package-System mit Dependency-Resolution?
MfG SideWinder
Theoretisch jedes BSD/Linux Packaging.
Kenne mich mit Linux nicht aus, aber unter FreeBSD ist das jedenfalls out-of-box dabei, mittels Makefiles.
Das FreeBSD System löst die Abhängigkeiten auf, lädt notfalls fehlende (Source-)Libs von den Servern und baut das Projekt.
Wäre aber natürlich ein allgemeineres System nötig, das man z.B. auch mit dem Windows SDK nutzen könnte. Also in dem speziellen Fall nicht.
Eigentlich muß man ja die bestehen Tools wie bjam und SCons nur noch erweitern, weil die können ja schon Dependencies auflösen, nur halt noch nicht fehlende Libs von einem Server "besorgen". Aber auch das würde nicht alles lösen, weil du brauchst auch eine Community, die das pflegt. Und in Firmen muss sich da auch jemand drum kümmern. Mann kann hier höchstens der C++ Community einen Vorwurf machen, aber nicht der Sprache selbst.
Aber was hat das alles mit der C++ Sprache zu tun? Das sind alles nur entfernte Tools, die man für jede Sprache entwickeln kann. Finde die Diskussion ziemlich sinnlos, in diesem Thread, da es um C++ als Sprache geht.