Modern C++ für Fortgeschrittene

Boost Your Productivity with Modern C++

Mit Dr. Peter Gottschling

Das Informationszeitalter ist über uns hereingebrochen: mit Google, Facebook, Twitter, Groupon, ...

Auch wenn es auf dem ersten Blick so aussieht, als ob IT heute nur noch im Netz stattfindet, sind C++ und C nach wie vor das Rückgrat von Web 2.0. Darum haben auch viele große Internetunternehmen renomierte C++-Gurus für ihre Technologien gewonnen: Matt Austern arbeitet bei Google, Andrei Alexandrescu lange Zeit bei Facebook, ... Aber natürlich wird C++ nicht nur in der Internetprogrammierung eingesetzt, sondern auch für Betriebssysteme, Compiler, eingebettete Systeme und fast jeden Bereich der Softwareentwicklung. Auch wenn es immer wieder Hypes um andere Programmiersprachen gibt, C++ ist von zeitloser Bedeutung.

C++ zu meistern erfordert etwas Arbeit, zahlt sich aber sehr schnell mit exzellenter Produktivität und optimaler Performance aus. Mit diesem Kurs möchte ich Sie ein gutes Stück auf dem Weg zur Meisterschaft begleiten. Diese Begleitung soll natürlich nicht nur Arbeit sein, sondern vor allem Freude am Programmieren und Entdecken neuer Sprachfeatures und Programmiertricks wecken.

 

Brainstorming über zukünftiges C++ mit Bjarne Stroustrup (dem C++-Erfinder)

 

Aufbauend auf jahrelanger Programmiererfahrung — u.a. bei der Entwicklung der Matrix Template Library — möchte ich mein Wissen über C++ mit Ihnen teilen. Zu meinen Erfahrungen kommt noch das geballte Wissen von Bjarne Stroustrup, Herb Sutter, Scott Meyer und anderen C++-Experten hinzu, deren Ratschläge sich auch aus dem praktischen Programmiererleben nähren.

Zielgruppe

Der Kurs wendet sich an Softwareentwickler, die qualitativ hochwertige Software entwickeln möchten, welche sich durch intuitive Schnittstellen und maximale Performanz auszeichnet. Es besteht die Möglichkeit, dass Sie nach dem Seminar noch kein vollkommener C++-Programmierer sein werden. Mein Ziel für diese Woche ist, dass Sie danach spürbar effektiver programmieren können. Dass Ihre Programme vielseitiger verwendbar sind und trotzdem die Hardware so effizient wie möglich nutzen. Dass Ihre Programme noch klarer und einfacher werden und dadurch lesbarer und wartbarer. Dass daraus auch eine produktivere Zusammenarbeit in Ihrem Team entsteht.

Beschreibung

Erfahrungen haben gezeigt, dass insbesondere rechenintensive Software häufig auf veraltete Programmiertechniken setzt, da ihre Entwicklung entweder im letzten Jahrhundert begann oder auf der falschen Befürchtung basiert, dass modernere Programmierkonzepte zulasten der Performanz gehen. Das Resultat ist, dass solche Software nur mit horrendem Aufwand gewartet und erweitert werden kann und sich bei Lektüre der Quellen auch Experten kaum erschließt.

Die Programmiersprache C++ bietet Techniken, die es erlauben, elegante, ausdrucksstarke, wart- und erweiterbare Software zu entwickeln ohne dabei an Performanz gegenüber Sprachen wie C und Fortran einzubüßen. Im Gegenteil, verschiedene Berechnungen lassen sich in keiner anderen Programmiersprache so effizient umsetzen.

Obwohl C++ am stärksten mit objektorientierter Programmierung assoziiert wird, konzentrieren wir uns in diesem Seminar stärker auf Templates (generische Programmierung). Zum einen lassen sich Funktionen und Klassen flexibler verwenden, wenn sie vom engen Korsett der Vererbungshierarchie befreit werden. Zum anderen kann der massive Einsatz von virtuellen Funktionen die Leistungsfähigkeit drastisch reduzieren. Wir werden jedoch auch zeigen, wie sich Vererbung zur Vermeidung redundanter Programmabschnitte einsetzen lässt, ohne dabei zusätzliche Laufzeit zu verbrauchen. Ein wichtiger Teil des Seminars ist die Vorstellung von Features des neuen Standards.

Voraussetzungen

Grundlagenkenntnisse in C++ und praktische Erfahrung werden vorausgesetzt.

Themen

  • Neue Techniken
    • Range-basierte for-Schleife (C++11)
    • RValues und Move-Semantik (C++11)
    • Initialisierungslisten (C++11)
    • {} oder ()? (C++11)
  • Templates (generische Programmierung)
    • Funktionstemplates
    • Klassentemplates
    • Variadische Templates (C++11)
    • Konzepte (C++20?) (*)
    • Spezialisierung
    • Nichttyp-Templateargumente
    • Funktoren
    • Sicherer Downcast ohne Overhead (*)
  • Typermittlung im Detail
    • Template-Argumente
    • auto (C++11)
    • decltype (C++11)
    • decltype(auto) (C++14)
    • Automatischer Rückgabetyp (C++14)
  • Lambdas (C++11)
    • Grundlagen
    • Generische Lambdas (C++14)
    • Erweiterte Captures (C++14)
  • Standard Template Library
    • Iteratorkonzept
    • Container (z.T. C++11)
    • Funktionen (z.T. C++11)
    • Concurrency-Intro (C++11) (*)
  • Meta-Programmierung
    • Den Compiler rechnen lassen (*)
    • Typinformationen bereitstellen
    • Const-adaptive Klassen (*)
    • Expression Templates

(*) Diese Themen werden bei Dreitageskursen weggelassen oder extrem gekürzt. Die anderen Themen werden in solchen Kursen auch weniger detailliert diskutiert.

Kostenloses Consulting

Als extra Serviceleistung möchte ich Ihnen anbieten, bei Interesse und Nichtverletzung von Betriebsgeheimnissen Ihre eigene Software zu diskutieren und zu überarbeiten (soweit es der zeitliche Rahmen erlaubt). Dabei soll es nicht darum gehen, das vollkommene Programm zu entwickeln sondern am konkreten Beispiel verschiedene Implementierungsvarianten zu betrachten und deren Vor- und Nachteile zu diskutieren. (Nicht für Dreitageskurse angeboten.)

Dozent

Dr. Peter Gottschling ist Autor der Matrix Template Library 4, Koautor der Boost Graph Library und einer Reihe anderer Bibliotheken. Er war (der letzte) Leiter der deutschen Delegation im ISO-Komitee zur Standardisierung von C++ und stellvertretender Obmann des Arbeitsausschusses Programmiersprachen im DIN. Er ist Geschäftsführer der SimuNova und hat C++ an der TU Dresden, der TU Berlin und der Indiana University gelehrt. Zur Zeit arbeitet er an einem Buch "C++ für Wissenschaftler".

Preis

Regulär: 1500€

Frühbucherrabatt: 1400€

Im Preis enthalten sind: Kursmaterial, Pausen- und Mittagsverpflegung, Zertifikat

  • Zuzüglich 19% USt.

  • Gruppenpreise auf Anfrage

Anmeldung

Gehen Sie zur Registrierung bitte auf die Haupt-Trainings-Seite.

Die Kurse finden bei SimuNova in Leipzig, am Nordplatz 9 statt.

© 2017 SimuNova UG