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.

66 lines
4.0 KiB

1 year ago
  1. # Analyse der Programmiersprachen
  2. ## Java
  3. - **Paradigma**: Hauptsächlich Objektorientiert, unterstützt auch imperative und prozedurale Programmierung.
  4. - **Vorteile**: Starke Typisierung, gute Wiederverwendbarkeit von Code, fördert modulare Programmierung.
  5. - **Nachteile**: Weniger geeignet für funktionale Programmierung, kann umständlicher sein für kleine Projekte.
  6. ## C
  7. - **Paradigma**: Imperativ und prozedural.
  8. - **Vorteile**: Nähe zur Hardware, hohe Performance, Kontrolle über Speichermanagement.
  9. - **Nachteile**: Keine Unterstützung für objektorientierte oder funktionale Programmierung, höheres Risiko für Speicherfehler.
  10. ## Python
  11. - **Paradigma**: Multiparadigmatisch – unterstützt objektorientierte, imperative, prozedurale und in begrenztem Maße funktionale Programmierung.
  12. - **Vorteile**: Einfache Syntax, vielseitig einsetzbar, große Standardbibliothek.
  13. - **Nachteile**: Langsamer als kompilierte Sprachen, dynamische Typisierung kann zu Laufzeitfehlern führen.
  14. ## Go
  15. - **Paradigma**: Hauptsächlich prozedural und imperativ, mit einigen Elementen aus der objektorientierten Programmierung.
  16. - **Vorteile**: Einfache Syntax, gute Unterstützung für Nebenläufigkeit (Concurrency), effiziente Speicherverwaltung.
  17. - **Nachteile**: Eingeschränkte Generika-Unterstützung, fehlende Funktionen für objektorientierte Programmierung im Vergleich zu anderen Sprachen.
  18. ## JavaScript
  19. - **Paradigma**: Hauptsächlich objektorientiert und funktional, unterstützt auch imperative Programmierung.
  20. - **Vorteile**: Hohe Flexibilität, dynamische Typisierung, weit verbreitet im Web.
  21. - **Nachteile**: Inkonsequenzen im Sprachdesign, dynamische Typisierung kann zu unerwarteten Fehlern führen.
  22. ## TypeScript
  23. - **Paradigma**: Objektorientiert, funktional und imperativ; Erweiterung von JavaScript.
  24. - **Vorteile**: Statische Typisierung für JavaScript, bessere Tools zur Fehlerfindung zur Entwicklungszeit, kompatibel mit JavaScript.
  25. - **Nachteile**: Erfordert Kompilierung, kann in komplexen Projekten zusätzliche Komplexität einführen.
  26. ## Programmierprinzipien
  27. ### 1. SOLID
  28. - **Langbezeichnung**: Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
  29. - **Beschreibung**: Fünf zentrale Prinzipien der objektorientierten Programmierung und des Software-Designs. Sie unterstützen die Entwicklung von wartbarer, verständlicher und erweiterbarer Software.
  30. ### 2. DRY
  31. - **Langbezeichnung**: Don't Repeat Yourself
  32. - **Beschreibung**: Dieses Prinzip zielt darauf ab, Wiederholungen von Softwaremustern zu vermeiden. Es verbessert die Wartbarkeit, indem Redundanzen im Code reduziert werden.
  33. ### 3. TDD
  34. - **Langbezeichnung**: Test-Driven Development
  35. - **Beschreibung**: Ein Ansatz in der Softwareentwicklung, bei dem Tests vor der Implementierung des eigentlichen Codes geschrieben werden, um sauberen und fehlerfreien Code zu fördern.
  36. ### 4. BDD
  37. - **Langbezeichnung**: Behavior-Driven Development
  38. - **Beschreibung**: Eine Weiterentwicklung von TDD, die darauf fokussiert ist, das Verhalten einer Softwareanwendung durch beispielhafte Szenarien in verständlicher Sprache zu definieren.
  39. ### 5. LSP
  40. - **Langbezeichnung**: Liskov Substitution Principle
  41. - **Beschreibung**: Ein Prinzip des SOLID-Prinzips, das aussagt, dass Objekte einer Superklasse durch Objekte ihrer Unterklassen ersetzt werden können, ohne die Funktionalität des Programms zu beeinträchtigen.
  42. ### 6. CCP
  43. - **Langbezeichnung**: Common Closure Principle
  44. - **Beschreibung**: Klassen, die sich gemeinsam ändern, sollten in einem Paket gruppiert werden. Dadurch werden unbeabsichtigte Auswirkungen auf andere Softwareteile minimiert.
  45. ### 7. CRP
  46. - **Langbezeichnung**: Common Reuse Principle
  47. - **Beschreibung**: Empfiehlt, dass Klassen, die in einem Paket gruppiert sind, gemeinsam wiederverwendet werden sollten, um unerwünschte Abhängigkeiten zu vermeiden.
  48. ### 8. OCP
  49. - **Langbezeichnung**: Open-Closed Principle
  50. - **Beschreibung**: Ein weiteres SOLID-Prinzip, das besagt, dass Softwarekomponenten für Erweiterungen offen, jedoch für Modifikationen geschlossen sein sollten.