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.

84 lines
2.8 KiB

  1. # Programmiersprachen:
  2. ## Java
  3. - imperativ
  4. - Streng typisiert
  5. - objektorientiert
  6. - funktionale Sprache
  7. ## C
  8. - Imperativ
  9. - Streng typisiert
  10. - Vorteil: Hardwarenähe, Kompatibilität
  11. - Schnelligkeit
  12. - Nachteil: Speicherverwaltung
  13. ## Phyton
  14. - Imperativ
  15. - Objektorientiert
  16. - Klassen und Objekte
  17. - Hieratchien
  18. - Funktional
  19. - kompakte Syntax
  20. - interpretierte Sprache
  21. - Übersetzung in andere Sprachen möglich (Cython, etc.)
  22. - Portabilität
  23. - Typisierung
  24. - Dynamisch (Duck Typing)
  25. ## Go
  26. - Modular, imperativ
  27. - breite Palette an Programmierparadigmen
  28. - Teilweise Objektorientiert & Funktional
  29. - keine Vererbung
  30. - statt Klassen werden Structs verwendet
  31. - Einfache, effektive Programmierung
  32. - Typisierung: Statisch typisiert
  33. - vor der Kompilierung müssen Typen fest stehen
  34. - Schnelligkeit von C & Anwendungsmöglichkeiten/Simplizität von Python
  35. - Multi-Threading
  36. ## JavaScript/TypeScript
  37. - Erweiterung von HTML
  38. - Multi-Paradigmen
  39. - OOP, Prozedural oder Funktional
  40. - Dynamische Typisierung
  41. - Andwendung: Interaktive Web-Anwendungen (z.B. Goolge Maps)
  42. - Vorteile: modernes Erscheinungsbild, günstiger Server-Traffic (läuft im Browser)
  43. - Dynamische Elemente
  44. - Event-basiert (Callbacks)
  45. - asynchrone Verarbeitung
  46. ## TypeScript
  47. - typisiert
  48. - imperativ, OOP
  49. - je nach Anforderungen: prozedural oder funktional
  50. - TS hat Einfluß von JS/Java/C#
  51. - baut auf Supermenge von JS Bibliotheken auf
  52. - Skalierbarkeit/Wartbarkeit -> durch Einführung OOP
  53. # Programmierprinzipien:
  54. ## DO IT
  55. - (S) eparation of Concern (Programme aufteilen in kleine Teile, Methoden, Funktionen, Prozeduren)
  56. - (O) pen/Closed Priciple (einfach neue Funktionalität zuzufügen, Änderungen bleiben lockal und haben keine Auswirkunng nach Aussen)
  57. - (L) iskov Substitution Principle (so Code schreiben, dass andere keine Überraschungen mit ihrem Code hben)
  58. - (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.)
  59. - (D) ependency Inversion Principle (Teil der Logik in andere Klassen auslagern)
  60. ## DON'T DO IT
  61. - (S) ingleton (zur Laufzeit des Programms gibt es nur eine Kopie des Codes)
  62. - (T) ight Coupling (Teile die nichts miteinander zu tun haben sind sehr verbunden und die kann man nicht teilen)
  63. - (U) ntestability (Code der sich nicht automatisiert testen lässt)
  64. - (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)
  65. - (I) ndescriptive Naming (ungenügende oder falsche Beschreibung anstatt die Bezeicher so zu benennen, dass sich selbst beschreiben)
  66. - (D) uplication (duplizieren von Code; besser ist es ein wiederholendes Code in eine zentrale Strucktur auszulagern)