You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.6 KiB
3.6 KiB
Ü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.