Erste Grundbegriffe der C++ -Programmierung
Programmiersprachen
Eine Programmiersprache legt fest, was ein Programm ist (Syntax ) und was es bedeutet (Semantik ).
C++
C++ ist eine Programmiersprache.
Ein C++-Programm ist ein Text, der gemäß den Regeln der Programmiersprache C++ ein Programm ist. Weil ein C++ -Programm ein Text ist, können C++ -Programme mit allen Programmen bearbeitet werden, welche die Bearbeitung eines Textes erlauben, und als Textdateien gespeichert und be- und verarbeitet werden.
Ausführung von Programmen
Ein Programm auszuführen, bedeutet, das zu tun, was das Programm gemäß den Regeln seiner Programmiersprache verlangt.
Programmieren ist das Schreiben von Textdateien, die dann einen Computer steuern können.
Implementationen
Eine C++-Implementation ist etwas, das C++ -Programme gemäß den Regeln der Programmiersprache C++ ausführen kann. Falls es verständlich ist, daß von einer C++ -Implementation gesprochen wird, so kann auch einfach nur die Bezeichnung Implementation verwendet werden.
Ein C++ -Programm wird von einer C++ -Implementation vor der Ausführung auf Fehler geprüft und für die Ausführung vorbereitet. Dafür zuständig ist ein Programm, welches Compiler oder Übersetzer genannt wird.
Die Spezifikation der Sprache C++
Die ISO -Norm “ISO/IEC 14882:2017 ” (Abstimmungsergebnis Juli 2017, Veröffentlichung Dezember 2017) ist die maßgebliche Spezifikation (also „Festlegung“, „Bestimmung“) der Programmiersprache C++.
Die Spezifikation einer Programmiersprache beschreibt die Syntax und die Semantik jener Programmiersprache.
Diese Norm kann bei der ISO und anderen Anbietern erworben werden.
Im Web finden sich Entwürfe auf »isocpp.org«.
Die Bedeutung von Begriffen in Zusammenhang mit der Programmiersprache C++ wird durch die ISO/IEC 14882:2017 festgelegt,
Die C++-Norm ISO/IEC 14882:2017 bezieht sich ausdrücklich auch auf die ISO/IEC 2382 zu Begriffen der Informationstechnologie als „normative Quelle“.
- Zitat aus C++14 (gekürzt und überarbeitet)
- 1.2 Normative references
Die Hauptteile einer ISO-Norm werden Klauseln genannt. (Das im englischen Original verwendete Wort “clause ” könnte aber auch mit „Bestimmung“, „Absatz“ oder „Paragraph“ übersetzt werden.)
Hier nennen wir alle Unterteilungen, einschließlich der Klauseln, „Abschnitte “. Der oben zitierte Abschnitt ist also der (Unter-)Abschnitt 2 des Abschnitts 1.
- Entwürfe
Datum Name revises Ziel oder ähnlich zu
date name revises comments (target, similarity)
2020 (fut.) 14882,6 14882,5 C++20
2020-01-14 n4849 n4842 C++20
2019-11-27 n4842 n4835 C++20
2019-10-08 n4835 n4830 C++20
2019-08-15 n4830 n4820 C++20
2019-06-17 n4820 n4810 C++20
2019-03-15 n4810 n4800 C++20
2019-01-21 n4800 n4791 C++20
2018-12-07 n4791 n4778 C++20, draft now with Ranges
2018-10-08 n4778 n4762 C++20
2018-07-07 n4762 n4750 C++20
2018-05-07 n4750 n4741 C++20
2018-04-02 n4741 n4727 C++20
2018-02-12 n4727 n4713 C++20
2017-11-27 n4713 n4700 C++20
2017-12 14882,5 14882,4 C++17= approved 2017-09-06
2017-10-16 n4700 n4687 C++20
2017-07-30 n4687 n4659 C++20
2017-03-21 n4660 - C++17*
2017-03-21 n4659 n4640 C++17*
2017-02-06 n4640 n4618 C++17
2016-11-28 n4618 n4606 C++17
2016-07-12 n4606 n4594 C++17
2016-07-12 n4604 - C++17
2016-05-30 n4594 n4582 C++17
2016-03-19 n4582 n4567 C++17
2015-11-09 n4567 n4527 C++17
2015-05-22 n4527 n4431 C++17
2015-04-10 n4421 n4296 C++17
2014-12-15 14882,4 C++14= (saw it only in 2015-01!)
2014-11-19 n4296 n4140 C++17
2014-10-07 N4140 N3936 C++14*?
2014-09-02 n4141 - C++14*
2014-03-02 N3936? N3797 C++14
2013-10-13 N3797 N3691 C++14
2013-05-16 N3691 N3485 C++14
2013-05-15 N3690 - C++14
2013 TCPL4 ISBN 0-321-56384-0
2012-11-02 n3485 n3376 C++14
2012-02-28 n3376 n3337 C++14
2012-01-16 n3337 n3291 C++11 github
2011-09 14882,3 C++11=, approved 2011-08-12
2011-04 n3291 N3092? C++11*
2011-04-11 n3290 C++11*
2010-03-26 n3092 C++1x
2008-10-08 n2800 C++1x
2007-10-22 n2461 C++0x
2006-11-06 n2135 C++0x
2005-10-19 n1905 C++0x
2005-04-27 N1804=05-0064 C++0x
2004-11-05 N1733=04-0173 C++0x
2004-05-19? N1655=04-0095 C++0x
2004-04-11 N1638=04-0078 C++0x
2004-02-06? N1577=04-0017 C++0x
2004 2004 Performance TR (ISO/IEC PDTR 18015)
2004 2004 Library extension TR1 (ISO/IEC PDTR 19768)
2003-10-15 14882,2 C++98, 2nd Ed
2000 TCPLS ISBN 0-201-70073-5
1998-09-01 14882,1 C++98, 1st Ed, ANSI approval 1998-07-27
1997 TCPL3 ISBN 0-201-88954-4
1991 TCPL2 ISBN 0-201-53992-6
1991 Cfront 3.0
1990 ARM ISBN 0-201-51459-1
1990 ANSI committee
1989 Cfront 2.0
1987 Cfront 1.2
1987 GNU C++ (first)
1985/6? TCPL1 ISBN 0-201-12078-X
1986 Cfront 1.1
1985 Cfront 1.0
1984 Ref man C with classes
1982 Ref man C with classes
1979 impl1 C with classes
- Quellen für aktuelle Entwürfe
isocpp.org/blog/category/standardization
github.com/cplusplus/draft
github.com/cplusplus/draft/raw/master/papers/n4762.pdf
raw.githubusercontent.com/cplusplus/draft/master/papers/n4762.pdf
www.open-std.org/jtc1/sc22/wg??/docs/papers/2018/
wg??.link/standard
wg??.link
- Quellen für Stilregeln
The core guidelines
Die Beziehung zur Sprache C
Die C++-Norm bezieht sich ausdrücklich auch auf die ISO/IEC 9899 zur Programmiersprache C.
- Zitat aus C++ (gekürzt und überarbeitet, Stand 2014)
- 1.2 Normative references
- — ISO/IEC 9899:1999, Programming languages — C
- — ISO/IEC 2382, Information technology — Vocabulary
- The library described in Clause 7 of ISO/IEC 9899:1999 is hereinafter called the C standard library.
Ein Entwurf der C -Norm von 1999 heißt »n1256«, spätere Entwürfe sind »n1570« und »N2176«.
Die Programmiersprache C++ entstand als eine Erweiterung der Programmiersprache C. Deswegen ist es auch heute noch möglich, viele C -Programme auch als C++ -Programme anzusehen. Zusätzlich zu den Sprachelementen der Programmiersprache C umfaßt C++ unter anderem auch noch
- Klassen,
- Schablonen,
- Überladung,
- Lambda-Ausdrücke,
- Referenzen und diverse andere Erweiterung.
(Die eben genannten Begriffe können an dieser Stelle aber noch nicht erklärt werden.)
Bibliotheken
Eine Sammlung von Programmen (oder von Programmteilen) wird auch Programmbibliothek (kurz: Bibliothek) genannt.
Die Standardbibliothek einer Programmiersprache ist eine Bibliothek, deren Vorhandensein bei Verwendung dieser Programmiersprache immer vorausgesetzt werden kann, sie gehört praktisch zur Programmiersprache.
Eine Zusatzbibliothek ist eine Bibliothek, die unter Umständen zusätzlich bereitgestellt werden kann, aber deren Erhältlichkeit oder Verwendbarkeit nicht immer sichergestellt ist.
Die Ausführungsumgebung
Die Ausführungsumgebung (kurz: Umgebung) eines C++ -Programms ist die C++ -Implementation, unter der es läuft (einschließlich ihres Betriebssystems, anderer installierter Software, der Einstellungen und aller Zustände und Umstände zum Zeitpunkt der Ausführung).
Schritte beim Herstellen eines Programms mit C++ ⃗
C++-Quelltext ist das von einem Programmierer in der Sprache C++ geschriebene Programm.
Der Prozessor in einer C++ -Implementation kann Programme ausführen. Er kann aber nur sogenannte ausführbare Programme ausführen, keine Quellcode. Daher muß vor der Ausführung aus dem Quellcode ein ausführbares Programm hergestellt werden.
Ein ausführbares C++ -Programm wird in der Regel in mindestens zwei Schritten hergestellt.
Zunächst einmal wird der Quelltext vom Compiler geprüft und in eine besondere Darstellung, den sogenannten Objektcode, übersetzt. Solch ein Quelltext, der vom Compiler als eine Einheit übersetzt wird, wird auch als eine Übersetzungseinheit bezeichnet.
Danach wird ein anderes Programm, der Binder, verwendet, um den Objektcode mit den darin verwendeten Teilen von Bibliotheken zu verbinden und aus dieser Verbindung ein ausführbares Programm zu erzeugen, welches dann gestartet werden kann.
Die C++ -Implementation besteht aus allem, was nötig ist, um ein in C++ geschriebenes Programm zu starten. Sie umfaßt daher den Compiler, den Binder, das Betriebssystem und den Prozessor. Schon wenn Einstellung dieser Dinge verändert werden, die sich auf die Ausführung des Programms auswirken könnten (beispielsweise Compileroptionen), so wird dadurch eine andere C++ -Implementation festgelegt, dies geschieht aber erst recht beim Wechsel des Compilers, Binders, Betriebssystem oder Prozessors.