Browse Source

Mein dritter Commit

remotes/origin/HEAD
Sabina Grisi 1 year ago
parent
commit
08049bfe5c
  1. 99
      Programmierparadigmen.md

99
Programmierparadigmen.md

@ -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.
Loading…
Cancel
Save