85 lines
5.4 KiB
Plaintext
85 lines
5.4 KiB
Plaintext
---
|
||
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...
|