Was bedeutet Programmierung?

Programmierung ist der Prozess, einen Algorithmus zu nehmen und ihn in eine Notation, eine Programmiersprache, zu codieren, so dass er von einem Computer ausgeführt werden kann. Obwohl viele Programmiersprachen und viele verschiedene Arten von Computern existieren, ist der erste wichtige Schritt die Notwendigkeit, die Lösung zu haben. Ohne einen Algorithmus kann es kein Programm geben.
Informatik ist nicht das Programmieren. Programmieren ist jedoch ein wichtiger Teil dessen, was ein Informatiker tut. Programmierung ist oft die Art, wie wir eine Repräsentation für unsere Lösungen erstellen. Daher wird diese Sprachrepräsentation und der Prozess ihrer Erstellung zu einem grundlegenden Teil der Disziplin.
Algorithmen beschreiben die Lösung eines Problems in Bezug auf die Daten, die benötigt werden, um die Probleminstanz darzustellen, und die Schritte, die notwendig sind, um das beabsichtigte Ergebnis zu erzeugen. Programmiersprachen müssen eine Möglichkeit bieten, sowohl den Prozess als auch die Daten darzustellen. Zu diesem Zweck stellen Sprachen Kontrollkonstrukte und Datentypen bereit.
Kontrollkonstrukte ermöglichen die Darstellung von algorithmischen Schritten auf bequeme und dennoch eindeutige Weise. Zumindest benötigen Algorithmen Konstrukte, die eine sequentielle Verarbeitung, eine Auswahl zur Entscheidungsfindung und eine Iteration für eine wiederholte Kontrolle durchführen. Solange die Sprache diese grundlegenden Aussagen liefert, kann sie für die Darstellung des Algorithmus verwendet werden.
Alle Datenelemente im Computer werden als Binärzeichenfolgen dargestellt. Um diesen Zeichenfolgen Bedeutung zu geben, müssen wir Datentypen haben. Datentypen liefern eine Interpretation für diese binären Daten, so dass wir über die Daten in Begriffen nachdenken können, die in Bezug auf das zu lösende Problem sinnvoll sind. Diese integrierten Datentypen auf niedriger Ebene (manchmal primitive Datentypen genannt) stellen die Bausteine für die Entwicklung von Algorithmen bereit.
Zum Beispiel stellen die meisten Programmiersprachen einen Datentyp für Ganzzahlen bereit. Zeichenfolgen von Binärziffern im Speicher des Computers können als ganze Zahlen interpretiert und mit den typischen Bedeutungen versehen werden, die wir gewöhnlich mit ganzen Zahlen assoziieren (zum Beispiel 23, 654 und -19). Darüber hinaus stellt ein Datentyp auch eine Beschreibung der Operationen bereit, an denen die Datenelemente teilnehmen können. Bei Ganzzahlen sind Operationen wie Addition, Subtraktion und Multiplikation üblich. Wir erwarten, dass numerische Datentypen an diesen arithmetischen Operationen teilnehmen können.

Die Schwierigkeit, die uns oft entsteht, ist die Tatsache, dass Probleme und ihre Lösungen sehr komplex sind. Diese einfachen, sprach gestützten Konstrukte und Datentypen sind zwar sicherlich ausreichend, um komplexe Lösungen darzustellen, sind jedoch bei der Bearbeitung des Problemlösungsprozesses typischerweise von Nachteil. Wir brauchen Wege, um diese Komplexität zu kontrollieren und bei der Erstellung von Lösungen zu helfen.