| Die Programmiersprache C/C++ ist der Klassiker, an dem alle neueren Sprachen gemessen werden. | In der Praxis wird C/C++ vorwiegend im professionellen Bereich verwendet, und zwar für zeitkritische Aufgaben, die mit maximaler Geschwindigkeit ausgeführt werden sollen.. |
| Geschichte | Die Entwicklung von C und C++ |
| Stichworte | Compiler, Linker, Bibliotheken, Anwendung, Verbreitung, ... |
| Elemente | Bekannte und gefürchtete Elemente von C++: Pointer, Klassen, ... |
| Entwicklung | Compiler, Linker und IDE |
| C/C++ Themen auf anderen Seiten dieses Webs: | |
| Compiler | Ausrüstung zum Programmieren mit C/C++ |
| Ausgabe | Funktion printf() für wenig geübte und fortgeschrittene EntwicklerInnen |
| BitLevel | BitLevel-Operatoren NOT, AND, OR, SHIFT, 2er-Komplement |
| Datum & Zeit | <time.h>, Objekte, Strukturen und Funktionen |
| Ganze Zahlen | Abschneiden, Runden, Modulo (Rest) |
| Grafik | Erzeugung von Pixel- und Objekt-Grafik |
| System | System-(Konsolen)-Befehle ausführen, Antwort-Text analysieren |
| Umgebung | Umgebungs-Variable, Argumente (CLI, GET, POST) |
| XML | Erzeugung 'Interlligenter' Text-Produkte: HTML, XML, SVG, ... |
| Zufallsfolgen | Erzeugung von Zufallszahlen und -Zeichen für verschiedene Anforderungen |
| Beispiele | Bernoulli-Zahlen, Binomial-Koeffizienten, Exponential-Funktion, Fakultät, Fibonacci-Folge, Julia-Funktionen, Kartografie (UTM-Längen-Zone), Legendre-Polynome, Mandelbrot-Funktion, Reihen-Entwicklungen (ArcusTangens, Cosinus, Sinus, Quadratwurzel) |
| Links |
|
Die Entwicklung von C und C++ |
|
Die Sprache C wurde von
Dennis Ritchie (Bild) in Zusammenarbeit mit
Brian Kerninghan (rechts) in den AT&T Bell Labs entwickelt. Das Ziel war eine
Programmiersprache für das Betriebssystem UNIX. Heute sind C und seine
Nachfolge-Versionen auf allen Betriebssystemen verfügbar.Der Name "C" bezeichnet die Programmiersprache als Nachfolger von "A" (APL) und "B" (BCPL), die beide bedeutungslos blieben. Die Programmiersprachen C und C++ sind frei und können ohne Lizenz verwendet werden. |
●
1978 erschien das klassische Buch 'The C Programming Language'
von Kernighan (rechts) & Ritchie, in dem die Sprache
öffentlich vorgestellt wurde.Dieses Buch ist bis heute ein Beispiel für eine hervorragende technische Publikation. Auf nur ca. 200 Seiten wird ein bestechend klares Konzept vorgestellt. Das Buch ist unerwartet spannend und lesbar, ganz im Gegensatz zu ähnlichen Werken mit dem Unterhaltungswert von Telefonbüchern. Einige der im Buch vorgestellten Programm-Beispiele sind zu Klassikern der Programmier-Ausbildung geworden. Die Original-Version von 1978 ist als "K&R"-Version der Sprache C bekannt und wird heute in dieser einfachen Form kaum mehr verwendet. |
●
1979 begann Bjaarne Stroustrup (Bild Univ Texas) ebenfalls bei AT&T Bell Labs
die Fortsetzung und Erweiterung von C.Dabei wurde C um das Konzept der Objekt-Orientierten Programmierung (Klassen) erweitert. Diese Version ist als C++ (cpp) die Grundlage aller heute verwendeten Varianten von C. |
●
1985 erschien die erste kommerzielle Version von C++. ● 1988 publizierte Stroustrup das Buch "The C++ Programming Language" mit der öffentlichen Vorstellung der Objekt-orientierten Programmierung in C++. Die wesentlichen Elemente von C++ sind in allen modernen Programmiersprachen enthalten. Diese selbst (Compiler, Interpreter, Module, ...) sind übrigens fast ausschließlich in C++ programmiert. |
|
●
1988 wurde die Programmiersprache C erstmals international standardidiert.
Diese Version ist als ANSI C bekannt. Dabei wurden insbesondere die für C wichtigen Standard-Bibliotheken genau festgelegt. Kernighan & Ritchie gaben im gleichen Jahr eine 2. Auflage ihres Buchs unter Berücksichtigung von ANSI C heraus. ● 1989 erschien die Version 2 von C++ ● 1998 wurde C++ als Standard ISO/IEC 14882 definiert. |
●
1999 wurde C als Standard ISO/IEC 9899 definiert. Diese Version C99 ist die
Grundlage der heute verwendeten Sprache. ● 2000 wurde die C99 Version auch als ANSI definiert (ANSI C++ 3.0) ● 2003 erschien eine korrigierte Version des C++ Standards von 1998 |
| ● 2001 wurde von Microsoft die stark abgewandelte Variante C# (C Sharp) vorgestellt. Sie wurde für den internen Gebrauch entwickelt, um damit die Microsoft-eigene Programmiersprache .NET zu programmieren. |
Später wurde C# sogar von ECMA (ECMA-334) und ISO (ISO/IEC 23270)
standardisiert, erlangte jedoch (ebenso wie .NET) außerhalb der
Microsoft-Welt keine Bedeutung. ♣ Tipp: Sauber erstellte Programme in Standard C oder C++ laufen problemlos mit allen Compilern auf allen Betriebssystemen, auch auf Windows... |
Die Programmiersprache C / C++ |
|
| Heute wird nur mehr die C++ Version der Programmiersprache verwendet. Die Unterschiede zwischen C und C++ haben keine praktische Bedeutung mehr. | Alle weiteren Angaben dieser Seite (und der übrigen Webseiten zum Thema C) verwenden den Namen "C". Damit ist C++ in der aktuellen Version gemeint. |
CompilerC-Programme werden in Klartext (Quelltext, Source-Code) verfasst und in Dateien gespeichert. Daraus erstellt ein Compiler-Programm das lauffähige Programm in der Maschinensprache des jeweiligen Computers.Man benötigt daher zur Herstellung von C-Programmen einen Compiler. Die Compiler unterscheiden sich je nach Betriebssystem und sind nicht portabel. Jedes Linux System verfügt über einen C-Compiler, der nicht auf Windows übertragbar ist. Für Windows gibt es eigene (auch kostenlose) C-Compiler, die allerdings eine weit geringere Verbreitung haben als auf Linux. ♦ Details zu den Compiler-Themen GNU Compiler Collection (GCC, MinGW), Code::Blocks, Eclipse |
Die vom Compiler erzeugten Programme (Linux-Binaries, Windows *.exe) laufen nur auf jenen Betriebssystemen, für die sie erzeugt wurden. Ein typisches C-Programm muss daher mindestens für Linux und Windows getrennt compiliert werden, manchmal auch für einzelne Versionen aller gängigen Betriebssysteme. Der C-Quelltext ist allerdings sehr gut portabel. Man findet im Internet die Quelltexte unzähliger C-Programme, aus denen man am eigenen PC ein lauffähiges Programm compilieren kann. Diese Programme können mit zahlreichen Optionen, Modulen usw. genau an den jeweiligen Bedarf angepasst werden. Ein C-Programm kann je nach Bedarf auf maximale Geschwindigkeit oder minimale Größe optimiert werden und ist damit fertigen Einheits-Programmen weit überlegen. Das Compilieren erfordert allerdings einige Kenntnisse und ist für durchschnittliche Büro- oder Heim-AnwenderInnen nicht sinnvoll. |
PhilosophieDie Syntax von C ist einfach, klar und streng.● C trifft keine Annahmen: Die EntwicklerInnen müssen alle verwendeten Elemente ausdrücklich und genau deklarieren. Das gibt ihnen alle Möglichkeiten - auch jene der falschen Anwendung. Darin unterscheidet sich C wesentlich von den meisten modernen Programmiersprachen, die keine ausdrückliche Deklaration verlangen, die Typen von Variablen nach Ermessen festlegen und bei Bedarf ungefragt umwandeln. |
● C ist allgemein gehalten: Es sind keine Bestandteile enthalten, die an eine bestimmte Hardware oder an ein Betriebssystem gebunden sind. Solche Elemente können allerdings hinzugefügt werden. Dieses Konzept wird auch von allen anderen modernen Programmiersprachen eingehalten. ● C stellt keine Ansprüche. C-Programme laufen ohne weitere Maßnahmen auf dem jeweiligen Betriebssystem. In der Praxis wurden große Programme allerdings so entwickelt, dass sie sich auf andere Resourcen stützen, deren Installation vorausgesetzt wird. Die neueste Entwicklung verläuft wieder genau umgekehrt: Portable Programme (z.B. für USB-Stick) enthalten selbst alle benötigten Komponenten und laufen 'wirklich' unabhängig von allen anderen installierten Komponenten. |
VerbreitungDie Programmiersprache C/C++ ist heute für alle gängigen Betriebssysteme verfügbar. Sie wird vorwiegend im professionellen Bereich eingesetzt und gilt als schwieriger zu erlernen als z.B. Javascript oder PHP.Mit C/C++ kann man fast perfekt optimierten Code und daher besonders schnell laufende Programme erzeugen. Das rechtfertigt die höheren Kosten der C-Entwicklung überall dort, wo Programme rasch laufen müssen oder in großen Stückzahlen verwendet werden sollen: Mindestens die kritischen Komponenten von Betriebssystemen und Standard-Programmen (z.B. für den Office- oder Grafik-Bereich) werden in C++ entwickelt. |
AnwendungDie UNIX und Linux Betriebssysteme und die meisten darauf laufenden Programme sind fast auschließlich in C/C++ programmiert. Nur einige besonders kritische Teile sind direkt in Maschinensprache (Assembler) erstellt.Alle gängigen Linux Distributionen enthalten einen → C/C++ Compiler oder ermöglichen die Installation auf Knopfdruck. Auf Linux ist es für fortgeschrittene AnwenderInnen üblich, Programme oder Module aus dem C Quelltext zu compilieren. Das ist selbst für erfahrene Windows-AnwenderInnen kaum glaubhaft, jedoch relativ einfach. Wirkliche Gurus compilieren auch ihr eigenes Linux System 'Nach Maß'. |
BibliothekenC/C++ ist eine modulare Programmiersprache. Der Kern (Core) ist besonders schlank und schnell. Alle benötigten Funktionen werden in Form von Bibliotheken (Libraries) und Klassen ergänzt.Neben einer Reihe von standardisierten Bibliotheken (ANSI, POSIX) sind unzählige Bibliotheken für jeden denkbaren Zweck erhältlich, die meisten davon kostenlos. Der streng modulare Aufbau trägt wesentlich zur Sparsamkeit und Geschwindigkeit bei: Ein → Linker-Programm verpackt nur jene Teile der Sprache in das fertige Programm, die wirklich gebraucht werden (oder zumindest von der/dem EntwicklerIn angefordert wurden). Häufig verwendete Bibliotheken werden ständig weiterentwickelt, was Geschwindigkeit, Leistung und Sicherheit laufend verbessert. |
LinkerIn größeren Projekten werden mehrere Programm-Teile getrennt in Maschinensprache übersetzt (compiliert).Ein Linker ist ein Programm, welches derartige Teile zu einem lauffähigen Programm zusammensetzt. Oft wird diese Bezeichnung nicht getrennt verwendet, sondern in den Begriff (und in das Programm-Paket) des Compilers integriert. Interessant ist die Fähigkeit mancher Linker, compilierte Objekte verschiedener Programmiersprachen miteinander zu verknüpfen. Praktische Bedeutung hat z.B. die Verwendung von Fortran Programm-Bibliotheken für C-Programme erlangt. Umgekehrt bieten moderne Programmiersprachen die Möglichkeit, einzelne kritische Teile in C/C++ zu programmieren. |
ProgrammiersprachenDie Compiler- und Interpreter-Programme von Programmiersprachen sind selbst ausführbare Programme und müssen programmiert werden.Dazu wird in den meisten Fällen C/C++ verwendet. |
Alle modernen Programmiersprachen sind modular aufgebaut. Die zahlreichen Module (z.B. für Perl, PHP, ...) sind oft in C/C++ programmiert. Für EntwicklerInnen gibt es Baukästen (Toolkits, Solution Developer Kits SDKs, ...), mit denen man eigene Module selbst mit C/C++ programmieren kann. |
C/C++ Entwicklung |
|
CompilerDie Mindest-Ausrüstung zur Entwicklung mit C/C++ ist ein Compiler-Programm zur Übersetzung der selbst erstellten Quelltext-Anweisungen in ein ausführbares Programm. |
Es gibt heute gute kostenfreie Compiler für alle gängigen Betriebssysteme. ♦ Details zur Funktion eines Compilers, mit praktischen Beispielen |
Integrierte Entwicklungs-Umgebung (IDE)Compiler sind für wenig geübte AnwenderInnen nicht einfach zu bedienen. Zur Entwicklung verwendet man besser komfortable Programme mit grafischem User-Interface (GUI). |
Ein Integrated Development Environment (IDE) ist ein bequem bedienbares Programm
mit grafischen Fenstern. Es hilft, den Quelltext zu erstellen, den Compiler zu
bedienen und bietet zusätzlich einige praktische Werkzeuge. ♦ Details zu kostenfreien IDE Programmen für C/C++ |
C oder C++Gelegentlich wird die Frage diskutiert, ob man mit C oder C++ programmieren soll. Das ist kein wirkliches Problem: In der professionellen Praxis wird fast ausschließlich mit C++ programmiert - oder überhaupt in einer anderen Programmiersprache. |
In der Ausbildung führt kein Weg an der klassischen K&R-Version von C vorbei. Man kann nicht ernsthaft C++ programmieren, ohne C zu verstehen. |
|
|
Wikipedia:Programmiersprache C, The C Programming Language (Buch von Kernighan & Ritchie) Programmiersprache C++, The C++ Programming Language (Buch von Stroustrup) C# (C Sharp) |
C-Compiler (Windows)Borland C++ BuilderCode::Blocks (inkl. MinGW) GNU GCC-Compiler Microsoft Visual C++ |
|
C++ Entwicklung mit Linux (Thomas Wieland) Programmiersprache C/C++ (P. Böhme, Uni Halle/Wittenberg) |
Borland C++ Builder (Thomas Wieland - Grundlagen, Profi) |
|
cgihtml
- Bibliothek für CGI-Entwicklung cgic - OpenSource Bibliothek für CGI-Entwicklung von Boutell Visual C# 2005 Handbuch (Andreas Kühnel / Galileo) FHTW Berlin: Funktionen der Standard C Bibliotheken |
Homepages von
Brian Kernighan,
Dennis Ritchie,
Bjarne Stroustrup The Development of the C Language (Dennis Ritchie, en) |
|
|