Dieses Videotranskript zeigt ein Interview mit der C++-Expertin und Buchautorin Francis B. Tempo anlässlich der C++-Konferenz. Im Zentrum stehen ihre Keynote „Don't be negative“ über das Entfernen negativer Zahlen aus Containern, ihre Autorenschaft bei Fachverlagen (u. a. Manning, O'Reilly und das kommende Packt-Buch Safe and Secure C++) sowie Best Practices für C++-Sicherheit. Weitere Kernpunkte umfassen die Evolution moderner C++-Standards, die Risiken unkritischer KI-Nutzung in der Softwareentwicklung, effektive Code-Reviews durch Nachwuchsentwickler bei Seniors, Legacy-Code-Modernisierung sowie fortgeschrittene Werkzeuge wie Clang-Tidy, Fuzz-Testing und Property-Based Testing.
Wichtigste Punkte & Zeitstempel
0:03 Neues Buchprojekt: Francis B. Tempo arbeitet an einem Fachbuch für den Packt-Verlag mit dem Arbeitstitel Safe and Secure C++, das sich mit Integer-Überläufen, Typensicherheit und Best Practices beschäftigt.
2:01 Keynote-Thema „Don't be negative“: Der Vortrag behandelt das Entfernen negativer Zahlen aus Containern, den Übergang vom klassischen remove_if zum modernen std::erase_if sowie numerische Randfälle mit Gleitkommazahlen und NaN-Werten.
5:50 Autorenhistorie: Zu Témpos bisherigen Werken gehören ein Buch über Machine Learning und genetische Algorithmen (Pragmatic Bookshelf, 2019), Learn C++ by Example (Manning) sowie ein Einführungswerk zu C++ (O'Reilly).
7:16 C++-Sicherheit und Kritik: Tempo betont, dass jede Programmiersprache Schwachstellen besitzt, und kritisiert Angriffe auf Ressourcen wie CPP-Reference, die einseitig für Rust werben.
8:02 Empfohlene Lernressourcen: Als wertvolle Informationsquellen werden die ACU (Association of C and C++ Users), Standardisierungsgremien, Compiler-Entwickler und die Konferenz Meeting C++ genannt.
10:10 KI-Complacency versus Verständnis: Warnung vor unkritischer Nutzung von Large Language Models (LLMs) und der Vernachlässigung des Team-Upskillings; LLMs reproduzieren bestehendes Internetwissen statt echter technologischer Innovation.
11:23 Sicherheit als Skill-Problem: C++-Sicherheit ist eine Kombination aus Sprachendesign und Entwicklerkompetenz. Erforderlich sind Code-Reviews, stringentes Testen von Randfällen und das Vermeiden blinden Vertrauens in KI-generierten Quellcode.
15:14 Modernisierung von Legacy-Code: Strategien für jahrzehntealte Codebasen umfassen modulare Isolierung, schrittweise Migration auf neuere C++-Standards (z. B. C++26-Kompilierung zur Fehleraufdeckung) und die Reduzierung von Einarbeitungszeiten für neue Mitarbeiter.
18:43 Bevorzugte Werkzeuge (Tooling): Großes Interesse an Clang-Tidy zur statischen Analyse sowie an Fuzz-Testing und Property-Based Testing zur automatisierten Entdeckung numerischer Singularitäten vor der Laufzeit.
20:42 Mentoring und Code-Reviews: Kritik an dysfunktionalem Pair Programming; als bewährte Methode wird vorgeschlagen, dass Junior-Entwickler den Code von Senior-Entwicklern reviewen, um den Wissenstransfer umzukehren und Lücken in Erklärungen aufzudecken.
27:34 Einbindung von Bibliotheken: Erwähnung der mp-units-Bibliothek von Matias, die physikalische Einheiten streng typsicher handhabt und ungültige negative Werte (wie negative Massen) im Typsystem verhindert.
31:11 C++26 und Contracts: Ausblick auf kommende C++26-Features wie Verträge (Contracts) und Bibliotheks-Härtungen, die nach anfänglicher mathematischer Überkomplexität zu einer sauberen, intuitiven Syntax reiften.
Glossar
C++: Eine leistungsstarke, kompilierte General-Purpose-Programmiersprache, die primär für Systemprogrammierung, Embedded Systems und Hochleistungsanwendungen eingesetzt wird.
remove_if / std::erase_if: Algorithmen der C++ Standardbibliothek; während remove_if (historisch) Elemente lediglich im Container verschiebt und ein neues Iteratorende liefert, löscht std::erase_if (ab C++20) Elemente tatsächlich aus dem Container.
NaN (Not a Number): Ein im Gleitkomma-Standard (IEEE 754) definierter Sonderwert, der ein mathematisch undefiniertes oder ungültiges Ergebnis repräsentiert (z. B. 0.0 geteilt durch 0.0).
Clang-Tidy: Ein auf der Clang-Compiler-Infrastructure basierendes Werkzeug zur statischen Code-Analyse (Linter), das Programmierfehler, Stilverstöße und Modernisierungspotenziale in C++-Code automatisch erkennt.
Fuzz-Testing (Fuzzing): Eine automatisierte Testmethode, bei der einer Software massenhaft ungültige, unerwartete oder zufällige Daten als Eingaben übergeben werden, um Softwareabstürze oder Sicherheitslücken aufzudecken.
Property-Based Testing: Ein fortgeschrittener Testansatz, bei dem Quellcode gegen universelle Eigenschaften (Invarianten) statt gegen feste Einzelfälle mit algorithmisch generierten Testdaten geprüft wird.
LLM (Large Language Model): Ein auf künstlicher Intelligenz basierendes Sprachmodell (wie ChatGPT oder GitHub Copilot), das Text und Quellcode analysieren, vorhersagen und generieren kann.
ACU (Association of C and C++ Users): Eine britische Fachorganisation für C- und C++-Entwickler, die eine Mitgliederzeitschrift und Kommunikationsplattformen bereitstellt.
Contracts (Verträge): Ein in der Standardisierung befindliches Sprachkonzept in C++, mit dem Vorbedingungen, Nachbedingungen und Invarianten direkt als Programmierschnittstelle definiert werden können.
Integer-Überlauf (Integer Overflow): Ein Rechenfehler, der auftritt, wenn das Ergebnis einer ganzzahligen Operation den Wertebereich des zugrunde liegenden Datentyps überschreitet.