Hallo zusammen, ich bin auf der Suche nach Lesetipps zum Umstieg von C auf C++. C++ kann ich (noch) nicht, aber durch andere Sprachen wie Python und Matlab bin ich mit objektorientierter Programmierung vertraut. Die Plattform ist hauptsächlich STM32 (IDE momentan EmBitz mit ARM-GCC). Direkt die komplette Codebasis in C++ neu schreiben ist unrealistisch. Also ist eher der behutsame Umstieg in einem Kleinprojekt geplant. Gibt es Lesetipps, wie man im Jahr 2020 von C auf C++ weiterlernt?
:
Generell für den STM32 würde ich erst einmal dieses Tutorial empfehlen: http://stefanfrings.de/stm32/ Was mir bei C++ sehr geholfen hat war: Der C++ Programmierer von Ulrich Breymann. https://www.amazon.de/Programmierer-professionell-anwenden-L%C3%B6sungen-nutzen/dp/3446448845/ Hier kommst du gut voran, wenn du schon Kenntnisse in C hast.
Thomas R. schrieb: > Was mir bei C++ sehr geholfen hat war: > Der C++ Programmierer von Ulrich Breymann. Danke für den Tipp! Anscheinend ist eine 994seitige Leseprobe der Ausgabe von 2015 ist im Netz zu finden. Da kann ich mir ja in Ruhe übers Wochenende eine Meinung bilden, ob sich der Kauf lohnt.
Mein Tipp: vergiss, dass die Sprachen verwandt sind, und nimm einfach an, es sei eine komplett andere Sprache. Modernes C++ hat vom Stil her nix mit C zu tun. Und suche unbedingt Ressourcen, die mindestens nach C++11 entstanden sind.
Sven B. schrieb: > Mein Tipp: vergiss, dass die Sprachen verwandt sind, und nimm einfach > an, es sei eine komplett andere Sprache. Modernes C++ hat vom Stil her > nix mit C zu tun. Auf einem STM32 ist man dann aber doch auch viel mit C-Code im Kontakt. > Und suche unbedingt Ressourcen, die mindestens nach C++11 entstanden > sind. ja, auf jeden Fall.
Beitrag #6453408 wurde von einem Moderator gelöscht.
Beitrag #6453416 wurde von einem Moderator gelöscht.
Beitrag #6453418 wurde von einem Moderator gelöscht.
Beitrag #6453443 wurde von einem Moderator gelöscht.
Beitrag #6453444 wurde von einem Moderator gelöscht.
Beitrag #6453445 wurde von einem Moderator gelöscht.
Beitrag #6454284 wurde von einem Moderator gelöscht.
Beitrag #6454285 wurde von einem Moderator gelöscht.
Beitrag #6454286 wurde von einem Moderator gelöscht.
Eventuell ist die Frage oben etwas undeutlich gestellt. Sie lautet: "Was kann jemand, der C kennt, sinnvollerweise lesen, um C++ zu lernen?". Leider wird sie von Laien oft missverstanden und mit der Frage "Warum ist Assembler so viel besser als alle anderen Sprachen?" Bitte in diesem Thread nur die erste Frage behandeln. Sie ist kompliziert genug. Für die zweite kann ein eigener Thread aufgemacht werden.
:
Bearbeitet durch User
Walter T. schrieb: > durch andere Sprachen wie Python und Matlab bin > ich mit objektorientierter Programmierung vertraut. In dem Fall würde ich die üblichen Verdächtigen empfehlen: https://www.amazon.de/Scott-Meyers/e/B004BBEYYW%3Fref=dbs_a_mng_rwt_scns_share http://www.gotw.ca/publications/ https://www.amazon.de/C-Programming-Language-Bjarne-Stroustrup/dp/0321563840 Oliver
Beitrag #6454470 wurde von einem Moderator gelöscht.
Beitrag #6454471 wurde von einem Moderator gelöscht.
Beitrag #6454472 wurde von einem Moderator gelöscht.
Walter T. schrieb: > Gibt es Lesetipps, wie man im Jahr 2020 von C auf C++ weiterlernt? Dem Hinweis, dass C++ eine andere Sprache als C ist, kann ich mich nur anschließen. Das heißt aber nicht, dass du direkt idiomatisches C++20 schreiben musst, du darfst dir bestimmte Dinge rauspicken. Lesetipps habe ich keine, höchstens Vorträge von den C++-Konferenzen (gibt's auf Youtube). Da lernt man zwar nicht so viel, bekommt aber einen Überblick über das "was es alles gibt und warum". Sowas finde ich als Einstieg inzwischen wesentlich hilfreicher als Bücher. Die aus meiner Sicht wichtigsten Dinge für den Ein-/Umstieg nach C++ sind Referenzen, Grundlagen der Objektorientierung und Vererbung und die Container/Datenstrukturen der Standardbibliothek. Objektorientierung ist nicht überall sinnvoll, aber allein die fertigen Container (und ein paar Syntax-Nettigkeiten, z.B. range-based for-loops) sind für mich schon ein Grund für einen C++-Compiler, selbst wenn der Rest des Codes eigentlich nur C ist. Beschäftige dich damit unbedingt ausführlicher. Was "modernes" C++ angeht, damit habe ich weniger zu tun. Das meiste ist C++11 mit ein paar modernen Klecksen, die nicht weiter auffallen. Interessant wären da vielleicht Lambdas und die eher neuen Erweiterungen für z.B. Multithreading. Das ist nützlich, das braucht man öfter. "Einfach mal machen."
Walter T. schrieb: > Leider wird sie von Laien oft missverstanden und mit der Frage "Warum > ist Assembler so viel besser als alle anderen Sprachen?" Ich denke, Du spielst auch darauf an: Sven B. schrieb: > vergiss, dass die Sprachen verwandt sind, und nimm einfach > an, es sei eine komplett andere Sprache. Modernes C++ hat vom Stil her > nix mit C zu tun. Das stimmt leider. Ja, C++ war am Anfang mal ein Art Präprozessor für OOP, der C-Code erzeugt hat, und ja, man kann mit C++ auch reinen C-Code schreiben. Aber das führt in die Irre. Es kam nicht nur OOP dazu: Templates sind einzigartig. Und zudem verschluckt C++ alles, was sich irgendwo bewährt hat. Lerne es als neue Sprache, von Anfang an, und freue Dich, wenn Du schon weisst (oder glaubst, zu wissen), was ein ++ bewirkt oder ein &&.
A. S. schrieb: > Ich denke, Du spielst auch darauf an: Nein, er spielte auf Moby an, der mal wieder überall seinen Senf dazu geben zu müssen meint.
Vererbung ist überbewertet, moderne Sprachen gehen (korrekterweise, wie ich finde) eher in Richtung Composition. Den einen signifikanten Vorteil gegenüber C finde ich da eher das RAII-Pattern, das durch die Konstruktoren/Destruktoren ermöglicht wird.
Meine Bemerkung bezog sich, wie Jörg schon richtig bemerkt hat, auf einen inzwischen gelöschten Beitrag, bei dem das Thema, dass Hochsprachen für einen µC fehl am Platze seien, mal wieder in Romanlänge ausgewalzt wurde. A. S. schrieb: > Lerne es als neue Sprache, von Anfang an Nach allem, was ich sehe, ist Lehrbuch-C++ von C ungefähr gleich weit weg wie Matlab. Es sind zwei verschiedene Sprachen, bei denen man sieht, dass der Entwickler der neueren die alte kannte, und die beide den netten Nebeneffekt haben, dass sie mit existierendem C-Code koexistieren können. Und darauf bezog sich auch das "für Umsteiger" in meiner Frage ganz oben. Eine neue Programmiersprache ist das eine. Aber man hat ja auch noch jede Menge funktionierenden Legacy-Code, bei dem eine schrittweise Migration sinnvoll ist. Oliver S. schrieb: > In dem Fall würde ich die üblichen Verdächtigen empfehlen: Scott Meyers "Effective C++" beschäftigt mich sein Wochen und wird es auch noch die nächsten Monate. Lohnt es sich, im Nachgang noch den Stroustrup zu lesen? Sven B. schrieb: > Vererbung ist überbewertet Von Vererbung verspreche ich mir eine deutlich Vereinfachung meines Grafiksystems. Von RAII ehrlich gesagt wenig, weil bei meinen µC-Projekten die Deinitialisierung fast immer nur der Vollständigkeit halber implementiert ist, aber eh fast nie aufgerufen wird. Viel verspreche ich mir von static assertions, konstanten Ausdrücken und von Lambda-Ausdrücken. (Letztere sind zwar nur syntaktischer Zucker, aber welcher, der viel Scrollarbeit sparen kann.)
:
Bearbeitet durch User
Walter T. schrieb: > Scott Meyers "Effective C++" beschäftigt mich sein Wochen und wird es > auch noch die nächsten Monate. Lohnt es sich, im Nachgang noch den > Stroustrup zu lesen? Lies lieber Josuttis' Bücher zu C++ und der STL, Stroustrup ist sehr abstrakt und eher akademisch. merciless
Walter T. schrieb: >> Vererbung ist überbewertet > > Von Vererbung verspreche ich mir eine deutlich Vereinfachung meines > Grafiksystems. Auch da solltest Du zumindest die genannte Alternative und deren Unterschiede Dir anschauen Sven B. schrieb: > eher in Richtung Composition. Walter T. schrieb: > Von RAII ehrlich gesagt wenig, weil bei meinen > µC-Projekten die Deinitialisierung fast immer nur der Vollständigkeit > halber implementiert ist, aber eh fast nie aufgerufen wird. ich hätte jetzt gedacht, dass RAII in Grafiksystemen (die Du kurz vorher erwähnst) ganz hilfreich ist.
Walter T. schrieb: > Scott Meyers "Effective C++" beschäftigt mich sein Wochen und wird es > auch noch die nächsten Monate. Lohnt es sich, im Nachgang noch den > Stroustrup zu lesen? Das musst du entscheiden, aber wenn du schon fragst, vermutlich nicht. Meyers und Sutter bringen halt keinen C++ Gesamtüberblick, sondern besprechen (wichtige) Einzelthemen. Fundierte C++ - Grundlagen sollte man da schon haben. Der Stroustrup liefert diese, aber ob den noch brauchst, musst du selber wissen. Vielleicht ist da eher dann was zu Entwurfsmustern o.ä. sinnvoll. Der Übergang von C zu C++ ist ja weniger die andere Syntax, sondern vor allem das, was man damit anstellen kann. Oliver
:
Bearbeitet durch User
Falls es für dich in Fragte kommt, C++ erstmal ohne Mikrocontrolelr nur auf dem PC zu lernen, könntest du mit einem QT Tutorial anfangen: http://stefanfrings.de/qt_lernen/index.html Am Ende des Artikel empfehle ich auch ein paar Bücher.
Na ja, der Walter liest ja schon, da bringt ihm ein „Hello world“ in Qt wohl keinen großen Erkenntnisgewinn. Oliver
:
Bearbeitet durch User
Oliver S. schrieb: > Na ja, der Walter liest ja schon, da bringt ihm ein „Hello world“ in Qt > wohl keinen großen Erkenntnisgewinn. Das sehe ich auch so. Anders herum wird ein Schuh draus: Mit so einem Tutorial* bekommt man ein erstes Gefühl für die Programmiersprache. Danach versteht man die komplexen Bücher besser. Walter T. schrieb: > Lohnt es sich, im Nachgang noch den > Stroustrup zu lesen? Ich finde seine Bücher sehr gut, aber sie sind echt schwere Kost. Man kann sich da schnell in Details verzetteln, die zwar durchaus wichtig und gut zu wissen sind, aber für den Anfang erstmal zu viel. *) Da geht es ja auch mehr um C++ als um Qt. Qt ist da nur schmückendes Beiwerk, damit nicht alles im öden Terminalfenster abläuft.
Hallo, schau dir das einmal an. http://cppbuch.de/ Ich habe davon die vorherige C++17 Version. Ich hatte mir noch ein anderes gekauft. Von Torsten T. Will "C++ Das umfassende Handbuch" von Rheinwerk. Das liest sich jedoch nicht leichter. Damit möchte ich sagen das das Buch von Ulrich Breymann aus meiner Sicht wohl das derzeit rundeste Gesamtpaket darstellt. Ist auf jeden Fall einen Blick wert.
Ich bin seit einigen Tagen am Breymann. Zuerst an der PDF-"Leseprobe" der 2014er-Version, die im Netz zu finden ist, jetzt auch am gedruckten Buch. Mit 994 Seiten ist das aber ein ziemlicher Klopper, also wird das ein Weilchen dauern, bis der Break-Even-Point, wo es mehr Nutzen als Aufwand ist, erreicht ist. Ich rechne mal grob bis Mitte nächsten Jahres. Für mich ist die ganze Programmiererei je nur ein Hobby, für das nur wenige Stunden pro Woche Zeit ist. Immerhin: Das "Hallo Welt"-Blinken auf einem Nucleo-64-Board ging problemlos und einfach, und das Zusammenspiel von C und C++ im gleichen Projekt (ich nutze momentan EmBitz) ist erstaunlich unspektakulär problemarm. Das lässt hoffen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.