|
|
# Übung2: Analyse folgender Programmiersprachen: Java, C, Python, Go, Javascript und TypeScript
## Java
- Java ist eine imperative Programmiersprache. Ein in Java geschriebenes Programm besteht aus einer Folge von Anweisungen, welche in einer vorgegebenen Reihenfolge vom Computer abgearbeitet werden. - Obwohl Java hauptsächlich als objektorientierte Programmiersprache bekannt ist, bietet es auch Unterstützung für prozedurale Programmierung. In Java können Funktionsaufrufe und Abläufe innerhalb von Methoden auf ähnliche Weise wie in rein prozeduralen Programmiersprachen wie C oder Pascal gestaltet werden. - Java ist eine stark Objektorientierte Programmiersprache. - statisch typisiert. Datentypen müssen festgelegt werden.
-Java ist eine vielseitige und Plattformunabhängige Programmiersprache und ist selbst nach 25 Jahren noch eine der beliebtesten Programmiersprachen.
## C
- C folgt einem klar vorgegeben Ablauf der Anweisungen und ist somit eine imperative Sprache. - Populäre Sprache für prozedurale Programmierung. - Es ist auch möglich objektorientierte Konzepte zu implementieren. - Statisch typisiert, Datentypen müssen deklariert werden.
- C folgt den Prinzipien einer klaren struktur und Effizienz. Die Sprache arbeitet eng an der Hardware und macht sie dadurch ideal für die Systemprogrammierung und Hardwarenahe Entwicklung.
## Python
- Python ist eine imperative Programmiersprache, welche allerdings auch einige deklarative Funktionen, wie Listenverständnis unterstützt. - Man kann Funktionen und Prozeduren erstellen, um logische Einheiten des Codes zu strukturieren. - Stark objektorientiert. Alles in Python ist ein Objekt und unterstützt die Erstellung von Klassen. - dynamische Typisiert, die Typen werden zur Laufzeit erkannt, also können Variablen ohne explizite Deklaration verwendet werden.
- Python ist eine vielseitige Sprache, welche viele Paradigmen unterstützt. Sie ist besonders gut lesbar und intuitiv beim schreiben, da ihre Syntax sehr nah am englischen ist. Anwendung auf allen gängigen Betriebssystem, wie Windows, MacOS, Linux und Unix möglich.
## Go
- Imperative Sprache mit der Möglichkeit deklarative Muster mit Funktionen und Filtern zu erstellen. - Man kann Funktionen und Prozeduren erstellen, um den Code in logische Einheiten zu unterteilen. - Es sind Strukturen möglich um Objektorientierte Konzepte, wie Datenkapselung zu ermöglichen. Allerdings ohne Klassen und Vererbung. - Funktionale Programmierung ist nur begrenzt möglich. - Statisch typisiert. Variablen müssen mit Typen deklariert werden.
- Go ist eine Programmiersprache aus dem hause Google, welche sich auf Einfachheit und Effizienz konzentriert. Sie wird z.B. in Cloud-Diensten und Bitcoin-Netzwerken verwendet.
## JavaScript
- Unterstützt imperative Programmierung. man kann den Code in einer sequenziellen und anweissungsbasierten Weise schreiben, um den Ablauf des Programms zu steuern. - Es gibt deklarative Muster bei der Arbeit mit Funktionen, wie map, filter und reduce für die Datenmanipulation. - Man kann Funktionen erstellen, um den Code zu strukturieren. - stark objektorentiert. - Dynamisch typisiert.
- Der Verwendungszweck liegt z.B. in der Entwicklung von interaktiven Websiten. Der Unterschied zu Java besteht darin, dass Java-Anwedungen auf einem virtuellen Rechner oder Browser ausgeführt werden, während JavaScript-Code nur auf einem Browser ausgeführt werden.
## TypeScript
- Imperative Sprache, welche auch deklarative Programmierung bei der Arbeit mit Funktionen für die Datentypen unterstützt. - Prozeduale Programmierung möglich. - TypeScript ist objektorientiert und erweitert die objektorientierten Funktionen von JavaScript. - es ist möglich funktionale Muster zu verwenden. - statisch typisiert.
- TypeScript ist eine Superset-Sprache von JavaScript und zusätzliche Features bietet und statische Typisierung zu JavaScript hinzufügt.
# Weitere Programmierprinzipien
## Modulare Programmierung
Modulare Programmierung ist ein Ansatz zur Bewältigung größerer Softwareprojekte. Sie erweitert den prozeduralen Ansatz, indem Prozeduren und Daten in logischen Einheiten, Module genannt, zusammengefasst werden. Diese Module werden einzeln entwickelt und getestet, bevor sie in einem logischen Zusammenhang miteinander verknüpft werden, um die vollständige Software zu erstellen.
## Logische Programmierung
In regelbasierten Programmiersprachen wie z.B. XSLT und Prolog werden Aufgaben und Prämissen als logische Aussagen formuliert, ähnlich zur funktionalen Programmierung. Der Interpreter versucht dann, die gewünschte Lösung basierend auf diesen Regeln abzuleiten. Dabei werden Regeln auf Daten überprüft, um festzustellen, ob sie instanziiert werden können. Anschließend werden Anweisungen gemäß den ausgewählten Regelinstanzen ausgeführt.
## Constraintprogrammierung
In der Constraintprogrammierung werden Constraints definiert, was als eine natürliche Weiterentwicklung der logischen Programmierung angesehen wird. Häufig werden sowohl die logische Programmierung als auch die Constraintprogrammierung in Kombination eingesetzt.
|