Was würdet ihr an C++ verbessern?



  • 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.



  • SideWinder schrieb:

    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?).

    Wieso Sprache? Mag sein, das dir VC nicht gefällt, aber das ist eine IDE und keine Sprache. Ganz davon abgesehen, das VAX beweist, das deine Aussage nicht auf C++ zutrifft. Wer zu geizig oder arm ist, 49 US$ für VAX auszugeben... hat Pech.



  • Ich meinte "Probleme bei Microsoft mit C++". Deswegen auch dann der Text in der Klammer. Möglich wäre es ja, aber offenbar tut man sich bei Microsoft weit weniger an um eine gute IDE für C++ zu erstellen als bspw. für C#.

    MfG SideWinder



  • SideWinder schrieb:

    Möglich wäre es ja, aber offenbar tut man sich bei Microsoft weit weniger an um eine gute IDE für C++ zu erstellen als bspw. für C#.

    http://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance 😉

    Abgesehen davon wirst du sicherlich nicht bestreiten dass z.B. der VC++ Debugger mit großem Abstand der Beste native Debugger ist dens gibt...



  • Der Debugger soll mal Ausdrücke auswerten können und nicht ständig meckern und wenn ich einen Zeiger angebe und das ein Array ist, soll der das selbstständig kapieren und mir die Arraywerte und nicht nur den erste zurückgeben (oder man sollte das via Schlüsselwort oder [] hinter Variablennamen im Überwachungsfenster erzwingen können).

    Aber geht ja nicht um MSVC++ hier



  • Eisflamme schrieb:

    Der Debugger soll mal Ausdrücke auswerten können und nicht ständig meckern und wenn ich einen Zeiger angebe und das ein Array ist, soll der das selbstständig kapieren und mir die Arraywerte und nicht nur den erste zurückgeben (oder man sollte das via Schlüsselwort oder [] hinter Variablennamen im Überwachungsfenster erzwingen können).

    Das geht doch alles, es gibt afaik sogar ne Möglichkeit die Anzeige im Watch Window per Skript für deine eigenen Typen zu erweitern (wie das z.B. die die std Container gemacht ist) 😕



  • off topic geworden. 🙄

    Noch eine verbesserung ist mir eingefallen.

    template<typename tDerived>
    class Foo
    {
        // implementation
    };
    
    class MyFoo : public Foo<MyFoo>
    {
        // leer
    };
    
    // instance bilden
    
    MyFoo my_instance;
    
    //
    // Es soll möglich sein das der Compiler
    // die MyFoo Klasse automatisch definiert
    //
    // folgender masse
    
    Foo<identity> my_instance; // das gleiche wie "MyFoo my_instance;"
    
    // der Bezeichner identity ist ein möglicher Schlüsselwort(Keyword)
    // my_instance ist eine variable von unbenannten Type(MyFoo) den der Compiler erstellt hat.
    

Anmelden zum Antworten