Software-Engineering / Seminare / C++ Templates
Seminar, Schulung, Training

[C++ Templates] C++ Templates - Eine Einführung in die Template-Programmierung

Das Sprachmittel der C++ Templates hat den Ruf, einerseits erheblichen Overhead in Form von aufgeblähtem Binärcode zu erzeugen (Stichwort: Code Bloat) und gilt andererseits als komplex bis exotisch und damit untauglich für den Praxiseinsatz (Stichwort: Template Meta-Programmierung). Infolgedessen werden Templates in der Praxis nur relativ zögernd eingesetzt. Moderne C++-Compiler sind aber heutzutage in der Lage, ungerechtfertigten Overhead vollständig zu vermeiden, so dass eigentlich nichts mehr gegen den Einsatz von C++-Templates in der professionelllen Software-Entwicklung spricht. Im Gegenteil, sie können - geschickt eingesetzt - die Performanz und Qualität eines Programms spürbar erhöhen.


Termine und Preise hier
Überblick
Zielgruppe und Vorkenntnisse

Das Seminar wendet sich an Software-Entwickler, die das Sprachmittel der C++-Templates erlernen wollen. Besonders interessant ist der Kurs für Entwickler von Software mit hohen Effizienzanforderungen, wie zum Beispiel in der Embedded Programmierung. Der Kurs liefert u.a. die Voraussetzungen, um die STL (Standard Template Library) zu verstehen und zu benutzen.

Vorausgesetzt werden Grundkenntnisse in C++ und ca. 2-3 Jahre praktische Erfahrung in der Benutzung der Sprache. Grundkenntnisse über C++-Templates sind hilfreich, aber nicht zwingend erforderlich. Auch Entwickler mit Template-Vorkenntnissen sind willkommen; ihnen wird die Gelegenheit geboten, das vorhandene Wissen zu vervollständigen und zu vertiefen.

Dauer 3 Tag(e)
Varianten  
Ähnliche Seminare
Grundlegendere Seminare  
Weiterführende Seminare  
Detaillierte Seminarbeschreibung

Das Sprachmittel der C++ Templates hat den Ruf, einerseits erheblichen Overhead in Form von aufgeblähtem Binärcode zu erzeugen (Stichwort: Code Bloat) und gilt andererseits als komplex bis exotisch und damit untauglich für den Praxiseinsatz (Stichwort: Template Meta-Programmierung). Infolgedessen werden Templates in der Praxis nur relativ zögernd eingesetzt. Moderne C++-Compiler sind aber heutzutage in der Lage, ungerechtfertigten Overhead vollständig zu vermeiden, so dass eigentlich nichts mehr gegen den Einsatz von C++-Templates in der professionelllen Software-Entwicklung spricht. Im Gegenteil, sie können - geschickt eingesetzt - die Performanz und Qualität eines Programms spürbar erhöhen.

Das Seminar versucht uralte Vorurteile wie die Code-Bloat-Legende auszuräumen und vermittelt jene Kenntnisse über Templates, die ein C++-Programmierer braucht, um das Sprachmittel in der Praxis effektiv einzusetzen. Dabei wird u.a. erläutert, was es mit dem Code Bloat auf sich hat und warum eine Template-Klasse u.U. zu weniger Binärcode führt als eine herkömmliche Klasse. Wir lernen wie man Templates geschickt benutzt und Fehler im Einsatz von Templates vermeiden kann. Wir besprechen, warum Templates nicht nur für die Implementierung von STL-artigen Bibliotheken taugen, sondern auch in ganz alltäglichen C++-Programmiersituationen höchst elegante und effiziente Lösungen ermöglichen.

Selbstverständlich werden alle Sprachmittel der C++-Templates besprochen. Das Hauptaugenmerk liegt aber in der praktischen Anwendung und der Einübung von Programmiertechniken unter Verwendung von Templates. Dabei werden auch Aspekte des Software-Designs unter Verwendung von Templates besprochen. Dabei geht es im wesentlichen um die Analyse von Gemeinsamkeiten und Variabilitäten (Commonality-Variability-Analysis) und die entsprechende Umsetzung in C++. Als Ausblick wird eine Einführung in die Grundlagen der Template-Meta-Programmierung (TMP) gegeben. Da TMP aber nur in ganz speziellen Fällen nützlich ist, bleibt es bei der Einführung.

Der Schwerpunkt des Seminars liegt bei der "normalen" C++-Programmierung. Ziel des Seminars ist es, zu erlernen, wie Templates eingesetzt werden können, um Programme mit höherer Performanz, geringerem Speicherbedarf, besserer Lesbarkeit, Wartbarkeit und Qualität zu erzeugen.

Inhalte

Sprachmittel

Grundlagen der C++-Templates
Template Parameter
Template Argumente
Spezialisierung von Klassen-Templates
Überladen von Funktions-Templates
Default Template-Argumente
Member Templates
Template Template Parameter
Friends und Templates

Programmiertechniken

Statischer Polymorphismus
Template Argument Reflection
Traits
Policy und Strategy Pattern
Vererbung und Templates
Curiously Recurring Template Pattern
Grundlagen der Template Meta-Programmierung

Sonstiges

Aspekte des Software-Designs mit Templates
Zukünftige Template-Sprachmittel

Qualität
Dozenten

Angelika Langer arbeitet als unabhängige Trainerin mit eigenem Kursprogramm basierend auf ca. 25 Jahren Erfahrung in der Softwareentwicklung, u.a. in C++ und Java. Sie ist Autorin zahlreicher Fachveröffentlichungen zum Thema Java und C++, darunter die Kolumne "Effective Java" im JavaMagazin, das Online Java Generics FAQ, sowie das Buch "Standard C++ IOStreams". Sie ist Referentin auf internationalen Fachkonferenzen im In- und Ausland.

Aktuell liegt ihr Hauptinteresse im Training, Coaching und Mentoring im Bereich der objektorientierten Softwareentwicklung mit C++ und Java.

Ihre Kernkompetenzen liegen in der fortgeschrittenen C++- und Java-Programmierung.

Konzept

Folienpräsentation und ad-hoc Erläuterung am Flip-Chart. Praktische Übungen am Rechner mit persönlicher Betreuung und anschließender Lösungsdiskussion in der Gruppe. Folien in Englisch, Vortrag und Diskussionen in Deutsch.

Zusatzunterlagen
Organisatorisches
Durchführung

Der angegebene Preis ist zzgl. MwSt. und enthält Mittagessen, Kaffeepausen und Seminargetränke. Übernachtungskosten und Reisekosten sind im angegebenen Preis nicht enthalten.

Die Seminare beginnen in der Regel Montags um 9:30 Uhr und enden am letzten Tag um 16:00 Uhr, alle übrigen Tage jeweils von 9:00 bis ca. 17:00 Uhr. Genaue Seminarzeiten entnehmen Sie bitte Ihrer Anmeldebestätigung oder erfragen Sie bitte im Sekretariat.

Wiederholungen Dieses Seminar können Sie bis zu zweimal kostenlos wiederholen (siehe AGB).
Seminar, Schulung, Training