1.1 Einführung in C
- Aufgabe 1: Recherchieren Sie die Geschichte von C und erstellen Sie eine kurze Zeitlinie der wichtigsten Ereignisse.
- Aufgabe 2: Installieren Sie eine C-Entwicklungsumgebung (z.B. GCC und VS Code) und kompilieren Sie ein einfaches "Hello, World!"-Programm.
Aufgabe 1:
Die Entstehung von C ist eng mit der Entwicklung des UNIX-Betriebssystems verbunden. 1969 begannen Ken Thompson und Dennis Ritchie bei den Bell Laboratories mit der Entwicklung von UNIX. Zunächst wurde die Programmiersprache B verwendet, ein Vorläufer von C, die von Thompson entwickelt wurde.
1971 begann Dennis Ritchie mit der Entwicklung von C als Weiterentwicklung von B. Die wichtigste technische Neuerung war die Einführung von Datentypen und Strukturen. Im Gegensatz zu B, das nur einen Datentyp (das machine word) kannte, führte C verschiedene primitive Datentypen wie int, char, float sowie abgeleitete Typen wie Arrays und Pointer ein.
1973 war C soweit ausgereift, dass das UNIX-Kernel in C neu geschrieben werden konnte - ein revolutionärer Schritt, da Systemprogrammierung bis dahin hauptsächlich in Assembler erfolgte. C ermöglichte durch seine Nähe zur Hardware eine effiziente Systemprogrammierung bei gleichzeitiger Abstraktion und Portabilität.
1978 veröffentlichten Brian Kernighan und Dennis Ritchie "The C Programming Language", das als K&R C bekannt wurde. Dieses Buch definierte den ersten De-facto-Standard der Sprache und führte wichtige Konzepte ein:
- Standardbibliothek mit grundlegenden I/O-Funktionen
- Präprozessor-Direktiven (#include, #define)
- Strikte Typüberprüfung
- Strukturierte Programmierung mit Kontrollstrukturen
1989 wurde C durch das ANSI-Komitee standardisiert (ANSI C oder C89). Wichtige Neuerungen waren:
- Funktionsprototypen
- const und volatile Qualifier
- Standardisierte Headerdateien
- Erweiterte Typüberprüfung
1999 erschien der C99-Standard mit bedeutenden Erweiterungen:
- Inline-Funktionen
- Variable Length Arrays
- Complex-Zahlen als primitive Datentypen
- Einzeilige Kommentare (//)
- Erweiterte Integer-Typen (long long)
2011 wurde der C11-Standard veröffentlicht:
- Multithreading-Support (_Thread_local, <threads.h>)
- Atomare Operationen
- Unicode-Support
- Generic Selections (_Generic)
Die letzte große Revision ist C17/C18 von 2018, die hauptsächlich Korrekturen und Präzisierungen enthält.
C's Einfluss auf die Entwicklung der Informatik ist immens. Als "portable Assemblersprache" ermöglichte sie effiziente und gleichzeitig portable Systemprogrammierung. Moderne Sprachen wie C++, Java und C# basieren auf der Syntax und vielen Konzepten von C. Auch heute noch ist C wegen ihrer Effizienz und Hardware-Nähe die dominierende Sprache in der Embedded-Programmierung und Systementwicklung.
Aufgabe 2:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}