Zwei Jahre C++ und immernoch keine Ahnung :)



  • @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    die stl ist ein beispiel dafür, dass echte c++profis sich einen dreck um guten programmierstil scheren.

    So ein Quatsch. Ist ein Beispiel dafür daß es nicht einfach sich in große Projekte einzuarbeiten.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Ich höre nicht unbedingt gutes über die WinApi. Die Rede ist von LegacyCode und das man definitiv nicht damit lernen sollte.

    naja lernen sollte man damit nicht unbedingt, außer vielleicht, wenn man lernen möchte, die winapi in sein c++-programm einzubinden. also es könnte ja nützlich sein, sich vielleicht mal ein wenig damit zu befassen, weil man a) lernt, in einer dokumentation herumzuwühlen und b) vielleicht mal der unwahrscheinliche fall auftritt, dass man wirklich etwas vom betriebssystem haben möchte.

    Ebenso höre ich von überall, dass man C++ und C nicht mischen sollte worauf glaube ich @Swordfish auch gerade angespielt hat.

    nein das sollte man auch nicht tun, außer zu übungszwecken und in irgendwelchen sonderfällen.

    Generell bin ich kein Freund von sowas. Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.

    ja weitestgehend... aber glaubst du, dass microsoft und die opengroup extra eine schnittstelle für bspw. qt erstellt haben, oder wo soll diese plattformunabhängigkeit herkommen?



  • @Swordfish sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    die stl ist ein beispiel dafür, dass echte c++profis sich einen dreck um guten programmierstil scheren.

    So ein Quatsch. Ist ein Beispiel dafür daß es nicht einfach sich in große Projekte einzuarbeiten.

    deine worte:
    "die Dinkumware-STL ist grauenhaft zu lesen. Auch wenn man mal von den nötigen __ absieht, es wimmelt vor Makros und miesen Bezeichnern"

    was hat das mit großen projekten zu tun?



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    also zum glück kann du mit c++ auch c-programme schreiben.

    nur bedingt.

    char* p = "hallo";
    

    ist in c normal, aber in c++ ein fehler



  • @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    ist in c normal, aber in c++ ein fehler

    aber

    const char *p = "hallo";
    char *str = (char *) malloc(1234);
    

    ist ja kein ungültiges c, oder?



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    ist in c normal, aber in c++ ein fehler

    aber

    const char *p = "hallo";
    char *str = (char *) malloc(1234);
    

    ist ja kein ungültiges c, oder?

    ungültig ja nicht, aber der c-coder macht sowas nicht. der type-cast ist zeile 2 ist definitiv verpönt. die begründung dafür weiß ich aber nicht mehr.

    edit: hier steht es: https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc



  • @Bushmaster aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.😉



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    @Bushmaster aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.😉

    ja, aber dann gibt es mecker von anderen mitgliedern seiner zunft. 😉



  • @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    die begründung dafür weiß ich aber nicht mehr.

    Weil es in C mal erlaubt war Funktionen zu verwenden ohne daß der Compiler zuvor eine Deklaration gesehen hat. Es wurde dann eine Funktion mit unbestimmter Parameterzahl angenommen die einen int zurückgibt. Entspricht nun die Breite eines void* zufällig nicht der eines int kann's boom machen.

    @Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    was hat das mit großen projekten zu tun?

    Grauenhafte Bezeichner für Leute die mit dem Projekt nicht vertraut sind bzw. nicht wissen was sich die Entwickler so denken. Man kommt mit der Zeit schon d'rauf und kann auch verstehen daß bei der komplexität eher kurze Bezeichner gewält wurden. Makros sind bei manchen Dingen noch notwendiges Übel.

    @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.

    wth?

    auto p{ "hello" };
    std::vector<char> foo(1234, 0);
    // oder vllt. besser:
    std::string bar(1234, 0);
    


  • @Swordfish und wie würdest du die funktion ssize_t read(int fd, void *buf, size_t count); aufrufen?



  • Auf jeden Fall ohne vorheriges:

    const char *p = "hallo";
    char *str = (char *) malloc(1234);
    


  • @Wade1234 mit einem filedescriptor (der natürlich von einer RAII-Klasse gehalten wird), dem Pointer auf das erste Element eines std::vectors und der size() des std::vectors. Oder eben von einem std::array dasselbe. Wie denn Du!?

    Ne, nicht wirklich, ich würde istream::read() nehmen, dann wäre "mit einem filedescriptor (der natürlich von einer RAII-Klasse gehalten wird)" schonmal abgehakt.

    Bist Du sehr enteuscht wenn ich Dir sage daß aufgrund vieler Deiner Aussagen darauf zu schließen ist daß Du hauptsächlich grottiges C++ schreibst? Das ist nicht als Beleidigung gemeint sondern eher als Anstoß Dir mal moderne Literatur anzusehen.



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    @Swordfish und wie würdest du die funktion ssize_t read(int fd, void *buf, size_t count); aufrufen?

    auto read_result = read( MySocketHandle, (char*)MyStringSocketBuffer.data(), MyStringSocketBuffer.size() );
    

    Auch bei C-APIs, egal ob Posix oder WinAPI, kann man mit STL-Containern arbeiten. Dabei ist unerheblich ob man in dem Fall einen std::string oder einen std.:vector verwendet.



  • die doku sagt jetzt zu size folgendes:

    Returns the length of the string, in terms of bytes.

    This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storage capacity.

    sehe ich das richtig, dass ich gar nicht weiß, welche datenmenge da eigentlich maximal transportiert wird? gerade bei sockets sollte man ja schon größere datenmengen verschicken. irgendwie ist das kompliziert.

    @Swordfish sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Bist Du sehr enteuscht wenn ich Dir sage daß aufgrund vieler Deiner Aussagen darauf zu schließen ist daß Du hauptsächlich grottiges C++ schreibst? Das ist nicht als Beleidigung gemeint sondern eher als Anstoß Dir mal moderne Literatur anzusehen.

    ich habe sogar moderne literatur da. weil diese allerdings geschätzt 4-mal so dick ist, wie die "moderne" c-literatur, ist es beim ansehen geblieben.



  • Ich kann dem Treadersteller nur raten sich mal in der open source Welt umzusehen. Es gibt unzählige Projekte, die an chronischem Entwicklermangel leiden. Ich habe ein paar Jahre bei LMMS entwickelt. Als ich dort angefangen habe, hatte ich fast gar keine Ahnung von C++ und Qt. Man lernt in so einem Projekt eine ganze Menge :

    • der Umgang mit Git und github
    • sauberen Code schreiben
    • fremden Code lesen und verstehen
    • das Arbeiten im Team (sich unter zu ordnen und seine Eitelkeiten zurückzustellen)

    Open source Projekte sind oft neuen Entwicklern sehr aufgeschlossen und helfen dabei, sich einzuarbeiten. Mir hat es sehr viel gebracht. Es ist einfach ein tolles Gefühl, wenn dein Pull Request zum Projekt gemerged wird und du weißt, dass jetzt tausende Menschen von deinem Code profitieren.
    Außerdem hat man immer etwas vorzuweisen, falls mal ein potenzieller Arbeitgeber etwas sehen möchte.



  • Das ist auch genau das was ich möchte. Ich bin am überlegen für KDE mit zu entwickeln. Dort könnte ich mich anschließen, komme auch mit Git etc in Berührung und bekomme hoffentlich gesagt wenn ich Fehler, Bugs etc. in meinem Code habe.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Ich bin am überlegen für KDE mit zu entwickeln.

    Danke für die Warnung ... äh ... Info.



  • Für dich entwickle ich auch gern was für Windows @Swordfish 😘



  • @Zhavok
    Kannst dir auch ein hübsches eigenes Projekt suchen. Ich habe mir z.B. einen "Lego-Eisenbahn-Rundkurs-generator" gebaut, für die Kinder natürlich 🤣 .keinesfalls für mich 😎

    Szenario: man hat z.B. 25 Kurven eines bestimmten Radius, dazu 15 Geraden und soll einen Rundkurs generieren unter Verwendung möglichst vieler Gleise.

    1. Erweiterung: Verwendung von Weichen
    2. Erweiterung: grafische Darstellung des Rundkurses ( z.B. QT )

    Und zwecks Qualitätskontrolle kannst du ja hier jederzeit Quellcode posten. Oder fragst jemanden ob du ihm Quellcode schicken kannst.



  • Das könnte man schon machen. Aber zum einen kann ich mich nicht auf unendliche Geduld hier verlassen, denn nach 3 Fragen zu dem Thema wird das langweilig für die Leser, zum anderen möchte ich gerne lernen im Team zu arbeiten. Auch wegen Git etc.. Ich denke die Idee mit KDE ist garnicht so schlecht. Es ist ein schönes Gefühl mit anderen zusammen an einem großes Projekt zu schreiben. Ich denke auch, dass dann Tools an denen ich mitgewirkt habe eher zur Anwendung kommen als die Eisenbahn. Denn heutzutage sind die Kids einfach eine ganz andere Qualität von Spielen gewohnt. Aber trotzdem danke, das war kein schlechter Einfall. 😄


Anmelden zum Antworten