diff --git a/programmierparadigmen.md b/programmierparadigmen.md index e69de29..f11afd9 100644 --- a/programmierparadigmen.md +++ b/programmierparadigmen.md @@ -0,0 +1,62 @@ +Java +- Objektorientierte, typisierte & funktionale (Verfeinerung des deklarativen Paradigmas) Programmierung +- beteiligte Objekte stehen im Fokus +- Verwendung von Klassen und Objekten +- Unterstützt Objekte, Klassen und Vererbung +- Neue Klassen können die Eigenschaften und Verhalten von bereits existierenden Klassen erben +- Kapselung von (Zustands-) Daten und Methoden +- Polymorphie (Behandlung von Objekten basierend auf ihrem Typ) +- Bessere Strukturierung +- Wiederverwendbarkeit von Programmteilen +- Einmal geschriebene Code kann künftig leicht gepflegt und modifiziert werden +- Bessere Testbarkeit + +C +- (1) Prozedurale, typisierte Programmierung + (1) + - Erweiterung des imperativen Paradigmas, um Algorithmen in überschaubare Teile zu zerlegen + - Kontrollstrukturen (Sequenz, Schleife, Verzweigung) zur Steuerung der Befehlsausführung + - Datenwerte definiert als benannte Variablen und darüber angesprochen + - Diesen Variablen sind Datentypen zugeordnet -> erlauben nur bestimmte Instruktionen + - Konzept der Abstraktion -> Entstehung von Gruppierungen und Hierarchie + + (2) + - Korrekte Verwendung der Objekte + - Sicherstellung, dass auf den Inhalt von Variablen keine Operationen ausgeführt werden, die syntaktisch oder semantische fehlerhaft sind + - Vermeidung von Laufzeitfehlern + +Python +- Ist eine universelle Open-Source-Programmiersprache +- Nutzt mehrere Programmierparadigmen, u.a. die objektorientierte, aspektorientierte und die funktionale Programmierung + - Funktionen sind nicht nur definiert und anwendbar, sondern auch wie Daten miteinander verknüpft, als Parameter verwendet und können als Funktionsergebnisse auftreten + - Ermöglicht, auf die in der imperativen Programmierung benötigten, inneren Zustände eines Berechnungsprozesses ebenso zu verzichten, wie auf die zugehörigen Zustandsänderungen + - Verzicht auf Seiteneffekte vereinfacht semantische Analyse eines Computerprogramms + - Möglichkeit zur regelbasierten, algebraischen Programmtransformation und -synthese + - Vereinfacht, Algorithmen ohne Berücksichtigung der Beschaffenheit der bearbeiteten Datenobjekte zu beschreiben und dadurch generischen Programmcode zu schreiben + +Go +- Kombinierbare Programmiersprache, die Nebenläufigkeit und automatische Speicherbereinigung unterstützt +- Bereinigung der Compiler-Ineffizienz in C und C++ +- Erleichterung von Softwareentwicklung mit Codebasen und Entwicklerteams +- Orientiert sich syntaktisch an der Programmiersprache C +- + +JavaScript +- Typenlose Programmiersprache (Typ von Variablen, Parametern & Rückgabewert wird nicht festgelegt) +- Nur faktische Kompatibilität +- Implizite Konvertierung +- Typenfehler treten erst zur Laufzeit des Programms auf + +TypeScript +- Compiler kompilierte Programmiersprache +- Unterstützt Kapseln von Klassen, Interfaces, Funktionen und Variablen in eigene Namensräume +- Bietet, existierenden JavaScript-Code und -Bibliotheken zu verwenden (JavaScript-Code = TypeScript-Code) + +Programmierprinzipien + +Clean Code > Clever Code +- Vermeidung von komplexem Code in einer Zeile +- Man sollte den Idiome der Sprache Acht geben + +Zusammensetzung > Vererbung +- statt Klassen zu erben, neues Verhalten für Objete mit komplexem Verhalten hinzufügen \ No newline at end of file