C
Einführung in C – Über 50 Jahre alt und steckt in allem, was du benutzt
Einführung in C – Über 50 Jahre alt und steckt in allem, was du benutzt
Mach dir kurz bewusst, was gerade passiert, während du diesen Text liest:
Dein Betriebssystem-Kernel? C. Der Interpreter, der PHP ausführt? C. Python? C. Die Datenbank hinter der Seite? C (oder C++). Der Webserver? C. Die SSL-Bibliothek, die die Verbindung verschlüsselt? C.
C ist über 50 Jahre alt – entstanden Anfang der 70er bei Bell Labs – und trotzdem läuft praktisch die gesamte moderne Software-Welt auf einem Fundament aus C.
Das ist keine Nostalgie. Dafür gibt es Gründe.
Was ist C überhaupt?
C ist eine kompilierte, systemnahe Sprache. „Systemnah“ heißt: sehr wenig Abstraktion zwischen deinem Code und der Maschine.
Das bedeutet:
- Der Code wird direkt zu Maschinencode kompiliert – keine VM, kein Interpreter
- Du verwaltest den Speicher selbst (
malloc/free) - Es gibt keinen Garbage Collector, keine Laufzeitumgebung, fast keinen Overhead
Klassisches Beispiel:
#include <stdio.h>
int main(void)
{
printf("Hallo Welt!\n");
return 0;
}Kompilieren, ausführen, fertig. Das Programm ist ein paar Kilobyte groß und startet in Mikrosekunden.
Warum C so lange überlebt hat
Drei Gründe, und keiner davon ist Zufall:
- C ist die Lingua franca der Systeme. Praktisch jedes Betriebssystem spricht C. Wenn zwei Sprachen miteinander reden wollen (FFI), tun sie es fast immer über C-Schnittstellen.
- C ist klein. Die ganze Sprache passt in ein dünnes Buch. Keine 15 Wege, dasselbe zu tun.
- C ist ehrlich. Nichts passiert hinter deinem Rücken. Jede Speicheranforderung, jede Kopie, jeder Zugriff steht im Code.
Genau diese Ehrlichkeit macht C als Lernsprache so wertvoll: Wer C verstanden hat, versteht, was malloc kostet, was ein Pointer ist, warum Strings in anderen Sprachen unveränderlich sind – kurz: was die komfortablen Sprachen einem eigentlich abnehmen.
Wo C heute im Einsatz ist
C ist kein Museum. C wird aktiv geschrieben:
- Betriebssysteme: Linux-Kernel, Windows-Kernel-Teile, macOS-Unterbau
- Embedded Systems: Mikrocontroller in Autos, Waschmaschinen, Herzschrittmachern – Milliarden Geräte
- Interpreter und Runtimes: CPython, PHP, Ruby, große Teile von Node/V8-Umfeld
- Datenbanken: PostgreSQL, SQLite, Redis
- Alles mit harten Ressourcen-Limits: IoT, Echtzeit-Systeme, Treiber
SQLite ist übrigens die wahrscheinlich am weitesten verbreitete Software der Welt – jedes Smartphone hat sie mehrfach installiert. Geschrieben in C.
Die dunkle Seite: C verzeiht nichts
Jetzt der Teil, den man nicht verschweigen darf.
C gibt dir volle Kontrolle – und volle Verantwortung:
- Vergisst du
free, leakt der Speicher - Schreibst du ein Byte über das Array-Ende, hast du undefined behavior – vielleicht ein Crash, vielleicht ein stiller Datenfehler, vielleicht eine Sicherheitslücke
- Es gibt keine Exceptions, keine Bounds-Checks, kein Sicherheitsnetz
Ein Großteil aller schweren Sicherheitslücken der letzten Jahrzehnte (Buffer Overflows, Use-after-free) geht auf genau diese Eigenschaften zurück. Das ist auch der Grund, warum für neue Systemprojekte heute oft Rust diskutiert wird – dazu an anderer Stelle mehr.
Für Anwendungsentwicklung – Webseiten, APIs, Business-Logik – ist C schlicht das falsche Werkzeug. Dafür gibt es PHP, Java, C# und Co., und das ist gut so.
Warum sich C lernen trotzdem lohnt
Meine These: Ein paar Wochen C machen dich in jeder anderen Sprache besser.
Weil du danach verstehst:
- Was ein Typ wirklich ist – nämlich eine Information, wie Bytes zu interpretieren sind
- Was Speicher kostet und wo er liegt (Stack vs. Heap)
- Was ein Pointer ist – und damit, was „Referenz“ in Java, PHP oder C# eigentlich bedeutet
- Warum Strings kompliziert sind
- Was der Garbage Collector die ganze Zeit für dich wegräumt
Das ist wie Schaltgetriebe fahren lernen: Danach weiß man, was die Automatik tut.
Für wen eignet sich C heute?
Meiner Meinung nach besonders für:
- Embedded- und Mikrocontroller-Entwicklung (Arduino & Co. sind ein toller Einstieg)
- Systemprogrammierung, Treiber, Betriebssysteme
- Performance-kritische Bibliotheken, die von anderen Sprachen genutzt werden
- Alle, die verstehen wollen, was unter der Haube passiert
Und ausdrücklich nicht für: Webanwendungen, Business-Software, alles mit Deadline und wechselnden Anforderungen.
Mein persönlicher Eindruck
C ist die Sprache, die ich niemandem als Alltagswerkzeug empfehlen würde – und trotzdem jedem als Lernerfahrung.
Es gibt einen Moment, in dem man zum ersten Mal versteht, dass ein String nur Bytes im Speicher sind und ein Pointer nur eine Adresse. Ab da liest man jede andere Sprache mit anderen Augen.
Und der Respekt vor den Leuten, die den Linux-Kernel oder SQLite pflegen, wächst ungefähr um den Faktor hundert.