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