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.

99 lines
3.6 KiB

  1. # Übung 2: Programmierparadigmen (03.11.2023)
  2. ## Programmiersprachen:
  3. ### Java
  4. * Objekt orientiert, unterstützt auch imperative und funktionale Programmierung.
  5. * Klassenbasiert
  6. * Zugriff wird klar definiert
  7. * Vererbung/Polymorphismus
  8. * Strikt typisiert.
  9. * Ähnlichkeiten zu C++
  10. * Standard Bibliotheken und Frameworks.
  11. * Langsamerer Start im Vergleich zu kompilierten Sprachen.
  12. * Funktionale Anteile seit neueren Java-Versionen
  13. * Anwendung: Web-Applikationen, Desktop-Anwendungen
  14. ### C
  15. * Imperativ, strukturiert.
  16. * Protedural
  17. * Statisch typisiert
  18. * Direkter Spreicherzugriff
  19. * Nutzung auf ziemlich allen Systemen
  20. * Fehlende abstrakte Konzepte im Vergleich zu moderneren Sprachen.
  21. * Manuelle Verwaltung des Speichers erforderlich.
  22. * Anwendung: Hardwarenahe Programmierung, Spielenentwicklung
  23. ### Python
  24. * Multiparadigma (Objektorientiert, Imperativ, Funktional).
  25. * Dynamisch typisiert.
  26. * Klare und lesbare Syntax.
  27. * Große Community und zahlreiche Bibliotheken.
  28. * Geringere Leistung im Vergleich zu kompilierten Sprachen.
  29. * Begrenzt in Echtzeitanwendungen aufgrund der Garbage Collection.
  30. * Anwendung: KI und maschinelles Lernen, Automatisierung und Skripting
  31. ### Go
  32. * Cross Platform Compilation
  33. * Imperativ / OOP aber keine Klassen / Vererbung.
  34. * Nebenläufig, kompiliert.
  35. * Einfach / lesbar
  36. * Effizient
  37. * Statisch typisiert.
  38. * Leistung vergleichbar mit C/C++ bei einfacherer Syntax.
  39. * Native Nebenläufigkeit mit Goroutinen und Kanälen.
  40. * Weniger Standardbibliotheken im Vergleich zu älteren Sprachen.
  41. * Weniger verbreitet in Unternehmen im Vergleich zu Java.
  42. * Anwendung: Cloud-basierte Anwendungen, Netzwerkanwendungen.
  43. ### Javascript
  44. * Multiparadigma (hauptsächlich imperativ und objektorientiert).
  45. * Dynamisch typisiert.
  46. * Einfach zu erlernen und schnelle Iteration.
  47. * Typisierungsprobleme können in größeren Projekten auftreten.
  48. * Keine natürliche Unterstützung für nebenläufige Programmierung.
  49. * Anwendung: Webentwicklung und Client-Seite.
  50. ### Typescript
  51. * Multiparadigma (basiert auf JavaScript, fügt statische Typen hinzu).
  52. * Statisch typisiert (optional dynamisch).
  53. * Fügt statische Typisierung zu JavaScript hinzu, verbessert die Robustheit.
  54. * Kompatibel mit dem vorhandenen JavaScript-Ökosystem.
  55. * Höhere Lernkurve für diejenigen, die nur mit JavaScript vertraut sind.
  56. * Erhöhte Komplexität der Entwicklung aufgrund der Hinzufügung von Typen.
  57. * Anwendung: Webentwicklung, Serverseitige Entwicklung.
  58. ## Weitere Programmierprinzipien:
  59. ### Logische Programmierung (LP)
  60. * Definition: Programmierung basierend auf mathematischer Logik.
  61. * Beispiel: Prolog.
  62. * Ursprung: Entwickelt für die künstliche Intelligenz.
  63. * Vorteile:
  64. * Natürliche Repräsentation von Wissen.
  65. * Deutliche Trennung von Daten und Prozess.
  66. * Nachteile:
  67. * Performanceprobleme bei großen Datenmengen.
  68. * Komplexität für Anfänger.
  69. ### Reaktive Programmierung (RP)
  70. * Definition: Manipulation und Verbreitung von Zustandsänderungen.
  71. * Beispiele: RxJava, React.js.
  72. * Ursprung: Entwickelt für ereignisgesteuerte Systeme.
  73. * Vorteile:
  74. * Schnelle Reaktion auf Zustandsänderungen.
  75. * Vereinfachte Handhabung von asynchronen Operationen.
  76. * Nachteile:
  77. * Komplexität bei der Verfolgung von Zustandsänderungen.
  78. * Lernkurve für Entwickler.
  79. ### Agentenorientierte Programmierung (AOP)
  80. * Definition: Design von autonom handelnden Softwareagenten.
  81. * Beispiele: Robotersteuerung, Multi-Agenten-Systeme.
  82. * Ursprung: Forschung im Bereich der Künstlichen Intelligenz.
  83. * Vorteile:
  84. * Autonome Entscheidungsfindung.
  85. * Skalierbarkeit durch verteilte Agenten.
  86. * Nachteile:
  87. * Komplexität in der Agenteninteraktion.
  88. * Schwierigkeiten bei der Koordination großer Agentenmengen.