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.

103 lines
3.1 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. # Programmierparadigmen
  2. ## Java
  3. - Ähnlichkeiten zu C und C++
  4. - Standardbibliothek
  5. - strikt typisiert
  6. - objektorientierte Programmiersprache (Klassen, Vererbung)
  7. - funktional (Lambda-Funktion)
  8. - imperativ
  9. - Webanwendung, Desktopanwendung
  10. ## C
  11. - imperative Programmiersprache
  12. - prozedurale Programmiersprache
  13. - typisierte
  14. - Anwendung: Hardwarenahe Programmierung, direkter Speicherzugriff
  15. - kann auf allen Systemen verwendet werden
  16. - kleine Standardbibliothek (kleiner Befehlssatz)
  17. ## Python
  18. - Python basiert auf C und C++
  19. - fällt in die Kategorie der interpretierten Sprachen, da kein Compiler benötigt wird
  20. - imperative
  21. - prozedurale
  22. - deklarative
  23. - funktionale
  24. - objektorientierte
  25. - typisierte (im Hintergrund)
  26. ## go
  27. - einfach und lesbar und effizient (durch low-level-Sprache)
  28. - Es besitzt eine Standardbibliothek
  29. - Orientiert sich an C.
  30. - objektorientierte Programmiersprache (Objekte, aber keine Klassen)
  31. - typisiert
  32. - imperativ
  33. ## JavaScript
  34. - basiert auf C
  35. - typisiert
  36. - imperativ
  37. - funktionale (Ursprüngliche Daten werden nicht verändert/ nur in Funktionen)
  38. - objektorientiert (Klassenlos)
  39. - Moduleerstellung
  40. - Universelle Benutzung
  41. - interaktiv
  42. - Kompatibilitätsprobleme bei unterschiedlichen Browsern
  43. - Webapplikation
  44. - asynchrone Verarbeitung (Callback)
  45. ## TypeScript
  46. - baut auf Java Script auf
  47. - Starke Typisierung
  48. - Statische und dynamische Datentypen
  49. - Webapplikationen
  50. - objektorientiert
  51. - funktional
  52. - imperativ
  53. # Programmierprinzipien
  54. ## SOLID
  55. ### Separations of Concern
  56. Module sollten einem und nur einem Akteur gegenüber verantwortlich sein
  57. ### Open/Closed Principle
  58. Bei der Entwicklung von Klassen, Methoden, Modulen usw. sollen Erweiterungen einfach implimentierbar sein,
  59. aber ohne die bestehenden Verhältnisse zu verändern.
  60. ### Liskov Substitution Principle
  61. Subklassen sollen immer Eigenschaften der Superklasse erfüllen und auch als solche verwendet werden können.
  62. ### Interface Segregation Principle
  63. Interfaces sollen an Bedürfnis des Client angepasst werden und nicht übermäßig überladen werden.
  64. ### Dependency Inversion Principle
  65. Module höherer Ebene sollten nicht von Modulen niedriger Ebene abhängen. Beide sollten von Abstraktionen abhängen.
  66. Abstraktionen sollten nicht von Details abhängen. Details sollten von Abstraktionen abhängen.
  67. ## STUPID
  68. ### Singelton
  69. Es wird nur genau ein Objekt pro Klasse erzeugt und global zur Verfügung gestellt.
  70. Es kann dadurch zu Abhängigkeiten führen, die man nicht direkt sehen kann.
  71. ### Tight Coupling
  72. Module zu stark verkuppelt, dass Änderungen in einem Modul immer zu einer weiteren Änderung führen müssen.
  73. Isolierte Testungen sind so fast unmöglich.
  74. ### Untestability
  75. Untestbarkeit von Modulen (z.B. durch Tight Coupling)
  76. ### Premature Optimization
  77. Frühzeitige Optimierung bevor überhaupt Probleme entstanden sind (viel Zeit für nichts).
  78. ### Indescriptive Naming
  79. Ungenaue Benennung von Variablen, Funktionen usw. Andere Programmierer haben Probleme diesen Code nachzuvollziehen.
  80. ### Duplication
  81. Keine Dopplung von den selben Code. Änderung müssen mehrmals vorgenommen werden.