mccpp2024w27
Erreichbarkeit bei eventuellem Tonausfall: 0151 1787 1397
Informationsverteilung zur Schulung
Fortgeschrittene C++ Programmierung
1. bis 4. Juli 2024
Über diese Seite erhalten Sie am Freitag VOR dem Kurs weitere Einzelheiten zur Durchführung.
WÄHREND des Kurses wird diese Seite ggf. verwendet, um Links zu Live-Demos zu verteilen.
Die Seite wird auch noch einige Wochen NACH dem Kurs verfügbar sein.
(Setzen Sie in Ihrem Browser eventuell ein Lesezeichen.)
Von allen für Sie dauerhaft wichtigen Informationen sollten Sie sich jedoch zum Ende des Kurses lokale Kopien anfertigen.
Lireraturhinweise (sehr selektive, nicht repräsentativ):
- Multi-Paradigm Development in C++ (James Coplien):
https://www.amazon.de/-/en/James-Coplien/dp/B00F454NUY - Technical Report on C++ Performance
https://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf - Real-Time Programming C++ (Christopher Kormanyos):
https://www.amazon.de/Real-Time-Efficient-Object-Oriented-Microcontroller-Programming/dp/3642346871 - Scott Meiers' Vortrag zur Eignung von C++ für Embedded:
https://aristeia.com/TalkNotes/C++_Embedded_Deutsch.pdf - ....
https://www.amazon.de/-/en/Anthony-Williams/dp/1933988770 - Achtung Satire (aber gut geschrieben mit mehr als nur einem Körnchen Wahrheit):
https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
Link zum ZIP-Archiv mit der zu bearbeitenden Aufgabe:
https://drive.google.com/file/d/1kxV2Y5Zz_7Y7o73L7tIFBkpDSU5jMIhe/view?usp=sharing
Link zu "Chatting About C++" (WiP = Work in Progress)
https://drive.google.com/drive/folders/1pUkex5uhrpip2Uoiuyjr3RkdL2-PFbmE?usp=sharing
Überblick C++Erweiterungen seit 2011 (sortiert nach Sprache une Library)
https://github.com/AnthonyCalandra/modern-cpp-features
Link zu eigenen Info-Grafiken;
https://tbfe.de/data/uploads/infographics/
Beispiele aus Kapitel Basics Refreshments (State-Machine):
- https://godbolt.org/z/hsrYvb (copy-paste BASICS-40...46)
- https://godbolt.org/z/rsne7M (Variationen zum Thema)
- https://godbolt.org/z/GYT1hj
- https://godbolt.org/z/PnY9Ks
- https://godbolt.org/z/ed45bKMjn
Beispiele aus Kapitel Exceptions
- https://godbolt.org/z/A6bg9U (copy-paste EX-15...18)
- https://godbolt.org/z/S4op5a (copy-paste EX-21...24)
- https://godbolt.org/z/ve-bBX (copy-paste EX-25)
- https://godbolt.org/z/m7K92A (copy-paste EX-26)
- https://godbolt.org/z/iYJ4yJ (copy-paste EX-27)
- https://godbolt.org/z/WquFzw (copy-paste EX-30...33)
- https://godbolt.org/z/5rz1jdWhr (Variante mit `std::out_of_range`)
- https://godbolt.org/z/XHtBLn (copy-paste EX-42...44)
- https://godbolt.org/z/mdVmeY (copy-paste EX-42..43+45)
- https://godbolt.org/z/gejU3B (copy-paste EX-42..43+46)
Demo.Beispiel zu Templates von heute Mittwochmorgen:
Aufgabe zu `std::function`, `std::bind` (auch `regex`, `fstream` ...),
- https://godbolt.org/z/8f4MdK3n4 (Stand vor Mittagspause)
- https://godbolt.org/z/voEGeoeKs
- https://godbolt.org/z/3nev4Wo67
- https://godbolt.org/z/T38Mq35W5
- https://godbolt.org/z/v15zxPd7h
- https://godbolt.org/z/7j6nhc1Px
- https://godbolt.org/z/39r4njsaP
- https://godbolt.org/z/jo4afjG9o
An dieser Stelle noch einige Informationen in Form einer FAQ:
- Q: Sollte ich vor der Schulung eine bestimmte Sotware-Entwicklungsumgebung installieren bzw. sind Beispiele und Übungen auf eine solche abgestimmt?
- A: NEIN. Da ich in einem davon ausgehe, dass in einem Kur, der sich an "Fortgeschrittene wendet", jeder alle schon einmal irgendwann, irgendwo mit C++ gearbeitet hat und entsprechend weiß, wie man Source-Files zu Executables kompiliert und diese dann ausführt. Daher lege ich Wert darauf, dass jeder in der Umgebung arbeiten kann, die am besten vertraut ist.
- Q: Sollte ich eine bestimmte Art von Projekten in meiner Entwicklungsumgebung vorbereiten?
- A: Bei allen Programmbeispielen und Übungsaufgaben handelt es sich um sogenante "Konsolen-Projekte", welche in einem Terminal-Fenster aufgerufen werden, ggf. Eingaben von der Tastatur erwarten und Ausgaben in Textform anzeigen.
- Q: Ich kann gut an der Kommandozeile arbeiten, brauche ich dann überhaupt eine IDE (Integrierte Entwicklungsumgebung)?
- A: Nein, es ist lediglich einen Compiler notwendig, den man an der Kommandozeile aufrufen kann. GCC und Clang sind beide geeignet, aber auch jeder andere Compiler, der mindestens den C++17 Sprachstandard unterstützt.
Eine IDE Ihrer Wahl kann aber dennoch nützlich sein, insbesondere wenn diese- C++-Syntax-Highlighting bietet (das können mittlerweile aber auch schon viele einfache Texteditoren);
- kleinere Programierfehler bereits vor einer Kompilierung markiert
- z.B. unpaarige Klammern
- fehlende Semikolons u.ä.
- Bezeichner für Variablen, Klassen, und Funktionen kontextabhängig vervollständigt;
- Hinweise zur Benutzung von Bibliotheksklassen und -funktionen mittels Pop-Ups anzeigt.
- Q: Ich habe keine bevorzugte IDE – welche wäre dann zu empfehlen und warum?
- A: In diesem Fall rate ich zu VS-Code (Visual Studio Code), da es die zuvor angesprochenen Punkte "Out of the Box" erfüllt. Voraussetzungen sind jedoch:
- es muss zumindest ein Compiler (GCC oder CLang) auf Ihrem Computer installiert sein;
- kompilieret werden muss auch dann noch in einem Terminalfenster, das jedoch direkt in VS-Code integriert ist.
- Q: Soviel mir bekannt ist, kann man in VS-Code doch auch per Tool-Button kompilieren und Programme ausführen, funktioniert das auch "Of the Box"?
- A: Leider nein, denn das erfordert die Kompilierung mit "CMake" und dieses muss als Plugin hinugefügt und eigens eingerichtet werden.
- Für alle, die sich mit der Einrichtung von CMake unter VS-Code auskennen, ist das keine echte Herausforderung.
- Für alle anderen reicht es, die folgende Anweisung für die Kommandozeile zu kennen und ggf. (ab dem zweiten Mal) per Kommandowiederholung aufzurufen:
g++ -std=c++17 *.cpp && ./a.out oder
clang++ -std=c++17 *.cpp && ./a.out
- Q: Ich würde tatsächlich gerne mit VS-Code arbeiten und weiß auch, wie man Plugins installiert. Gibt es da welche, die während des Kurses besonders nützlich sein könnten?
- Da manche Übungen auch einfach als Code-Review mit einem "Side-by-Side" des "vorher" vs. "nachher" durchführbar sind, ist auf jeden Falls das "Compare Folders"-Plugin nützlich.
- Q: Leider kann ich auf meinem Rechner weder eine IDE noch einen C++-Compiler instalieren. Gibt es dennoch eine Möglichkeit, aktiv C++-Besipiele auszuprobieren bzw. Programmierübungen zu bearbeiten.
- JA, auf jeden Fall. Die Lösung besteht dann in sogenannten "Online-Compilern".
- Kursbegleitende Live-Demos werden ohnehin per "Compiler-Explorer" durchgeführt. Über die anschließend verteilten Links können diese auch später aufgerufen und individuell verändert werden.
- Die kursbegleitende Gesamtübung kann optional mit dem "OnlineGDB" bearbeitet werden. Mehr dazu (bei Bedarf) am Montagvormittag.
Ich wünsche Ihnen allen ein schönes, sonniges Sommerwochenende.
-- Martin Weitzel