Programmieren lernen - Andreas Hofmann - E-Book

Programmieren lernen E-Book

Andreas Hofmann

0,0

Beschreibung

  • Alle wichtigen Konzepte der Programmierung für Studium und Beruf
  • Für den Einstieg in jede Programmiersprache geeignet
  • Inklusive Programmcode, Übungen mit Lösungen und Praxisteil

Programmieren lernen von Grund auf

Sie möchten programmieren lernen, wissen aber nicht, mit welcher Sprache Sie beginnen sollen? Dieses Buch nimmt Ihnen diese Entscheidung ab. Es vermittelt die grundlegenden Konzepte der Programmierung verständlich und ganz ohne Vorkenntnisse. Der Fokus liegt nicht auf einer bestimmten Sprache, sondern auf den Grundlagen, die allen modernen Programmiersprachen gemeinsam sind.

Alle wichtigen Konzepte praxisnah erklärt

Von Variablen über Schleifen, Verzweigungen, Arrays und Datentypen bis hin zu Objekten und Klassen (OOP) lernen Sie alle grundlegenden Konzepte der Programmierung kennen. Alle Inhalte werden praxisnah und anhand von Codebeispielen erklärt. Übungen mit Lösungen helfen Ihnen, das neu gewonnene Wissen direkt praktisch anzuwenden.

Fit für Studium und Beruf

Dieses Buch bietet Ihnen das nötige Fundament, um eigene Programme zu schreiben – sowohl im Studium als auch im Beruf. Es ist ideal für alle, die praxisnah und strukturiert in die Programmierung einsteigen möchten, ohne von Anfang an auf eine bestimmte Sprache festgelegt zu sein.

Aus dem Inhalt:

  • Grundlagen aller modernen Programmiersprachen
  • Daten abbilden: Variablen, Datentypen, Arrays und Collections
  • Berechnungen und logische Operatoren
  • Programmfluss kontrollieren: Schleifen, Verzweigungen und Funktionen
  • Objektorientierte Programmierung: Klassen, Objekte und Vererbung
  • Entwicklungsumgebung und Fehlersuche
  • Programmieren in der Praxis
  • Entscheidungshilfe für die erste Programmiersprache
  • Übungen mit Lösungen im Anhang

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 343

Veröffentlichungsjahr: 2025

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Inhaltsverzeichnis
Programmieren lernen
Grundlagen für Studium und Beruf – praxisnah und sprachunabhängig
Impressum
Einleitung
Das Ziel dieses Buchs
Programmieren lernen
Aufbau des Buchs
Konventionen in diesem Buch
Kapitel 1: Einführung in die Welt der Computerprogramme
1.1 Eine kleine Reise durch die Geschichte der Programmierung
1.2 Wie funktioniert das Programmieren von Computern?
1.2.1 Kompilierte Programmiersprachen
1.2.2 Interpretierte Programmiersprachen
1.2.3 Kompilieren vs. Interpretieren
1.2.4 Bytecode‌ und Laufzeitumgebungen
Kapitel 2: Daten abbilden und miteinander in Beziehung setzen
2.1 Mit einer Maschine kommunizieren
2.2 Informationen speichern
2.2.1 Variablen
2.2.2 Datentypen‌‌
2.2.3 Deklaration, Initialisierung und Zuweisungen
2.2.4 Arrays und Collections
2.3 Operatoren und Ausdrücke
2.3.1 Mathematische Operatoren‌
2.3.2 Vergleiche‌‌
2.3.3 Zuweisungen
2.3.4 Logische Operatoren‌‌
2.3.5 Operatoren-Ränge und verschachtelte Ausdrücke
Kapitel 3: Den Programmfluss kontrollieren‌
3.1 Verzweigungen‌
3.1.1 Bedingte Verzweigung‌‌
3.1.2 Mehrfachverzweigung‌‌
3.2 Schleifen‌‌‌
3.2.1 Bedingte Schleifen‌‌
3.2.2 Zählschleife‌‌
3.2.3 Mengenschleife‌
3.2.4 Schleifen flexibler steuern
3.2.5 Häufige Fehler im Umgang mit Schleifen
3.3 Funktionen‌
3.3.1 Gültigkeitsbereich (Scope)‌‌
3.3.2 Rekursion‌
3.4 Typumwandlungen‌‌‌
3.5 Algorithmische Probleme lösen
3.5.1 Sternchen-Dreieck
3.5.2 Mehr Sternchen-Dreiecke
3.5.3 Primzahlen‌ berechnen
3.5.4 Lineare Suche
3.5.5 Binäre Suche
3.5.6 Ein Array sortieren‌‌‌
Kapitel 4: Objektorientierte Programmierung
4.1 Konzept der Objektorientierung
4.2 Klassen und Objekte‌‌
4.2.1 Attribute‌
4.2.2 Methoden‌
4.2.3 Instanzen‌
4.2.4 Kapselung‌‌
4.2.5 Statische Attribute und Methoden‌
4.3 Vererbung‌
4.3.1 Konstruktoren verketten‌‌
4.3.2 Methoden überschreiben‌‌‌
4.3.3 Abstrakte Klassen und Methoden‌‌
4.3.4 Mehrfachvererbung‌
4.4 Interfaces‌‌
4.4.1 Interfaces‌ definieren
4.4.2 Interfaces‌ verwenden
4.4.3 Interfaces‌ anwenden
4.5 Übungsbeispiele
4.5.1 Schulnoten
4.5.2 Onlineshop
Kapitel 5: Werkzeuge für die Programmierung
5.1 Onlinehilfe‌
5.1.1 Sprachdokumentation‌
5.1.2 Stack Overflow‌ und Stack Exchange‌
5.2 Die Entwicklungsumgebung‌‌
5.2.1 Gängige Funktionen
5.2.2 Beliebte IDEs
5.3 Arbeiten im Team‌
5.3.1 Versionskontrolle‌
5.3.2 Code-Style-Guides‌ und Coding-Standards‌‌
5.4 Dokumentation‌
5.4.1 Kommentare‌
5.4.2 Separate Dokumentation‌
5.4.3 UML-Diagramme
5.5 Auf Fehlersuche‌‌‌
5.5.1 Arten von Fehlern
5.5.2 Unit-Tests‌‌‌
5.5.3 Fehler‌management im Quellcode
5.5.4 Debugging‌
5.5.5 Softwaretests‌
Kapitel 6: Programmieren in der Praxis
6.1 Compiler‌ und Entwicklungsumgebung installieren
6.1.1 Ein Projekt anlegen
6.1.2 Das erste Programm: »Hello, World!«
6.2 Beispiele in die Praxis umsetzen
6.2.1 Ausgabe‌ und Einlesen von Daten‌‌
6.2.2 Sternchen-Dreiecke
6.2.3 Potenzfunktion‌
6.2.4 Berechnung der Fakultät‌
6.2.5 Binäre Suche
6.2.6 Bubblesort‌
6.2.7 Klassen erstellen und verwenden‌
Kapitel 7: Welche Programmiersprache ist die richtige für mich?
7.1 Aufgabengebiete der Programmierung
7.1.1 Desktop-Programme, Konsolen- und Serveranwendungen
7.1.2 Webprogrammierung‌
7.1.3 Datenbanken
7.1.4 Mobile Applikationen
7.1.5 Skripte
7.1.6 Mikrocontroller/Hardwareprogrammierung
7.1.7 Spiele und andere Echtzeit-Rendering-Anwendungen
7.1.8 Komponenten, Bibliotheken‌, Frameworks und SDKs‌
7.2 Ein kleiner Überblick zu den Programmiersprachen
7.2.1 C/C++
7.2.2 C# (C Sharp)
7.2.3 CSS
7.2.4 HTML
7.2.5 Java
7.2.6 JavaScript
7.2.7 PHP
7.2.8 Python
Anhang A: Lösungen
A.1 Lösungen zu Kapitel 2
A.1.1 Negieren von Ausdrücken
A.1.2 Reihenfolge der Operatoren
A.2 Lösungen zu Kapitel 4
A.2.1 Schulnoten
A.2.2 Onlineshop
A.3 Lösungen zu Kapitel 6
A.3.1 Binäre Suche und Bubblesort
A.3.2 Smart Home
Anhang B: Die Welt aus 0 und 1
B.1 Zahlensysteme‌
B.1.1 Vom Binärsystem ins Dezimalsystem umrechnen
B.1.2 Vom Dezimalsystem ins Binärsystem umrechnen
B.1.3 Weitere Zahlensysteme
B.2 Von Bits und Bytes
B.2.1 Einheitenpräfixe
Anhang C: Glossar
Algorithmus
App
Backend
Bibliothek (Library)
Binäre Daten
Bytecode
Client
Cloud
Code‌, Programmcode, Quellcode‌, Sourcecode‌, Quelltext
Compiler
Desktop
Entwicklungsumgebung (IDE‌)
Framework
Frontend
Full-Stack‌
Implementieren
Internet of Things (IoT‌)
Interpreter
Konsole
Laufzeit
Laufzeitumgebung‌
Maschinencode
Mikrocontroller/Embedded System
Open Source
Plattform
Prozessor
Rendering
Server
Software Development Kit (SDK)
UML

Andreas Hofmann

Programmieren lernen

Grundlagen für Studium und Beruf – praxisnah und sprachunabhängig

Impressum

Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über https://portal.dnb.de/opac.htm abrufbar.

ISBN 978-3-7475-1020-9 1. Auflage 2025

www.mitp.de E-Mail: [email protected] Telefon: +49 7953 / 7189 - 079 Telefax: +49 7953 / 7189 - 082

© 2025 mitp Verlags GmbH & Co. KG

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Dieses E-Book verwendet das EPUB-Format und ist optimiert für die Nutzung mit Apple Books auf dem iPad von Apple. Bei der Verwendung von anderen Readern kann es zu Darstellungsproblemen kommen.

Der Verlag räumt Ihnen mit dem Kauf des E-Books das Recht ein, die Inhalte im Rahmen des geltenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Der Verlag schützt seine E-Books vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die E-Books mit einem nicht sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert. Bei Kauf in anderen E-Book-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.

Lektorat: Janina Vervost Sprachkorrektorat: Christine Hoffmeister Covergestaltung: Christian Kalkert Coverbild: © Denis Yevtekhov / stock.adobe.com Satz: III-satz, Kiel, www.drei-satz.deelectronic publication: III-satz, Kiel, www.drei-satz.de

Einleitung

Das Programmieren ist zwar noch eine relativ junge Disziplin – etwa im Vergleich zur Fotografie oder dem Maschinenbau –, allerdings ist die Informationstechnologie ein sehr schnelllebiges Gebiet. Das Programmieren von Computerprogrammen ist also von diesem Standpunkt aus gesehen schon recht alt. Verändert hat sich dennoch recht wenig. Das Ziel ist immer noch dasselbe, nämlich einer Maschine beizubringen, bestimmte Aufgaben zu erfüllen. Zwar haben sich die Methoden weiterentwickelt, die Grundbausteine eines Programms sind aber immer noch dieselben und auch der grundlegende technische Mechanismus (siehe Abschnitt 1.2 »Wie funktioniert das Programmieren von Computern?«) ist gleich geblieben.

Die Entwicklungen auf dem Gebiet der Software-Programmierung haben, neben neuen technischen Möglichkeiten der Maschinen, lediglich ein schnelleres und leichteres Arbeiten des Programmierers zur Folge. Selbst die künstliche Intelligenz (KI), die gerade in aller Munde ist, revolutioniert das Programmieren – zumindest vorerst – nicht. Künstliche Intelligenz ist, anders als der Name vermuten lässt, nämlich gar nicht so intelligent und auch nichts anderes als ein von Menschen erschaffenes Programm.

Wer heute Programmieren lernen will, muss also immer noch beinahe dieselben Grundlagen lernen wie jemand, der vor einigen Jahrzehnten programmieren gelernt hat.

Das Ziel dieses Buchs

Dieses Buch richtet sich an Programmieranfänger und ist als Einstieg für jene gedacht, die von Grund auf Programmieren lernen wollen. Der Fokus liegt dabei auf der Vermittlung der grundlegenden Konzepte und Bausteine, die Sie als Programmierer oder Programmiererin beherrschen müssen, nicht auf einer bestimmten Programmiersprache.

Es dient aber auch als Orientierung für die weiteren Schritte und Themen auf ihrem Lernpfad und als Entscheidungshilfe für die Wahl einer oder mehrerer Programmiersprachen.

Sehen Sie dieses Buch als ersten Schritt auf dem Weg zum Programmierer. Es ist kein »Komplettwerk für Programmierer«, denn so etwas gibt es nicht. Das Programmieren von Software ist eine derart umfangreiche Disziplin, dass alle dafür nötigen Themen unmöglich in einem Buch abgedruckt werden können. Bücher können ohnehin nur gewisse Grundlagen vermitteln. Die Fähigkeit zu programmieren erwirbt man viel mehr durch die Praxis und die Erfahrung, die man sammelt, wenn man Programmcode schreibt. Dafür erhalten Sie mit diesem Buch eine solide Grundlage.

Das Buch beinhaltet keine fertigen Lösungen für bestimmte Problemstellungen und Aufgaben. Diese finden Sie in sogenannten Cookbooks (Kochbüchern) oder noch umfangreicher und aktueller im Internet.

Auch wenn dieses Buch keinerlei Vorwissen zum Thema »Programmierung« erfordert, so setzt es doch ein gewisses IT-Basiswissen voraus oder benötigt zumindest eine gewisse IT-Affinität und Lernbereitschaft, um sich das notwendige Wissen aus anderen Quellen anzueignen.

Programmieren lernen

Wie lernt man den nun Programmieren? Wie bereits erwähnt, ist das Programmieren bzw. Schreiben von Computerprogrammen eine komplexe Disziplin, denn das Erlernen einer Programmiersprache macht nur einen geringen Teil aus. Wichtiger sind die grundlegenden Konzepte, die die Programmierung ausmacht. Möchte man Programmierer werden, ist es viel essenzieller, eine gewisse Denkweise zu erlernen. Einen guten Programmierer zeichnet insbesondere eine hohe Problemlösungskompetenz aus.

Natürlich stellt das Erlernen einer Programmiersprache eine nicht zu unterschätzende Hürde für jeden Anfänger dar, haben Sie diese aber erst einmal gemeistert, lassen sich weitere Sprachen mit erheblich weniger Aufwand erlernen. Man muss eine Sprache auch nicht bis ins kleinste technische Detail kennen oder jeden Befehl in- und auswendig beherrschen, um erfolgreich Computerprogramme zu schreiben.

Programmieren ist keine Inseldisziplin, es ist nur ein Werkzeug, um Probleme zu lösen. Dafür ist, je nach Art des Problems, aber noch weiteres Wissen und Können erforderlich. Sie können die bestausgestattete Werkstatt Ihr Eigen nennen, ohne das nötige Fachwissen werden Sie kein Auto reparieren können. Nehmen Sie sich also etwas Zeit und lernen Sie, wie Sie Problemstellungen mit dem Schreiben von Programmen lösen. Mit diesem Buch liefere ich Ihnen die Grundlagen und die notwendige Denkweise hierfür.

Aufbau des Buchs

In diesem Buch finden Sie nicht nur Grundwissen zur Programmierung, sondern auch die nötigen Grundbausteine, um selbst ein Computerprogramm zu schreiben. Die entsprechenden Kapitel zielen auf ein allgemeines Verständnis ab, ohne an eine konkrete Programmiersprache gebunden zu sein. Dennoch soll die Praxis nicht zu kurz kommen. Im Praxisteil erfahren Sie, wie Sie das Gelernte in ein tatsächliches Stück Software verwandeln. Auch wenn ich hierfür auf eine konkrete Programmiersprache zurückgreifen muss, so können Sie die Techniken in jeder beliebigen anderen Programmiersprache ausprobieren.

Theorie (Kapitel 1 bis 4): Sie erfahren zuerst, wie das Programmieren von Maschinen ganz grundsätzlich funktioniert. Anschließend lernen Sie die Basiselemente eines Computerprogramms kennen sowie weitere Methoden und Konzepte, die in der modernen Softwareentwicklung unerlässlich sind.

Praxis (Kapitel 5 bis 7): Sie lernen anschließend, wie der Arbeitsprozess eines Programmierers aussieht, welche Werkzeuge und Abläufe notwendig sind und wie Sie sich das Programmieren einfacher gestalten können. Zum Abschluss zeige ich Ihnen, wie Sie das Gelernte in tatsächlichen Quellcode umsetzen.

Kapitel 2 »Daten abbilden und miteinander in Beziehung setzen«, Kapitel 3 »Den Programmfluss kontrollieren« und Kapitel 4 »Objektorientierte Programmierung« bauen aufeinander auf. Kapitel 6 »Programmieren in der Praxis« setzt das erworbene Wissen aus Kapitel 2 bis Kapitel 4 in die Praxis um, daher empfehle ich Ihnen, diese Kapitel in der vorgesehenen Reihenfolge zu lesen.

Viele Themen der Programmierung sind miteinander verknüpft und lassen sich nicht immer eindeutig in einer gewissen Reihenfolge beschreiben. Sie finden an den entsprechenden Stellen immer Querverweise auf die passenden Abschnitte dieses Buchs. Manchmal kann es auch sinnvoll sein, nach einem Kapitel nochmals zu vorangegangenen Abschnitten zurückzukehren und diese mit mehr Wissen erneut zu beleuchten.

Die Kapitel 1 »Einführung in die Welt der Computerprogramme«, Kapitel 5 »Werkzeuge für die Programmierung« sowie Kapitel 7 »Welche Programmiersprache ist die richtige für mich?« liefern Zusatzwissen, die zum Erlernen der Programmierung nicht direkt erforderlich, aber durchaus hilfreich und wissenswert sind. Sie können sie in beliebiger Reihenfolge lesen.

Konventionen in diesem Buch

Beim Programmieren dreht sich alles um Programmcode. Dieser besteht aus speziellen Schlüsselwörtern und Befehlen, die im Text durch eine eigene Schriftart hervorgehoben sind.

Programmcode, Befehle und spezielle Ausdrücke können aber auch in einem eigenen Absatz stehen.

Mehrere Befehle, die zusammengehören bzw. einen Codeabschnitt darstellen, sind ebenfalls in einem eigenen Absatz formatiert und mit Zeilennummern versehen (siehe Listing). Auch moderne Quellcode-Editoren verwenden nummerierte Zeilen, da das den Verweis auf einzelne Befehle erleichtert. Speziell in Fehlerfällen findet sich eine Zeilennummer schneller als ein bestimmter Befehl.

1 namespace HelloWorld 2 { 3 internal class Program 4 { 5 static void Main(string[] args) 6 { 7 Console.WriteLine("Hello, World!"); 8 } 9 } 10 }

Listing 1: So wird zusammengehörender Quellcode im Buch formatiert.

Hin und wieder finden Sie im formatierten Quellcode ergänzende Kommentare‌, diese werden beginnend mit zwei Schrägstrichen (Slashes) gekennzeichnet. In etwa so: //ich bin ein Kommentar.

Kommentare helfen, bestimmte Stellen im Quellcode näher zu erläutern bzw. deren Auswirkung zu zeigen, ohne im Fließtext auf jedes Detail eingehen zu müssen.

Manchmal würden Codeabschnitte aus mehreren Zeilen Code bestehen, aber nicht immer sind alle davon relevant für ein Beispiel bzw. würden von den eigentlichen Befehlen ablenken. Nicht relevante Zeilen und Abschnitte werden in den Beispielen ausgelassen und durch ... ersetzt.

Manchmal werden Beispiele laufend erweitert, auch hier ist es nicht sinnvoll, immer wieder den kompletten Code abzudrucken, also werden die Stellen aus vorherigen Listings zusammengekürzt und ebenfalls durch ... ersetzt.

Mehr Wissen

In diesen Boxen finden Sie Zusatzwissen, das zu einem gewissen Themenbereich gehört, aber für Anfänger noch zu speziell oder einfach weniger relevant ist. Die Themen in diesen Boxen werden von mir nur grob umrissen und können als Grundlage für eigene Recherchen dienen.

Auch Sachverhalte, die sich in den einzelnen Programmiersprachen stärker unterscheiden oder bei bestimmten Sprachen eine Ausnahme darstellen, finden Sie in diesen Boxen.

Kapitel 1: Einführung in die Welt der Computerprogramme

Bevor ich Sie mit den Grundlagen und Konzepten der Programmierung vertraut mache, erhalten Sie in diesem Kapitel eine allgemeine Einführung zum Thema Programmieren. Dazu gehört ein kurzer Abriss aus der Geschichte, hier erfahren Sie, wie es zur Erfindung von Computerprogrammen kam und wie sich Programme und Programmiersprachen über die Jahrzehnte entwickelt haben. Danach erkläre ich Ihnen kurz, wie Programmiersprachen und Programmcode funktioniert und anschließend bekommen Sie eine Übersicht über die Einsatzgebiete von Computerprogrammen sowie über die gängigen Programmiersprachen.

1.1  Eine kleine Reise durch die Geschichte der Programmierung

Auch wenn wir heute auf Computern programmieren, überlegt man kurz, wird klar, dass ein Computer nur funktioniert, weil darauf ein Programm läuft, das das Arbeiten mit dem Computer erst möglich macht. Programmiersprachen, Programme und das Schreiben eben jener wurde also vor dem modernen Computer erfunden. Die Programmierung‌ von Maschinen ist älter, als viele denken.

Vor den Computern gab es Rechenmaschinen‌ und vor den Rechenmaschinen gab es nur mechanische Maschinen‌. Diese Maschinen waren in der Lage, bestimmte Aufgaben oder Arbeitsschritte automatisch zu erledigen. Die Funktion basiert auf deren Bauweise bzw. der mechanischen Konstruktion. Die Rede ist von industriellen Maschinen wie etwa Stanzen und Pressen, aber auch komplexeren Konstruktionen, wie etwa mechanischen Webstühlen. Aber egal wie komplex die Arbeitsschritte auch waren, die Ausführung erfolgte ohne jegliche Logik. Zwar konnten Werkzeuge und Aufsätze getauscht werden, dafür war aber ein menschliches Eingreifen erforderlich. Um andere Arbeitsschritte auszuführen, benötigte man eine andere mechanische Konstruktion. So konnten die ersten mechanischen Webstühle immer nur ein bestimmtes Muster weben.

Zu Beginn des 19. Jahrhunderts erfand der Franzose Joseph-Marie Jacquard‌ den programmierbaren Webstuhl‌. Und auch wenn dieser noch keine Rechenmaschine war, folgte dieser dem Grundprinzip der elektronischen Datenverarbeitung: Eingabe – Verarbeitung – Ausgabe (EVA‌). Über Lochstreifen konnte dem Webstuhl das zu webende Muster übermittelt werden.

Die erste mechanische Rechenmaschine‌ wurde 1837 von Charles Babbage‌ erfunden. Als erste mathematisch-logische Programmierung gilt die Vorschrift zur Berechnung von Bernoulli‌-Zahlen[1] von Ada Lovelace‌, die als erste Programmiererin der Geschichte gilt.

Zu Beginn des 20. Jahrhunderts wurden weitere Rechenmaschinen entworfen und dafür wiederum Vorschriften‌‌ zum Lösen mathematischer Probleme entwickelt. Als Meilensteine gelten die vom deutschen Bauingenieur Konrad Zuse‌ erfundenen und gebauten Rechenmaschinen. In den Vierzigerjahren des 20. Jahrhunderts griff der österreichisch-ungarische Mathematiker John von Neumann‌ einige Ideen Zuses auf und beschrieb mit der Von-Neumann-Architektur‌ ein Referenzmodell für Computer‌. Diese bildet die Grundlage für die meisten der heute bekannten Computer.

Nach dem Zweiten Weltkrieg entstanden, in den USA, die ersten höheren Programmiersprachen‌ FORTRAN‌, Lisp‌ und COBOL‌. Die an der Entwicklung von COBOL beteiligte Grace Hopper‌ entwickelte auch den ersten Compiler‌ (Abschnitt 1.2.1 »Kompilierte Programmiersprachen«). In den Sechzigern und Siebzigern des vergangenen Jahrhunderts wurde eine Vielzahl weiterer Programmiersprachen entwickelt. Grundlage war der technische Fortschritt in der Entwicklung von Computer-Hardware. Viele dieser Sprachen sind längst vergessen, andere werden noch heute verwendet oder entwickelten sich zu einigen der aktuellen Sprachen weiter. Nennenswerteste Vertreter sind die Sprachen BASIC‌, welche durch die ersten leistbaren Heimcomputer der Siebziger populär wurde, sowie C‌, welche 1972 für das neue Betriebssystem‌ Unix‌‌ entwickelt wurde.

Ende der Siebzigerjahre stellte das US-Verteidigungsministerium erschrocken fest, dass über 450 teils nicht standardisierte Programmiersprachen in deren Projekten genutzt wurden. Der Versuch, eine Sprache zu finden, die alle Anforderungen des US-Militärs erfüllte, scheiterte. Das Militär entwickelte daraufhin eine eigene Sprache, Ada‌, benannt nach Ada Lovelace.

1983 stellte Bjarne Stroustrup‌ C++‌ vor, eine Erweiterung von C‌, die jene neuen Konzepte enthielt, die seit der Erfindung von C Einzug in die Computerprogrammierung gehalten hatten. Das Wichtigste hierbei ist die objektorientierte Programmierung‌‌, bei der die Architektur eines Programms sich an jenen Objekten der wirklichen Welt anlehnt, die die Aufgabenstellung des Programms betreffen (siehe Kapitel 4 »Objektorientierte Programmierung«).

Die schnelle Ausbreitung des Internets‌‌ stellte eine ganze eigene Herausforderung dar, denn plötzlich mussten Inhalte auf eine Vielzahl verschiedener Endgeräte angepasst werden. Der Erfolg des Internets begründet sich unter anderem auf HTML‌ – keine Programmiersprache, sondern eine Auszeichnungssprache –, welche die Gestaltung von Webinhalten übernahm, und PHP‌, der Programmiersprache für Serverlogik‌ und dynamische/interaktive Inhalte.

1995 folgte die plattformunabhängige, objektorientierte Programmiersprache Java‌ und 2001 die von Microsoft beauftragte Sprache C#.‌

Die nachfolgenden Entwicklungen brachten Sprachen hervor, die entweder Schwachstellen in den bereits verbreiteten Sprachen beheben sollten oder die für spezielle Einsatzgebiete gedacht waren (mehr dazu siehe Kapitel 7 »Welche Programmiersprache ist die richtige für mich?«).

[1] Als Bernoulli-Zahlen wird eine Reihe von rationalen Zahlen bezeichnet, die in verschiedenen mathematischen Bereichen Anwendung finden.

Kapitel 2: Daten abbilden und miteinander in Beziehung setzen

In Kapitel 1 habe ich erläutert, wie die Programmierung entstanden ist und wie sie sich entwickelt hat. Ich habe auch in groben Zügen beschrieben, wie die Programmierung unter Verwendung von Programmiersprachen funktioniert.

In diesem Kapitel geht es darum, welche Elemente und Grundkonzepte in der Programmierung verwendet werden – und das möglichst unabhängig von einer bestimmten Programmiersprache. So können Sie sich wichtige Grundkenntnisse der Programmierung aneignen, ohne sich bereits auf eine Programmiersprache festzulegen.

2.1  Mit einer Maschine kommunizieren

Natürliche Sprachen bestehen aus einem Alphabet, also einer endlichen Sammlung aus Zeichen, die dazu genutzt werden, um Wörter zu bilden. Wörter haben eine gewisse Bedeutung und diese Bedeutung wird vom Menschen festgelegt. Durch Anwendung einer Grammatik können Wörter verwendet werden, um zu kommunizieren. Menschen, die dasselbe Alphabet, dieselbe Wortsammlung und dieselbe Grammatik verwenden, also dieselbe Sprache sprechen, verstehen diese Form der Kommunikation.

Mit Programmiersprachen‌ verhält es sich ähnlich. Das Programmieren‌ einer Maschine‌ kann als Form der Kommunikation angesehen werden, wenn auch viel eingeschränkter. Durch das Programmieren weist man eine Maschine an, sich auf gewisse Weise zu verhalten. Eine Hochsprache (wie etwa C++ oder Java) ist dazu aber nicht zwingend erforderlich, denn die Anweisungen an die Maschine können auch direkt in Maschinensprache‌ erfolgen. Hochsprachen dienen dazu, das Verfassen von Anweisungen zu vereinfachen und in einer für den Menschen leichter verständlichen Form zu ermöglichen.

Die Anweisungen, die eine Maschine versteht, sind natürlich viel limitierter als die Wörter, die ein Mensch versteht. Ein Mensch interpretiert Gesprochenes und kann in der Kommunikation auch Informationen erfassen, die nicht gesagt oder geschrieben wurden. Sprachliche Kommunikation kann daher auch trotz gemeinsamer Sprache unterschiedlich interpretiert werden. Bei Maschinen ist das anders, Maschinen interpretieren die Befehle, die Sie beherrschen, immer gleich. Die Formulierung der Anweisungen muss daher sehr exakt erfolgen. Die Regeln dazu sind in der jeweiligen Syntax‌, quasi der Grammatik einer Programmiersprache, festgelegt. In erster Linie bestimmt die Syntax, welche Zeichen im Alphabet vorhanden sind und welche Wörter‌ und Befehle in der Programmiersprache daraus gebildet werden können. Diese Wörter nennt man Schlüsselwörter. Jede Programmiersprache hat eine bestimmte Anzahl an Schlüsselwörtern. Diese haben eine bestimmte Bedeutung und dürfen nur in bestimmten Kontexten verwendet werden. Die Syntax legt auch fest, in welcher Kombination die Schlüsselwörter eine gültige Anweisung ergeben (ähnlich der Grammatik natürlicher Sprachen).

Mehr Wissen – Syntax vs. Semantik‌

Nachdem die Syntax formal richtige Anweisungen garantiert, die von der Maschine interpretiert werden kann, sorgt die Semantik dafür, dass die Anweisungen auch Sinn ergeben. Ähnlich wie ein grammatisch richtiger Satz absolut keinen Sinn ergeben kann (z.B. Peter ist ein verheirateter Junggeselle.), kann das auch mit syntaktisch richtigen Anweisungen der Fall sein. Hochsprachen wie Java oder C# haben allerdings eine derart strikte Syntax, dass kaum semantische Fehler passieren können. Semantikfehler werden vom Compiler üblicherweise auch als Syntaxfehler‌ ausgewiesen.

Programmiersprachen haben aber auch noch andere Gemeinsamkeiten mit natürlichen Sprachen. So wie die Sprachen, die wir Menschen verwenden, um untereinander zu kommunizieren, können Programmiersprachen in einem Sprachbaum dargestellt werden. Wie natürliche Sprachen entwickeln sich Programmiersprachen weiter und neue Sprachen entstehen auf Basis bestehender Sprachen. So wie menschliche Sprachen lokale Ausprägungen haben, können Programmiersprachen verschiedene sogenannte Implementierungen‌ haben.

Diese Gemeinsamkeiten helfen Ihnen auch beim Erlernen von Programmiersprachen. Die erste Programmiersprache zu erlernen, mag noch schwerer fallen. Lernen Sie aber eine weitere Sprache, wird Ihnen das schon leichter von der Hand gehen. Je ähnlicher sich die Sprachen sind, umso schneller erlernt man sie.

Vergessen Sie aber nicht, dass es beim Programmieren nicht ausschließlich darum geht, eine Programmiersprache syntaktisch zu beherrschen. Viel wichtiger sind die grundlegenden Konzepte der Programmierung, die Sie hier in diesem Buch finden.