---
title: Einleitung
chapter: grundlagen
part: 0
subtitle: Hallo Welt!
---

Jeder, der schonmal eine Programmiersprache lernen wollte, kennt diese zwei Worte.

> "Hallo Welt!"

Die Ausgabe dieser Zeichenfolge oder des englischen Äquivalents wird meist das Minimalbeispiel für eine Programmiesprache gezeigt.

Aber was braucht es eigentlich dafür, diesen simplen Satz anzuzeigen?
Auf Papier wäre das ganze trivial, es braucht einen Stift und ein paar gekonnte Handbewegungen.
Doch ein Prozessor kennt keine Handbewegungen. Und unsere Digitaltechnik kennt auch keine Buchstaben oder das Konzept davon.
Das einzige, was es gibt, ist "an" (1), "aus" (0) und Logik, die diese Zustände verknüpft.
Gehen wir also durch, was alles überhaupt passieren muss, damit diese zwei Wörter auf dem Bildschirm erscheinen können:

1. Wir müssen einen Programmcode schreiben, welcher aussagt, diese beiden Worte auszugeben.
2. Der Programmcode muss in ein Format kodiert werden, welches unsere Maschine lesen kann.
3. Der Maschine muss der Befehl gegeben werden, als nächstes unser kodiertes Programm auszuführen.
4. Die Ausgabe des Programmcode wird visuell auf dem Monitor angezeigt.

Das klingt erstmal ganz einfach. 
Aber sobald man etwas tiefer geht, stellen sich viele Fragen:

- Wie kann ein Programm überhaupt beschreiben, dass Buchstaben ausgegeben werden, wenn nur Einsen und Nullen existieren?
- Wie kodieren wir denn etwas für eine CPU? Und in welchem Format?
- Wie und woher wird unser Programm den aufgerufen?
- Wie entscheidet sich, wann unser Programm ausgeführt wird? Unser Prozessor muss ja auch einen Desktop anzeigen und vieles mehr.
- Wie landen unsere Buchstaben auf dem Display? Und wie redet der Prozessor mit dem Display?
- ...

Mich selbst fasziniert die Welt der Digitaltechnik und daher habe ich mich entschlossen, einfach mal meinen Abstieg ins Hasenloch schriftlich festzuhalten, für alle die folgen wollen.

## Über den Autor

Vielleicht sollte ich mich erst einmal vorstellen.
Hallo, ich bin Daniel.
Ich habe Informationssystemtechnik studiert und habe Programmieren auch schon vorher als Hobby genannt.

Was habe ich für Qualifikationen, dass du ausgrechnet diese Seiten lesen solltest?
Nun – keine besonderen.
Ich habe keine Zertifikate, keine Lehrberechtigung und habe auch keine öffentlichen großen Projekte vorzuweisen, die man kennt.
Was ich allerdings habe, ist eine langjährige Leidenschaft für die verschiedensten Themen im Bereich Informatik.
Auf meiner [Startseite](/) hab ich auch mal versucht aufzulisten, in welchen Themengebieten ich mich schon verloren habe.
Einzig und allein das ist letzlich meine Motivation, dies hier anzugehen.

Zum Programmieren lernen gibt es schon viele Ressourcen in jeder Sprache.
Warum noch eine schaffen?  
Aus persönlichem Anreiz. 
Und das Folgende ist auch eine rein persönliche Sichtweise.
Gerade im Bereich der Informatik ist mir schon häufig aufgefallen, dass Lernressourcen gerne zeigen, wie man etwas _macht_, aber viel zu selten, wie es _funktioniert_.

Machen wir das mal an einem Beispiel, das greifbarer ist:  
Ein Lied auf einem Klavier lernen und spielen kann prinzipiell jeder nach kurzer Zeit.
Um eigene Melodien zu kreieren, die gut klingen, braucht es aber Hintergrundwissen.
Tonalitäten, Taktarten, Akkorde – nur um mal die wenigen Begriffe in den Raum zu werfen, die ich kenne.
In einer Band muss man dann sogar Rücksicht auf andere Leute nehmen.
Und je mehr man sich mit dem Thema Musik und allem drumherum beschäftigt, desto besser wird man.

Sehr ähnlich verhält sich damit dem Programmieren:  
Ein Programm für sich zu schreiben, um bspw. eine Aufgabe zu automatisieren, geht super schnell und ist überhaupt nicht schwer, wenn man etwas Zeit reinsteckt.
Und selbst ohne Zeit ist die Wahrscheinlichkeit heuzutage hoch, dass man mit nettem Fragen eine KI dazu bekommt, den erforderlichen Code nebst Anwendungsdokumentation auszuspucken.
Wenn das eine einmalige Sache bleiben soll, kann man in diesem Moment auch aufhören.
Aber um programmieren zu lernen, muss das gewonnene Wissen auch verstanden und verinnerlicht werden.
Und dazu gehört auch zu verstehen, was der Code eigentlich an welcher Stelle macht.
Häufig ist es sogar wichtig zu wissen, was man explizit nicht machen sollte, besonders für sicherheitskritische Anwendungen.
Nur so kann man am Ende Code schreiben, der lesbar und wartbar ist und natürlich funktioniert.
Das ist besonders wichtig, wenn man nicht die einzige Person ist, die jemals mit diesem Code arbeitet.
Wenn man dann noch die Hintergründe versteht, wie so ein Prozessor oder ein Betriebssystem überhaupt funktionieren, hat man den praktischen Teil der Informatik eigentlich auch schon durchgespielt.
Dafür lohnt sich dann aber vielleicht doch schon das Studium.

Mein Ziel für diesen Blog ist es, die Leser auf ihrem Wissensstand abzuholen.
Wenn kein Wissen da ist, kein Problem; dann fängt man einfach ganz vorn an.
Dich langweilt Gerede über Kontrollfluss und objektorientierte Programmierung? Vielleicht gibt's ja am Ende ein paar Themen, die dich interessieren.
Vor allem aber möchte ich, dass auch das Niveau des Textes auf einem greifbaren Level bleibt.
Alles perfekt präzise auszudrücken ist vielleicht akademisch besser, aber ich möchte hier praktische Informatik zeigen, keine Paper schreiben.

## Bereit loszulegen?

Während ich diesen ersten Eintrag schreibe, ist die ganze Seite noch im Aufbau. 
Aber ich bin mir sicher, jemand baut hier eine schöne Navigation hin...
