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.2 KiB

Programmiersprachen:

## Java

    imperativ
    Streng typisiert
    objektorientiert
    funktionale Sprache


## C

     Imperativ
     Streng typisiert
     Vorteil: Hardwarenähe, Kompatibilität
     Schnelligkeit
     Nachteil: Speicherverwaltung

## Phyton

    Imperativ
    Objektorientiert
        Klassen und Objekte
        Hieratchien
    Funktional
        kompakte Syntax
    interpretierte Sprache
        Übersetzung in andere Sprachen möglich (Cython, etc.)
    Portabilität
    Typisierung
        *Dynamisch (Duck Typing)

## Go

    Modular, imperativ
    breite Palette an Programmierparadigmen
    Teilweise Objektorientiert & Funktional
        keine Vererbung
        statt Klassen werden Structs verwendet
    Einfache, effektive Programmierung
    Typisierung: Statisch typisiert
        vor der Kompilierung müssen Typen fest stehen
    Schnelligkeit von C & Anwendungsmöglichkeiten/Simplizität von Python
    Multi-Threading

## JavaScript/TypeScript

    Erweiterung von HTML
    Multi-Paradigmen
        OOP, Prozedural oder Funktional
    Dynamische Typisierung
    Andwendung: Interaktive Web-Anwendungen (z.B. Goolge Maps)
    Vorteile: modernes Erscheinungsbild, günstiger Server-Traffic (läuft im Browser)
        Dynamische Elemente
    Event-basiert (Callbacks)
        asynchrone Verarbeitung

## TypeScript

    typisiert
    imperativ, OOP
        je nach Anforderungen: prozedural oder funktional
    TS hat Einfluß von JS/Java/C#
    baut auf Supermenge von JS Bibliotheken auf
    Skalierbarkeit/Wartbarkeit -> durch Einführung OOP

Programmierprinzipien:

## DO IT

    (S) eparation of Concern (Programme aufteilen in kleine Teile, Methoden, Funktionen, Prozeduren)
    (O) pen/Closed Priciple (einfach neue Funktionalität zuzufügen, Änderungen bleiben lockal und haben keine Auswirkunng nach Aussen)
    (L) iskov Substitution Principle (so Code schreiben, dass andere keine Überraschungen mit ihrem Code hben)
    (I) nterface Segregation Principle (Clients sollen nicht gezwungen sein, die Schnittstellen abhängige Methoden zu implementieren. die sie nicht verwenden.Dies führt zu Schnittstellen, die nur die benötigten Methoden enthalten.)
    (D) ependency Inversion Principle (Teil der Logik in andere Klassen auslagern)

## DON'T DO IT

    (S) ingleton (zur Laufzeit des Programms gibt es nur eine Kopie des Codes)
    (T) ight Coupling (Teile die nichts miteinander zu tun haben sind sehr verbunden und die kann man nicht teilen)
    (U) ntestability (Code der sich nicht automatisiert testen lässt)
    (P) remature Optimisation (um Performance sich kümmern, erst wenn man Performance bereits hat; erst nach der Messung und nach der Nachweis, dass es diese Stelle ist)
    (I) ndescriptive Naming (ungenügende oder falsche Beschreibung anstatt die Bezeicher so zu benennen, dass sich selbst beschreiben)
    (D) uplication (duplizieren von Code; besser ist es ein wiederholendes Code in eine zentrale Strucktur auszulagern)