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, BLLass uns das Schritt für Schritt durchgehen:
MOV AL, 61h:
MOVbedeutet “move” (bewegen)AList ein Register (eine Art kleiner Speicher im Prozessor)61hist eine Hexadezimalzahl (97 in Dezimal)- Dieser Befehl legt also die Zahl 97 in das Register AL.
MOV BL, 62h:
- Ähnlich wie oben, aber diesmal wird die Zahl 98 (62h in Hexadezimal) in das Register BL gelegt.
ADD AL, BL:
ADDbedeutet “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:
- FORTRAN (FORmula TRANslation):
- Entwickelt: 1954-1957 von IBM
- Hauptzweck: Wissenschaftliche und numerische Berechnungen
- Besonderheit: Erste weit verbreitete höhere Programmiersprache
- 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:
-
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.
-
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:
| DSL | Anwendungsbereich |
|---|---|
| SQL | Datenbankabfragen und -manipulation |
| HTML | Strukturierung von Webseiten |
| LaTeX | Dokumentenerstellung und Textsatz |
| MATLAB | Numerische 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:
| Aspekt | Hochsprachen | Maschinensprache |
|---|---|---|
| Lesbarkeit | Leicht lesbar und verständlich | Schwer lesbar für Menschen |
| Portabilität | Oft plattformunabhängig | Spezifisch für eine Prozessorarchitektur |
| Effizienz | Kann weniger effizient sein | Maximal effizient |
| Entwicklungsgeschwindigkeit | Schnelle Entwicklung möglich | Sehr zeitaufwendig |
| Fehleranfälligkeit | Weniger fehleranfällig | Sehr fehleranfällig |
| Abstraktionsniveau | Hoch (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
Antwort
Mit Lochkarten und Lochstreifen
Erklärung: Die ersten Programmierer nutzten Lochkarten und Lochstreifen, um Programme einzugeben. Diese Papierstreifen mit Löchern stellten Befehle oder Daten dar und wurden von Maschinen gelesen.
Welche der folgenden Programmiersprachen wurde speziell für wissenschaftliche und numerische Berechnungen entwickelt?
Blank
- COBOL
- Assembler
- FORTRAN
- Java
Antwort
FORTRAN
Erklärung: FORTRAN (FORmula TRANslation) wurde von 1954-1957 von IBM entwickelt und war für wissenschaftliche und numerische Berechnungen konzipiert.
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
Antwort
Sie basiert auf dem Konzept von ‘Objekten’, die Daten und Code enthalten können
Erklärung: OOP basiert auf dem Konzept von ‘Objekten’, 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.
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
Antwort
Eine Sprache, die für eine bestimmte Anwendungsdomäne optimiert ist
Erklärung: 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.
Welcher der folgenden Aspekte ist typischerweise kein Vorteil von Hochsprachen gegenüber Maschinensprache?
Blank
- Bessere Lesbarkeit
- Höhere Effizienz
- Schnellere Entwicklung
- Geringere Fehleranfälligkeit
Antwort
Höhere Effizienz
Erklärung: Hochsprachen sind in der Regel weniger effizient als Maschinensprache. Sie bieten aber Vorteile wie bessere Lesbarkeit, schnellere Entwicklung und geringere Fehleranfälligkeit.