Definition: Programmiersprachen

Programmiersprachen sind formale Sprachen, die verwendet werden, um Anweisungen für Computer zu formulieren. Sie ermöglichen es Menschen, komplexe Aufgaben und Algorithmen in einer für Computer verständlichen Form zu beschreiben.


Wie begann die Geschichte der Programmierung?

Die Anfänge der Programmierung reichen bis in die 1940er Jahre zurück. Entgegen der weit verbreiteten Vorstellung arbeiteten die ersten Programmierer nicht direkt mit Binärcode.

Stattdessen nutzten sie Lochkarten und Lochstreifen, um Programme einzugeben. Diese Papierstreifen mit Löchern stellten Befehle oder Daten dar und wurden von Maschinen gelesen.

Bald darauf entwickelten sich frühe symbolische Systeme, bei denen kurze Codes oder Zahlen Befehle repräsentierten. Dies war einfacher zu merken als Binärcode, blieb aber sehr maschinennah.

Um den Programmierprozess weiter zu vereinfachen, wurde in den 1950er Jahren Assembler entwickelt. Ein Beispiel für eine einfache Addition in Assembler könnte so aussehen:

MOV AL, 61h
MOV BL, 62h
ADD AL, BL

Lass uns das Schritt für Schritt durchgehen:

  1. MOV AL, 61h:
  • MOV bedeutet “move” (bewegen)
  • AL ist ein Register (eine Art kleiner Speicher im Prozessor)
  • 61h ist eine Hexadezimalzahl (97 in Dezimal)
  • Dieser Befehl legt also die Zahl 97 in das Register AL.
  1. MOV BL, 62h:
  • Ähnlich wie oben, aber diesmal wird die Zahl 98 (62h in Hexadezimal) in das Register BL gelegt.
  1. ADD AL, BL:
  • ADD bedeutet “addieren”
  • Dieser Befehl addiert den Inhalt von BL zum Inhalt von AL
  • Das Ergebnis (195) wird in AL gespeichert

Im Grunde genommen macht dieser Code also Folgendes:

  • Er speichert die Zahl 97 in einem “Behälter” namens AL
  • Er speichert die Zahl 98 in einem anderen “Behälter” namens BL
  • Dann addiert er diese beiden Zahlen und legt das Ergebnis wieder in AL

Wie entwickelten sich die ersten höheren Programmiersprachen?

Mit der Zeit wurde klar, dass eine effizientere Methode zur Programmierung benötigt wurde. Hier kamen die höheren Programmiersprachen ins Spiel. Diese Sprachen zeichnen sich durch ihre Nähe zur menschlichen Sprache und die Abstraktion von den Details der Computerhardware aus.

Zwei der frühesten und einflussreichsten höheren Programmiersprachen waren:

  1. FORTRAN (FORmula TRANslation):
  • Entwickelt: 1954-1957 von IBM
  • Hauptzweck: Wissenschaftliche und numerische Berechnungen
  • Besonderheit: Erste weit verbreitete höhere Programmiersprache
  1. COBOL (COmmon Business-Oriented Language):
  • Entwickelt: 1959
  • Hauptzweck: Geschäftsanwendungen und Datenverarbeitung
  • Besonderheit: Verwendung von nahezu englischen Sätzen zur Programmierung

Diese Sprachen revolutionierten die Art und Weise, wie Programme geschrieben wurden. Sie ermöglichten es Entwicklern, sich mehr auf die Logik und weniger auf die Hardware-Details zu konzentrieren.


Was sind moderne Programmierparadigmen?

Mit der Zeit entwickelten sich verschiedene Ansätze oder “Paradigmen” in der Programmierung. Eines der wichtigsten war die objektorientierte Programmierung (OOP).

OOP ist ein Programmierparadigma, das auf dem Konzept von “Objekten” basiert, die Daten und Code enthalten können. Es wurde entwickelt, um die Struktur von Programmen zu verbessern und die Wiederverwendbarkeit von Code zu erhöhen.

Die erste objektorientierte Programmiersprache war Simula, entwickelt in den 1960er Jahren. Aber es war Smalltalk in den 1970er Jahren, das OOP wirklich populär machte.

Heute sind viele moderne Programmiersprachen objektorientiert oder unterstützen zumindest OOP-Konzepte. Einige Beispiele sind:

  • Java
  • C++
  • Python
  • Ruby

Diese Sprachen ermöglichen es uns, komplexe Systeme effizienter zu entwickeln und zu warten.


Wie werden Programmiersprachen klassifiziert?

Programmiersprachen können auf verschiedene Arten klassifiziert werden. Eine grundlegende Unterscheidung ist die zwischen imperativen und deklarativen Sprachen:

  1. Imperative Sprachen: Hier gibst du dem Computer eine Reihe von Anweisungen, die Schritt für Schritt ausgeführt werden. Beispiele sind C, Java und Python.

  2. Deklarative Sprachen: Diese beschreiben das gewünschte Ergebnis, ohne die genauen Schritte vorzugeben. Beispiele sind SQL, HTML und Prolog.

Innerhalb dieser breiten Kategorien gibt es verschiedene Paradigmen:

  • Prozedurale Programmierung: Ein Untertyp des imperativen Paradigmas, bei dem das Programm in kleinere Teile (Prozeduren oder Funktionen) aufgeteilt wird. Beispiele: C, BASIC.

  • Funktionale Programmierung: Hier dreht sich alles um Funktionen im mathematischen Sinne. Beispiele: Haskell, Lisp.

  • Objektorientierte Programmierung (OOP): Alles dreht sich um “Objekte”, die Daten und Verhalten kombinieren. Beispiele: Java, C++, Python.


Was sind domänenspezifische Sprachen?

Domänenspezifische Sprachen (DSLs) sind Sprachen, die für eine bestimmte Anwendungsdomäne optimiert sind. Sie sind wie Spezialwerkzeuge - perfekt für eine bestimmte Aufgabe, aber möglicherweise nicht so vielseitig wie allgemeine Programmiersprachen.

Hier sind einige Beispiele für DSLs und ihre Anwendungsbereiche:

DSLAnwendungsbereich
SQLDatenbankabfragen und -manipulation
HTMLStrukturierung von Webseiten
LaTeXDokumentenerstellung und Textsatz
MATLABNumerische Berechnungen und Signalverarbeitung

DSLs ermöglichen es Experten in einem bestimmten Bereich, effizient zu programmieren, ohne sich mit den Feinheiten einer allgemeinen Programmiersprache auseinandersetzen zu müssen. Das spart Zeit und reduziert Fehler.


Wie unterscheiden sich Hochsprachen von Maschinensprache?

Maschinensprache ist die Sprache, die der Computer direkt versteht. Sie besteht aus Binärcode - Folgen von Nullen und Einsen. Jeder Prozessor hat seinen eigenen Befehlssatz, also seine eigene “Maschinensprache”.

Beispiel eines Maschinenbefehls (in hexadezimaler Darstellung):

8B 0D 14 00 40 00

Hochsprachen sind für Menschen leichter zu lesen und zu schreiben. Sie verwenden Wörter und Symbole, die der natürlichen Sprache ähneln.

Beispiel in Python:

print("Hallo, Welt!")

Hier ein Vergleich der Vor- und Nachteile:

AspektHochsprachenMaschinensprache
LesbarkeitLeicht lesbar und verständlichSchwer lesbar für Menschen
PortabilitätOft plattformunabhängigSpezifisch für eine Prozessorarchitektur
EffizienzKann weniger effizient seinMaximal effizient
EntwicklungsgeschwindigkeitSchnelle Entwicklung möglichSehr zeitaufwendig
FehleranfälligkeitWeniger fehleranfälligSehr fehleranfällig
AbstraktionsniveauHoch (näher an Problemlösung)Niedrig (näher an Hardware)

Abschlussquiz

Womit arbeiteten die ersten Programmierer in den 1940er Jahren hauptsächlich?

Blank

  • Direkt mit Binärcode
  • Mit Lochkarten und Lochstreifen
  • Mit Assembler
  • Mit FORTRAN

Welche der folgenden Programmiersprachen wurde speziell für wissenschaftliche und numerische Berechnungen entwickelt?

Blank

  • COBOL
  • Assembler
  • FORTRAN
  • Java

Was ist ein Hauptmerkmal der objektorientierten Programmierung (OOP)?

Blank

  • Sie basiert auf dem Konzept von ‘Objekten’, die Daten und Code enthalten können
  • Sie verwendet ausschließlich mathematische Funktionen
  • Sie arbeitet direkt mit Maschinencode
  • Sie ist nur für Datenbankabfragen geeignet

Was ist eine domänenspezifische Sprache (DSL)?

Blank

  • Eine Sprache, die nur in einem bestimmten Land verwendet wird
  • Eine Sprache, die für eine bestimmte Anwendungsdomäne optimiert ist
  • Eine Sprache, die nur von Experten verwendet werden kann
  • Eine Sprache, die direkt in Maschinencode übersetzt wird

Welcher der folgenden Aspekte ist typischerweise kein Vorteil von Hochsprachen gegenüber Maschinensprache?

Blank

  • Bessere Lesbarkeit
  • Höhere Effizienz
  • Schnellere Entwicklung
  • Geringere Fehleranfälligkeit