Inital commit of Astro Website
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
---
|
||||
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...
|
||||
Reference in New Issue
Block a user