Programmiersprachen
C++
Standard: ISO/IEC 14882
Informationen zum neuen Standard gibt es
- isocpp.org
-
Nachrichten, Status und Diskussion über Standard C++ von der non profit Organisation Standard C++ Foundation aus Washingten/USA
- Heise: C++23: Der neue C++-Standard ist fertig
-
nennt die historischen C++-Standards
- Heise: Ausblick auf C++14
- Working Draft, Standard for Programming Language C++ 28.2.2011
- JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP
- Wikipedia über C++0x
- Bjarne Stroustrup: "A Brief Look at C++0x"
- Bernhard Merkle: "Ausblick auf den neuen C++-Standard C++0x"
- Apache C++ Standard Library Wiki
- mit Überblick Compiler mit C++-0x
Links
- hybrid prozedural und objektorientiert
C++ versteht sich als besseres C und ist zum größten teil aufwärtskompatibel
- Mit den template-Mechanismus ist generische Programmierung ein weiteres
Paradigma von C++ (vgl. Alex Stepanov-Interview)
- Anwendungsgebiete
- Systemprogrammierung
- Technisch/wissenschaftlich
- Textsatzsysteme (SGML)
Es gibt auch ein EC++ für eingebettete Systeme
Charakteristik
- Mit C++ kann man Hardwarenah (Zeiger!) programmieren und gleichzeitig Abstraktionen aufbauen.
- Es ist eine minimale Sprache
- Es gibt nur ein minimales Laufzeitsystem
- vgl C
- dunkle Ecken
-
- template-mechanismus
- Ersatz von Präprozessor, mit dem großen Vorteil der Typprüfung
- Nebenläufigkeit/Threads
- es gehört nicht zur Sprache an sich, durch die leichtgewichtigkeit der Sprache kann man das in Bibliotheken machen. Die Implementierung des Exception-Mechanismus muß aber auf Koordinierungsmachanismen der Threadimplementierung aufbauen.
Einsatzzweck
- Implementierung von Betriebssystemen,Datenbanken,Netzwerke, Compiler, Guis usw. also elementare Systemprogrammierung.
- Man kann Systemeigenschaften gut ausnutzen, ist aber deshalb nicht portabel
- Zur Anwendungsprogrammierung ist diese Sprache nur bedingt geeignet. Die Abstraktionen lassen sich zwar aufbauen, aber die Zeigerarithmetik ist gefährlich und es ist eine Kunst, die Speicherverwaltung richtig zu machen.
Sprachkonstrukte
- Es gibt einen Präprozessor
Im wesentlichen nutzt man diese um die Klassendefinnitionen zu den Implementierungen zu kombinieren, damit eine Implementierung mehrere Klassendefinitionen sehen kann. d.h. eine Klassendefinition wird mehrfach gelesen (Kritik!)
Die sonstigen Zwecke wir Macros usw. sind durch die templates,inline-funktionen und Konstantendeklarationen zurückgedrängt worden.
Der Präprozessor gehört eigentlich nicht zur Sprache selber, und kann auch für andere Zwecke eingesetzt werden.
Präprozessor Tutorial
- Enumeration declaration
C++11
- Blog Modernes C++
- Modernes C++ in der Praxis
- C++ Tutorial
Programmierbeispiele:
- Aktives Objekt
- Conditionvariable
Konstrukte
- Enumeration declaration
- Type Safe Enum
- More C++ Idioms
- Lambda Functions in C++11, auch "closure" genannt
-
C++20
- Programmiersprache: Der Entwurf von C++20 ist abgeschlossen
- C++ Draft auf GitHub
Bibliotheken
(Nur solche, die im weiteren Sinne zur Sprache hinzugehöhren)
- libstdc++ vom gcc, implementiert auch die STL
- Cathlib eine alte Implementierung für einen speziellen Cfront-Compiler.
STL
- STL Standard Template Library
- Es gibt hier Container, Iteratoren und Algorithmen auf Container
- cplusplus.com: Standard C++ Library reference
- stlport.org
- Multi-Platform-Standard-Implementierung der Standard Template Library
- Phil Ottewells STL-Tutorial
- ein kurzer und knackiger Rundgang durch die STL
- Streams
- Beispiel Nutzung
- The C++ Standard Library Tutorial
Threading
- Lebenszeit von Threads
- erklärt join und detach in der C++-11 API
Freie wiederverwendbare C++-Bibliotheken, die gut mit der STL zusammenarbeiten. Manche APIs werden standarisiert.
Die Boost C++-Bibliotheken sind eine Beschreibung
Insbesondere interessant ist:
- Boost memory
-
Hier gibt es Alignment, Pool , ...
- Thread
-
- Chrono
-
- Lockfree (LockFree)
- Lookfree - Container
- Date-Time
- asio
-
asynchrone IO mit sockets
- Lockfree (LockFree)
- Lookfree - Container
- UUID-Erzeugung
Links
- C++-Programming Howto
- beschreibt wichtige Aspekte der Programmierung mit C++ auf verschiedenen Architekturen, beschreibt Anlehnung an Java usw.
- Yahoo zu C/C++
-
- C++-Resources
von accu.org, der Association der C/C++-Programmierer
-
- C++.com
- Hier gibt es ein Tutorial und viel hilfreiches zum Thema C++
- C-Report ein kommerziellens C/C++-Portal
-
- c++-faq-lite
- scheint aus den News comp.lang.c++ zu kommen
- C++ von Martin Kompf
- hat eine Reihe interessanter Tutorials zu C++
- Wikibook C++-Programmierung
Regeln für sicheres Programmieren
- Secure Coding
- HIC++ High Integitry Coding standard (Heise)
Muss extra angefordert werden, angeblich Datenübertragung ohne https, Datensammlung aus Indien ?
Hilfe zum Verständnis sprachlicher Konstrukte
Verstehen von C/C++-Typdeklarationen :
C++ liest man von rechts nach links
Kleine Lektionen von Überraschungen
Hier werden Kuriositäten gesammelt, bei denen sich der jeweilige Autor
gewundert hat:
Weiteres zu Sprachkonstrukten:
C++ - Optimierungen:
- Return Value Optimization
-
Bei Aufruf eines Konstruktors bei return werden keine Kopiervorgänge ausgeführt
Compiler
- GCC GNU Compiler Collection
- ein sehr portabler C++-Compiler (und andere)
Online Docs
- Clang [WP]
-
modularer Compiler, geeignet für Entwicklungsumgebungen
baut auf LLVM
Internatas
C++ und CORBA
C++ war die erste Sprache, daher ist auch die IDL C++ ähnlich:
C++ _ Language Mapping
FAQ
- Unterschied zwischen C/C++ ?
- C++ unterstützt die objektorientierte Programmierung, d.h ein ganz anderes Programmierparadigma ...
- Ist C++ langsamer als C ?
- Nein, nicht unbedingt. Man muß aber sehr sorgfältig programmieren und die
dunklen Ecken sehr gut kennen (z.B. Aufruf der Konstruktoren).
(vgl auch Fiasco-FAQ)
- Ich will C/C++ lernen ...
- Es kommt auf das Anwendungsgebiet an. Wenn es nicht um System- oder Hardwarenahe Sachen geht, so ist Java meist besser geeignet.
Inspiration für Innovationen
- OpenC++
- Quelle zu Quelle Übersetzer zur Entwicklung von
- C++-Spracherweiterungen
- Anwendungsspezifische Optimierer und
- Laufzeit-Metaobjekt-Protokolle.
- andere Projekte, die einen C++-Parser und statischen Analysierer
brauchen
Apologie
- Sichere Programmiersprachen: Bjarne Stroustrup reagiert auf NSA-Empfehlung 23.1.2023
-
P2687R0
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber