Einführung in C – Über 50 Jahre alt und steckt in allem, was du benutzt

Warum C nach einem halben Jahrhundert immer noch das Fundament der gesamten Software-Welt ist – und warum es sich lohnt, die Sprache zu verstehen, selbst wenn man nie beruflich C schreibt.

C

Einführung in C – Über 50 Jahre alt und steckt in allem, was du benutzt

Marcel Strahl4 Min. Lesezeit

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:

  1. 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.
  2. C ist klein. Die ganze Sprache passt in ein dünnes Buch. Keine 15 Wege, dasselbe zu tun.
  3. 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.

  • 5 Min. LesezeitC

    C-Grundlagen Teil 2 – Typen in C verstehen

    int, char, float, double und die Wahrheit über Strings: Warum Typen in C nur eine Anleitung zum Interpretieren von Bytes sind – mit Übungsaufgaben zum Selbermachen.

    • #C
    • #Grundlagen
    • #Tutorial
    • #Software-Entwicklung
    • #Systemprogrammierung
  • 6 Min. LesezeitRust

    Einführung in Rust – Was steckt wirklich hinter dem Hype?

    Rust wird seit Jahren zur beliebtesten Sprache gewählt und überall empfohlen. Ein ehrlicher Blick darauf, was davon berechtigt ist – und was nicht.

    • #Rust
    • #Software-Entwicklung
    • #Entwicklung
    • #Systemprogrammierung
    • #Backend
  • 5 Min. LesezeitRust

    Rust-Grundlagen Teil 2 – Typen in Rust verstehen

    Unveränderlichkeit als Standard, keine impliziten Umwandlungen, Option statt null und der Unterschied zwischen &str und String: die Grundlagen des Rust-Typsystems – mit Übungsaufgaben zum Selbermachen.

    • #Rust
    • #Grundlagen
    • #Tutorial
    • #Software-Entwicklung
    • #Systemprogrammierung