C++ lernen (fortgeschritten)



  • Hallo zusammen,

    vor ungefähr einem Jahr habe ich mir den C++ Programmier (C++14) zugelegt und täglich in C++ programmiert. Jetzt stellt sich mir natürlich die Frage wie es weiter gehen soll, da Grundlagen sitzen, aber natürlich noch viel gelernt werden kann.
    Aus diesem Grund wollte ich gerne euch fragen, was ihr empfehlen würdet zum weitermachen (neues Buch? bestimmtes Projekt? Andere Programmiersprache? etc.). Dazu möchte ich euch natürlich gerne ein paar Informationen über mich und meinen bisherigen Kenntnisstand geben, damit man das auch beurteilen kann.

    Ich bin 17 Jahre und habe meine ersten Programmierkenntnisse in der Schule erworben. Das war Java vor ungefähr 2,5 Jahren. Da mir das Spaß gemacht hat, habe ich das auch zuhause weiterverfolgt und einen Grundkurs durchgearbeitet und das ein oder andere kleinere Projekt umgesetzt. Vor 1,5 Jahren habe ich meine Interessengebiete dann etwas ausgeweitet. Hinzu ist etwas Elektrotechnik gekommen (insbesondere Microcontroller, avr/arduino). Bin auf ein technisches Gymnasium gewechselt mit Lk technische Informatik. Dort habe ich ca. 10h die Woche Informatik/Digitaltechnik. Lernen tun wir da auch Java und Assembler (arduino). Es geht bei Java schwerpunktmäßig, um objektorientierung, Softwareanalyse (die ganzen uml diagramme usw.). Letzes Jahr im Herbst habe ich wie bereits oben erwähnt mit C++ angefangen zu programmieren. Das mache ich täglich, Java gar nicht mehr (außer für die Schule).

    Kenntnisse:

    • Objektorientierte Programmierung ... Ich würde sagen die Grundlagen sitzen hier ... mir fällt dieses Denken relativ leicht war mein Eindruck

    • Grundlegende - fortgeschrittene Java Kenntnisse (Datentypen, Funktionen, Klassen, Generische Progarmmierung, Exceptions, lamda, ein paar Collections)

    • Grundlegende - fortgeschrittene C++ Kenntnisse
      Abgesehen von dem C++ Rezepte Teil habe ich alles durchgearbeitet. Das heißt auch hier die grundlegenden Sachen (Klassen etc.), Fehlerbehandlung, Zeiger und Referenzen, Operator überladen, grundlagen templates sind vorhanden.

    • Qt 5 (vor allem qml) Grundkenntnisse

    Angewant habe ich meine C++ Kenntnisse in mehreren (auch größeren) avr Projekten, das bedeutet allerdings ohne die std. Darüber hinaus in Übungen (größenteils aus dem Buch) und kleineren Projekten (Experimenten?).

    Was ich nicht so gut kann in C++ (nach meiner Einschätzung):

    • Threads und Internet Anbindung (habe ich mir zwar angeguckt, aber bisher wenig praktische Erfahrung gesammelt)

    • Tiefergehende Kenntnisse über die std library (so standard Sachen wie Vectoren, iostream etc. kenne ich), Iteratoren, algorithmen, andere container außer vector/array,

    • Kenntnisse über den Aufbau der std library sind nicht vorhanden

    • Fortgeschrittene Themen mit templates: Einfache Template Funktionen/Klasse auch mit Spezialisierung kann ich schreiben. Bei verschachtelten Sachen template templates, variadic templates, die genaue Funktionsweise von templates hört es auf (aktuelles Thema mit dem ich mich etwas beschäftige)

    • Design Patterns ... die gängigsten habe ich mal gehört, aber anwenden kann ich sie nicht

    • Ich kenne mich natürlich auch nicht super mit Performance aus. Sachen wie Werte und Referenzsemantik sind mir bekannt ... und auch teilweise wo der Compiler da optimiert, wie man Kopien vermeiden kann etc. ... Aber diese bestimmten Sachen, wann per Wert vlt doch schneller ist als per Referenz etc.

    Das sind mal ein paar Sachen, die mir spontan eingefallen sind. Man sieht also erstmal man kann noch sehr viel verbessern, aber irgendwo musss man ja erstmal anfangen, deswegen zur Vollständigkeit auch hier nochmal meine Ziele/Interessen:

    Ich finde effizienten und allgemein verwendbaren Code sehr interessant. Wie kann man den Code möglichst gut optimieren und für viel verwenden (ihn aber auch lesbar halten). Das ist natürlich besonders auf avr relevant, wo mein Ziel natürlich ist RAM und Laufzeit zu sparen. Templates finde ich da sehr interessant. Hier steht nicht die std library zur Verfügung. Auch interesssiert es micht immer wie Sachen funktionieren. Wenn es also um die std geht, will ich sie nicht nur anwenden können, sondern auch die Hintergründe verstehen. Grundsätzlich bin ich nicht deswegen nicht so ein Freund von libraries, ich programmiere Sachen erstmal gerne alleine, um zuverstehen wie sie funktionieren. Mathe und Informatik finde ich eine tolle Kombination z.B. neuronale Netzwerke.

    Ich hoffe die Informationen waren ausreichend und ihr könnt mir gute Empfehlungen, womit ich am besten weitermachen soll. Beispielsweise welche Lektüre denn sinnvoll wäre 🙂

    Vielen Dank für eure Hilfe!



  • Dein bester Freund ist eine C++-Referenz. cppreference.com ist sehr aktuell. Pick dir die Dinger raus die dich interessieren und schau sie dir an und probier damit ein wenig rum. Seit C++11 gibt es std::thread und so einiges mehr. Das ist eigentlich alles ganz einfach gehalten und müsstest du verstehen. Weisst du schon wie std::bind funktioniert? Schaus dir an.

    Fürs Netwerken gibt es noch nichts im Standard, aber bald. Momentan rate ich da zu zwei Libs, nämlich Boost.Asio oder curl. Beides find ich sehr gut. Das Networking TS wird auf Boost.Asio aufgebaut sein, d.h. wenn du damit durch bist, wirst du das auch im zukünftigen Standard mit kleineren Anpassungen benutzen können.

    Die C++ Boost Libraries solltest du auch zumindest mal kennen, weil sie viele professionelle Lösungen für den Alltag bietet.

    Template templates wirst du eher seltener brauchen. Aber auch hierzu müssten es zahlreiche Beispiele im Internet geben.

    Das mit dem kopieren: Denke in Termen von ‘wie gross ist das Ding?’. Du kannst ein Objekt übergeben, das sagen wir 100 Bytes gross ist und das alles kopiert wird. Du kannst das Objekt auch als Referenz übergeben und diese Referenz ist eigentlich nur 8 Bytes gross (die Adresse eben, an der das Objekt angelegt ist). Aus diesem Grund brauchst du beispielsweise int’s nicht per Referenz zu übergeben. Weil die nämlich auch 8 Bytes gross sind und das somit kein Unterschied mehr machen würde.



  • Wenn du ein Projekt suchst, um z.B. in TCP-Sockets und Threads einzusteigen - ich weiß es klingt nach viel für den Anfang - dann bau dir doch einen Connectiontester mit einem Portlistener und einer aktiven Verbindung zu diesem Portlistener und dann schickst du ping-pong-Nachrichten hin und her und misst die Zeit wie lang z.B. 100000 Ping-Pongs dauern.

    Es ist natürlich schon anstrengend als Fortgeschrittener, aber du suchst ja Herausforderungen, so wie ich dich verstanden habe. 😉

    Aber deine Grundeinstellung und Neugier passt schon mal 🙂 Aus dir kann was werden 😎



  • Ich befinde mich in einer ähnlichen Situation wie du. Habe das gleiche Buch (und lese es bald komplett durch - > hatte bis jetzt nur zur Seite 300 gelesen und dann andere Quellen genutzt). Da ich mich aber sehr für das Thema Netzwerkprogrammierung begeistere, habe ich schon häufig mit Boost Asio gearbeitet. Gerade am Anfang haben mir die folgenden zwei Beispiele von dort sehr geholfen:

    https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_server.cpp

    https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_client.cpp

    Generell findest du auf der Boost Seite gute Beispiele und Erklärungen.

    Hier gibt's auch einiges, ist aber nicht auf den neusten Stand:
    https://dieboostcppbibliotheken.de/boost.asio-netzwerkprogrammierung

    Auf der Seite steht übrigens eins zu eins das gleiche wie in folgendem Buch:

    https://www.amazon.de/dp/1937434370/ref=cm_sw_r_wa_awdo_t1_cZtcCb0PRBQYV

    Weshalb ich nur empfehlen kann das nicht zu kaufen 😁



  • @spiri sagte in C++ lernen (fortgeschritten):

    Dein bester Freund ist eine C++-Referenz. cppreference.com ist sehr aktuell.

    Vielen Dank, ich habe schon gemerkt, dass die Seite sehr gut ist. Allerdings muss ich sagen, dass sie sich mehr als Nachschlagewerk eignet. Es listet mehr die Funktionalität auf, die Erklärungen sind kurz und auf einem hohen Niveau (zumindest aus meinen Augen). Um ein Beispiel zu nennen ... war ich bei der std::array Klasse über diese Änderungen verwundert des [] operators ... conexpr const_reference usw.
    Erst durch ausprobieren ist mir dann aufgefallen, dass seit dem C++14 Standard constexpr in member functions nicht mehr const impleziert.
    Hier brauche ich einfach noch etwas mehr Erklärungen, um auch wirklich nachvollziehen zu können, warum wurde dies so oder so gemacht.

    @It0101 sagte in C++ lernen (fortgeschritten):

    Wenn du ein Projekt suchst, um z.B. in TCP-Sockets und Threads einzusteigen - ich weiß es klingt nach viel für den Anfang - dann bau dir doch einen Connectiontester mit einem Portlistener und einer aktiven Verbindung zu diesem Portlistener und dann schickst du ping-pong-Nachrichten hin und her und misst die Zeit wie lang z.B. 100000 Ping-Pongs dauern.

    Klingt interessant und nach einer guten Aufgabe um in das Gebiet etwas tiefgehender einzusteigen👍🏻

    Mein Gefühl grundsätzlich sagt mir, dass ich neben spezielleren Sachen (wie bestimmte libraries z.B. boost, std) noch ein paar grundlegenderes (auch teilweise allgemeingültiges) Wissen fehlt. Quasi mit dem Ziel jeden "normalen" C++ Code auch lesen zu können. Vlt. auch Sachen in Bereich design von Methoden.
    z.B. Wann member funktion / wann nicht, lieber pointer oder referenz, Funktoren nutzen für allgemeinere Funktionen, auch so ein paar Regeln mit unsigned/signed vermischen ... one point of return ... wann constexpr ... rule of three, rule of five etc.

    Edit: Zum Methodendesign, effektiven Algorithemen etc. finde ich die Beiträge von camper in https://www.c-plusplus.net/forum/topic/348642/log_2-und-wurzel-ziehen-gelöst sehr interessant. Insbesondere den letzten. Ist vlt nicht der schönste Code, aber verstehen und im zweifelsfalls anwenden können, möchte ich ihn trotzdem (ohne tagelang daran zu rätseln, was ich jetzt erstmal müsste).

    Ich dachte da vlt an sowas:
    https://www.amazon.de/Effective-Modern-Specific-Ways-Improve/dp/1491903996/ref=sr_1_1?ie=UTF8&qid=1544118917&sr=8-1&keywords=modern+effective+c%2B%2B
    Soweit ich weiß gibt es da mehrere Reihen und soll wohl ganz gut sein, vlt. wisst ihr mehr dazu.

    Templates sind natürlich auch super interessant, wenn es um schnelle Funktionen geht, multiverwendbare Klassen und Funktionen etc. Das mit den template templates war vlt. ein schlechtes Beispiel. Natürlich gibt es auch andere Sachen, die mir nicht zu 100% vertraut sind, aber etwas nützlicher sind. Hier dachte ich an:
    https://www.amazon.de/Templates-Complete-Guide-David-Vandevoorde/dp/0321714121/ref=pd_sim_14_6?_encoding=UTF8&pd_rd_i=0321714121&pd_rd_r=1c3deaf1-f980-11e8-9e10-416299078adb&pd_rd_w=xa3RA&pd_rd_wg=kVug4&pf_rd_p=b38829c9-e6e5-4da7-8615-59e5c0de7783&pf_rd_r=MAD5J84GFAK6VC7SFM9T&psc=1&refRID=MAD5J84GFAK6VC7SFM9T

    Letzendes sinnvoll und wichtig ist alles, aber irgendwo muss man anfangen. Ich würde die Prioität erstmal auf generelle Sachen setzen, die man vlt. auch in anderen Programmiersprachen gebrauchen kann anstatt auf zu spezifisches Wissen über Bibliotheken. Die std bildet da wohl eine Ausnahme, da möchte ich aber definitv auch was über die Umsetzung und Gründe für dieses oder jenes Design wissen.
    Ich lerne ganz gerne mit Büchern und Projekten. Gibt es was Bücher angeht noch Empfehlungen?

    @It0101 sagte in C++ lernen (fortgeschritten):

    Aber deine Grundeinstellung und Neugier passt schon mal Aus dir kann was werden

    Ich hoffe es 😉 Glaube das Forum wird mehr sehr helfen dabei, eine sehr nette Community



  • Hallo und Willkommen im Forum,

    also von dem was Du sagts sieht man dass Du schon einen sehr guten Wissensstand zu den theoretischen Fragestellungen rund um C++ hast.
    Ehrlich, das ist geschätzt besser als die Hälfte auch von professionellen C++ Entwicklern. 🙂
    Was Dir fehlt ist halt Projekterfahrung aber das kann man nicht im Voraus lernen.
    Du bist an sich jetzt schon fit für einen Einstieg in professionelle Softwareentwicklung in C++.
    Der Rest kommt dann.

    Es macht jetzt auch nicht wirklich viel Sinn so Sachen wie Netwzerkprogrammierung, spezielle GUIs etc. zu lernen (ausser zum Spass). Entweder das wird im Projekt gebraucht, dann lernt man es schnell nach bei gleichzeitiger Anwendung oder man braucht es eben nicht.

    Zu Rezepten rund um C++ immer empfehlenswert sind die Standardbücher, wie hier beschreiben:
    https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
    Für dich insbesondere die Bereiche Best practices und Intermediate.



  • @Zhavok sagte in C++ lernen (fortgeschritten):

    Da ich mich aber sehr für das Thema Netzwerkprogrammierung begeistere, habe ich schon häufig mit Boost Asio gearbeitet.

    Siehste. Ich arbeite (beruflich) auch viel mit Netzwerkverbindungen ( TCP, UDP ) und habe noch nie mit Boost::Asio gearbeitet, stattdessen arbeite ich direkt mit den APIs von Windows und Unix 😉



  • Davon hat man mir hier im Forum abgeraten. Die Überlegung hatte ich am Anfang auch. Aber da Boost::Asio ja meines Wissens plattformübergreifend funktioniert, denke ich Boost war trotzdem kein Fehler. Gerade beim Thema TLS hat es mir super unter die Arme gegriffen 😅



  • @Zhavok sagte in C++ lernen (fortgeschritten):

    Davon hat man mir hier im Forum abgeraten. Die Überlegung hatte ich am Anfang auch. Aber da Boost::Asio ja meines Wissens plattformübergreifend funktioniert, denke ich Boost war trotzdem kein Fehler. Gerade beim Thema TLS hat es mir super unter die Arme gegriffen 😅

    Klar. Zumal boost besser dokumentiert ist als die meisten APIs 😉
    Es ist aber eine persönliche Entscheidung. Ich finde, es ist nicht verkehrt, die APIs im Hintergrund zu beherrschen.
    Für SSL z.B. nehme ich auch eine Bibliothek, weil das viel zu viel Arbeit ist und die Fehlerquote da hoch ist.



  • @scrontch sagte in C++ lernen (fortgeschritten):

    Hallo und Willkommen im Forum,
    also von dem was Du sagts sieht man dass Du schon einen sehr guten Wissensstand zu den theoretischen Fragestellungen rund um C++ hast.
    Ehrlich, das ist geschätzt besser als die Hälfte auch von professionellen C++ Entwicklern.

    Vielen Dank 🙂 Eine Sprache so beherschen, dass es für den Alltag reicht ist der Anfang, aber wirklich faszinierend sind natürlich die Entwickler, die die ganzen Feinheiten wissen. Das wäre wohl langfristig mein Ziel ... z.B. nicht nur anwenden können, sondern selbst Vorschläge zur Verbesserung einrreichen zu können.

    @scrontch sagte in C++ lernen (fortgeschritten):

    Was Dir fehlt ist halt Projekterfahrung aber das kann man nicht im Voraus lernen.

    Das stimmt. Kleinere Ideen hat man ja immer noch. Aber richtige Applikation (im Team, für einen Kunden) ist sowieso nochmal eine komplette Welt. Werde ich wohl im kommenden Jahr nach der Schule sehen.

    @scrontch sagte in C++ lernen (fortgeschritten):

    Du bist an sich jetzt schon fit für einen Einstieg in professionelle Softwareentwicklung in C++.

    Ich wünsche mir, dass ich später in meinem Job mit C++ zu tun habe. Die bisherigen Bewerbungsgespräche haben eher herausklingen lasse, dass wohl Java, Websprachen oder Python verwendet wird. Naja für den Einstieg ist es okay ... aber mir gefällt an C++ so gut, dass es so umfangreich ist und man immer selbst die Wahl und Kontrolle hat. Bei z.B. Java ist es ja fest vorgeschrieben, wann Objekte gelöscht werden, dass per Referenz übergeben wird etc.

    @scrontch sagte in C++ lernen (fortgeschritten):

    Es macht jetzt auch nicht wirklich viel Sinn so Sachen wie Netwzerkprogrammierung, spezielle GUIs etc. zu lernen (ausser zum Spass).

    Sehe ich genauso. Daher lerne ich auch nur zum Spaß Qt 😉 Ist gut gemacht, kann man auch einiges lernen von. Die Entwicklung zu qml hin, gefällt mir allerdings nicht. Wobei ich qml verwende, da es im Gegensatz zu den Widgets moderner ist und aktiver entwicklet wird. Aber abgesehen für Prototypen finde ich deklarativ programmieren nicht schön. Auch wie mit Python null Typsicherheit.

    @scrontch sagte in C++ lernen (fortgeschritten):

    Zu Rezepten rund um C++ immer empfehlenswert sind die Standardbücher, wie hier beschreiben:
    https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
    Für dich insbesondere die Bereiche Best practices und Intermediate.

    Vielen Dank für die Empfehlung! Die Bücher von mir oben verlinkt finde ich ja sogar da wieder. Etwas abschreckend finde ich nur teilweise das Erscheinungsdatum der empfohlenen Bücher.
    z.B. Expectional C++ klingt ja gar nicht schlecht vom Inhalt her ... aber 1999 released ... ist es wirklich empfehlenswert sich so ein Buch 20 Jahre später anzuschaffen. Grade da mit den neuen C++ Standards wichtige Neurerungen kamen, frage ich mich, ob das dann nicht eher kontraproduktiv ist.

    Ansonsten würde ich dann:
    Effective modern C++ und C++ Templates the complete guide auf die Weihnachtsliste schreiben 🙂

    Modern C++ Design klingt auch sehr interessant. Aber ich denke es macht Sinn vorher erstmal was anderes sich anzugucken, da das vermutlich schon auf einem recht hohen level ist. Und grade mein Wissen über die std lässt ja zu wünschen übrig 😉

    @Zhavok sagte in C++ lernen (fortgeschritten):

    habe ich schon häufig mit Boost Asio gearbeitet.

    Hab ich mal kurz ausprobiert. Fand ich nicht schlecht, war aber dann doch noch zu früh für Netzwerkprogrammierung als ich das machen wollte, dachte ich mir. Vlt. gebe ich dem ganzen nochmal eine Chance, wenn ich @It0101 Projektvorschlag umsetze😀



  • Ja,
    Eigene Erfahrung bzgl der Bücher die ich persönlich gelesen habe (schon länger her):
    Effective C++ - Sehr zu empfehlen. Jeweils gut erklärt und direkt in der Praxis anwendbar. Wird wohl durch Effective Modern C++ abgelöst. Also das würd ich mir an deiner Stelle zulegen.
    Modern C++ Design - Interessant, aber im Prinzip bereits reine intellektuelle Selbstbefriedigung. Wenig Praxistauglich.

    Allgemein besteht meine Praxiserfahrung nun darin zu sagen dass es nicht allzuviel bringt sich theoretisch zu weit vorzuarbeiten.
    Der Grossteil der Softwareentwickler-Praxis besteht dann nämlich doch eher darin das Objekt-Modell des jeweiligen Kunden-Fachbereits gut zu designen, und umzusezten.
    Und das mit den Grundmitteln der Sprache die alle (!) Mitarbeiter im Projekt beherrschen.

    Dann noch lieber eine andere komplementäre Sprache besser lernen.
    Python ist für C++ Progger ein gutes zusätzliches Standbein.
    Und an Javascript kommt man i.a. auch nicht vorbei.

    Dann auch so ganz allgemeine Problematiken die jedem früher oder später über den Weg laufen, zB
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    oh, das is ja auch schon 15 Jahre alt 🙂



  • @scrontch sagte in C++ lernen (fortgeschritten):

    Und das mit den Grundmitteln der Sprache die alle (!) Mitarbeiter im Projekt beherrschen.

    Das ist in der Tat ein zweischneidiges Schwert.

    • Einsatz von eigenen Templates in eigenem Code (sowas wie std::vector<int> geht natürlich) -> fast niemand kann den Code lesen oder schreiben
    • Lambdas scheinen ähnlich kompliziert zu sein.
    • Klassen&Vererbung kann auch komplex sein.

    Zur Ehrenrettung meiner Kollegen: Programmieren ist nicht unser "Hauptfach" und meistens ist Python die Sprache der Wahl für Programmieraufgaben.



  • @Leon0402 sagte in C++ lernen (fortgeschritten):

    Was ich nicht so gut kann in C++ (nach meiner Einschätzung):

    • Threads und Internet Anbindung (habe ich mir zwar angeguckt, aber bisher wenig praktische Erfahrung gesammelt)

    • Tiefergehende Kenntnisse über die std library (so standard Sachen wie Vectoren, iostream etc. kenne ich), Iteratoren, algorithmen, andere container außer vector/array,

    • Kenntnisse über den Aufbau der std library sind nicht vorhanden

    • Fortgeschrittene Themen mit templates: Einfache Template Funktionen/Klasse auch mit Spezialisierung kann ich schreiben. Bei verschachtelten Sachen template templates, variadic templates, die genaue Funktionsweise von templates hört es auf (aktuelles Thema mit dem ich mich etwas beschäftige)

    • Design Patterns ... die gängigsten habe ich mal gehört, aber anwenden kann ich sie nicht

    • Ich kenne mich natürlich auch nicht super mit Performance aus. Sachen wie Werte und Referenzsemantik sind mir bekannt ... und auch teilweise wo der Compiler da optimiert, wie man Kopien vermeiden kann etc. ... Aber diese bestimmten Sachen, wann per Wert vlt doch schneller ist als per Referenz etc.

    Wichtig ist es die Std Library besser kennen zu lernen. Es gibt da massenweise Funktionen und natürlich muss man die Containerklassen kennen und verstehen weshalb es unterschiedliche Container gibt. Alle Container haben ihre Vor- und Nachteile und man muss sie kennen.

    Was Design Patterns betrifft, um sie wirklich zu verstehen sollte man weitere OOP-Sprachen kennen, und wissen wann ein Pattern nur ein Hilfsmittel ist Sprachunzulänglichkeiten auszubügeln, oder wann es sich wirklich um echte OOP-Pattern handelt. Auch wenn das Originalbuch von GoF in die Jahre gekommen ist, ist es immer noch der Einstieg in das Thema. Ich weiß nicht, ob der Design Patterns SmallTalk Companion noch erhältlich ist, aber der Unterschied zwischen C++ im GoF und SmallTalk im Companion ist sehr erhellend. Gerade was den Unterschied zwischen „Chain of Responsibility“ und „Object Recursion“ betrifft.

    Performance ist in erster Linie ein Problem der korrekten Datenstrukturen und der Algorithmen. Dafür müssen die Container in der Std Library bekannt sein und es muss allgemein deutlich mehr über Datenstrukturen und Algorithmen gelernt werden. Z.B. man kann eine Matrixmultiplikation nach Schulbuch implementieren oder sich ein Beispiel an Kazushige Gotos Arbeit in diesem Bereich nehmen.



  • @Leon0402 sagte in C++ lernen (fortgeschritten):

    Ich wünsche mir, dass ich später in meinem Job mit C++ zu tun habe. Die bisherigen Bewerbungsgespräche haben eher herausklingen lasse, dass wohl Java, Websprachen oder Python verwendet wird. Naja für den Einstieg ist es okay ... aber mir gefällt an C++ so gut, dass es so umfangreich ist und man immer selbst die Wahl und Kontrolle hat.

    Ja C++ ist eher nicht so verbreitet. Bei uns in der Firma sind wir der einzige Bereich der C++ macht. Von 200 Entwicklern sind wir 15 die einzigen die C++ machen. Aber wir haben auch gute Gründe dafür 😉

    Wenn du es dir mit den Sockets zunächst erleichtern willst, machst du das Ping-Pong-Projekt mit QT. Die Klasse QTcpSocket ist dermaßen einfach zu bedienen, dass das ein leichter Einstieg wäre. Und in QT könntest du auch erstmal auf Threads verzichten, da das ganze Ding eventgetrieben ist.