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

Ü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.