Sabina Grisi
1 year ago
1 changed files with 99 additions and 0 deletions
@ -0,0 +1,99 @@ |
|||||
|
# Übung 2: Programmierparadigmen (03.11.2023) |
||||
|
|
||||
|
## Programmiersprachen: |
||||
|
|
||||
|
### Java |
||||
|
* Objekt orientiert, unterstützt auch imperative und funktionale Programmierung. |
||||
|
* Klassenbasiert |
||||
|
* Zugriff wird klar definiert |
||||
|
* Vererbung/Polymorphismus |
||||
|
* Strikt typisiert. |
||||
|
* Ähnlichkeiten zu C++ |
||||
|
* Standard Bibliotheken und Frameworks. |
||||
|
* Langsamerer Start im Vergleich zu kompilierten Sprachen. |
||||
|
* Funktionale Anteile seit neueren Java-Versionen |
||||
|
* Anwendung: Web-Applikationen, Desktop-Anwendungen |
||||
|
|
||||
|
### C |
||||
|
* Imperativ, strukturiert. |
||||
|
* Protedural |
||||
|
* Statisch typisiert |
||||
|
* Direkter Spreicherzugriff |
||||
|
* Nutzung auf ziemlich allen Systemen |
||||
|
* Fehlende abstrakte Konzepte im Vergleich zu moderneren Sprachen. |
||||
|
* Manuelle Verwaltung des Speichers erforderlich. |
||||
|
* Anwendung: Hardwarenahe Programmierung, Spielenentwicklung |
||||
|
|
||||
|
### Python |
||||
|
* Multiparadigma (Objektorientiert, Imperativ, Funktional). |
||||
|
* Dynamisch typisiert. |
||||
|
* Klare und lesbare Syntax. |
||||
|
* Große Community und zahlreiche Bibliotheken. |
||||
|
* Geringere Leistung im Vergleich zu kompilierten Sprachen. |
||||
|
* Begrenzt in Echtzeitanwendungen aufgrund der Garbage Collection. |
||||
|
* Anwendung: KI und maschinelles Lernen, Automatisierung und Skripting |
||||
|
|
||||
|
### Go |
||||
|
* Cross Platform Compilation |
||||
|
* Imperativ / OOP aber keine Klassen / Vererbung. |
||||
|
* Nebenläufig, kompiliert. |
||||
|
* Einfach / lesbar |
||||
|
* Effizient |
||||
|
* Statisch typisiert. |
||||
|
* Leistung vergleichbar mit C/C++ bei einfacherer Syntax. |
||||
|
* Native Nebenläufigkeit mit Goroutinen und Kanälen. |
||||
|
* Weniger Standardbibliotheken im Vergleich zu älteren Sprachen. |
||||
|
* Weniger verbreitet in Unternehmen im Vergleich zu Java. |
||||
|
* Anwendung: Cloud-basierte Anwendungen, Netzwerkanwendungen. |
||||
|
|
||||
|
### Javascript |
||||
|
* Multiparadigma (hauptsächlich imperativ und objektorientiert). |
||||
|
* Dynamisch typisiert. |
||||
|
* Einfach zu erlernen und schnelle Iteration. |
||||
|
* Typisierungsprobleme können in größeren Projekten auftreten. |
||||
|
* Keine natürliche Unterstützung für nebenläufige Programmierung. |
||||
|
* Anwendung: Webentwicklung und Client-Seite. |
||||
|
|
||||
|
### Typescript |
||||
|
* Multiparadigma (basiert auf JavaScript, fügt statische Typen hinzu). |
||||
|
* Statisch typisiert (optional dynamisch). |
||||
|
* Fügt statische Typisierung zu JavaScript hinzu, verbessert die Robustheit. |
||||
|
* Kompatibel mit dem vorhandenen JavaScript-Ökosystem. |
||||
|
* Höhere Lernkurve für diejenigen, die nur mit JavaScript vertraut sind. |
||||
|
* Erhöhte Komplexität der Entwicklung aufgrund der Hinzufügung von Typen. |
||||
|
* Anwendung: Webentwicklung, Serverseitige Entwicklung. |
||||
|
|
||||
|
## Weitere Programmierprinzipien: |
||||
|
|
||||
|
### Logische Programmierung (LP) |
||||
|
* Definition: Programmierung basierend auf mathematischer Logik. |
||||
|
* Beispiel: Prolog. |
||||
|
* Ursprung: Entwickelt für die künstliche Intelligenz. |
||||
|
* Vorteile: |
||||
|
* Natürliche Repräsentation von Wissen. |
||||
|
* Deutliche Trennung von Daten und Prozess. |
||||
|
* Nachteile: |
||||
|
* Performanceprobleme bei großen Datenmengen. |
||||
|
* Komplexität für Anfänger. |
||||
|
|
||||
|
### Reaktive Programmierung (RP) |
||||
|
* Definition: Manipulation und Verbreitung von Zustandsänderungen. |
||||
|
* Beispiele: RxJava, React.js. |
||||
|
* Ursprung: Entwickelt für ereignisgesteuerte Systeme. |
||||
|
* Vorteile: |
||||
|
* Schnelle Reaktion auf Zustandsänderungen. |
||||
|
* Vereinfachte Handhabung von asynchronen Operationen. |
||||
|
* Nachteile: |
||||
|
* Komplexität bei der Verfolgung von Zustandsänderungen. |
||||
|
* Lernkurve für Entwickler. |
||||
|
|
||||
|
### Agentenorientierte Programmierung (AOP) |
||||
|
* Definition: Design von autonom handelnden Softwareagenten. |
||||
|
* Beispiele: Robotersteuerung, Multi-Agenten-Systeme. |
||||
|
* Ursprung: Forschung im Bereich der Künstlichen Intelligenz. |
||||
|
* Vorteile: |
||||
|
* Autonome Entscheidungsfindung. |
||||
|
* Skalierbarkeit durch verteilte Agenten. |
||||
|
* Nachteile: |
||||
|
* Komplexität in der Agenteninteraktion. |
||||
|
* Schwierigkeiten bei der Koordination großer Agentenmengen. |
Write
Preview
Loading…
Cancel
Save
Reference in new issue