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.
 

2.8 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)