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.

135 lines
5.6 KiB

  1. # Lerntagebuch
  2. ###### Übung 2 08.11.2022
  3. ## Analysieren Programmierparadigmen
  4. ### Java
  5. Java ist eine plattformübergreifende, Objektorientierte und netzzentrierte Sprache. Java wird auch als ComputingßPlattform verwendet.
  6. #### Vorteil
  7. Java
  8. - unterstützt multi-threading.
  9. - ist Objektorientierte
  10. - ist dynamisch, was das Runtime-system angeht. Klassen werden dann gelinkt, wenn sie benötigt werden.
  11. #### Nachtteil
  12. - die Performance ist verringert, da java-code vom Interpreter (der die Plattformunabhängigkeit erst möglich macht) interpretiert wird.
  13. ### C
  14. C ist eine universelle Programmiersprache, die sehr beliebt, einfach und flexibel ist. Es ist eine strukturierte Programmiersprache, die maschinenunabhängig ist und ausgiebig zum Schreiben verschiedener Anwendungen, Betriebssysteme wie Windows und vieler anderer komplexer Programme wie Oracle-Datenbank, Git, Python-Interpreter und mehr verwendet wird.
  15. #### Vorteil
  16. - Es ist eine robuste Sprache.
  17. - Es handelt sich um eine Sprache mit niedrigem Programmierniveau, die der Maschinensprache nahe kommt.
  18. - Sie wird häufig in der Softwareentwicklung eingesetzt.
  19. - Es handelt sich um eine prozedur- und strukturorientierte Sprache.
  20. - Sie hat die volle Unterstützung verschiedener Betriebssysteme und Hardware-Plattformen.
  21. #### Nachtteil
  22. - Eine allzu große Freiheit beim Kodieren kann dazu führen, dass schwer lesbarer Code geschrieben wird.
  23. - Als Anfänger haben Sie bereits direkten Zugriff auf die Hardware und können somit vieles durcheinander bringen, wenn Sie nicht wissen, was Sie genau tun.
  24. - Fehler, die bei anderen Sprachen beim Compiler-Lauf abgeschaltet werden, werden unter Umständen nicht gefunden. Meist treten solche Fehler erst dann auf, wenn das Programm bereits freigegeben wurde.
  25. ### Python
  26. Python ist eine interpretierte, objektorientierte High-Level-Programmiersprache mit dynamischer Semantik. Seine hochentwickelten, integrierten Datenstrukturen, kombiniert mit dynamischer Typisierung und dynamischer Bindung, machen es sehr attraktiv für die schnelle Anwendungsentwicklung sowie für die Verwendung als Skript- oder Klebesprache, um bestehende Komponenten miteinander zu verbinden.
  27. #### Vorteil
  28. - Python bietet für fast alle Anwendungsprobleme eine Lösung.
  29. - Python ist leichter zu lernen als viele andere Programmiersprachen.
  30. - Python ist aufgrund seiner Struktur gut lesbar, so können Bugs schnell gefunden und behoben werden
  31. - Python ist dynamisch typisiert. Es ist also in Python nicht notwendig, den Typ von Variablen oder Funktionsargumenten zu definieren.
  32. #### Nachtteil
  33. - Python ist etwas langsam und eignet sich für bestimme Anwendungen nur bedingt.
  34. - wenn man noch nicht so viel Erfahrung hat, kann es vorkommen, dass man den Code umständlicher gestaltet, als unbedingt notwendig.
  35. ### Go (Golang)
  36. Go (auch Golang oder Go-Sprache genannt) ist eine Open-Source-Programmiersprache, die für allgemeine Zwecke verwendet wird. Go wurde von Google-Ingenieuren entwickelt, um verlässliche und effiziente Software zu erstellen. Go ist ähnlich wie C modelliert, ist statisch typisiert und explizit.
  37. #### Vorteil
  38. - Schnelle Kompilierung und Ausführungsgeschwindigkeit
  39. - Keine virtuelle Maschine (VM) erforderlich
  40. - Übertragbarkeit
  41. - Leichtgewichtige Goroutinen, die Gleichzeitigkeit unterstützen
  42. - Schnittstellen ermöglichen lose gekoppelte Systeme
  43. - Automatische Garbage Collection
  44. - Speichersicherheit
  45. - Unabhängige Fehlerbehandlung
  46. - Umfangreiche integrierte Bibliotheken
  47. #### Nachtteil
  48. - Keine Unterstützung von Generika oder der Möglichkeit, abstrakten, - - impliziten Code zu schreiben
  49. - Fehlende Sicherheit zur Laufzeit
  50. - Erzwingt strenge Regeln
  51. - Unvereinbar mit Funktionsüberladung
  52. - Konventionell nicht objektorientiert
  53. ### JavaScript
  54. JavaScript (JS) ist eine Programmier- bzw. Skriptsprache, die hauptsächlich im Web verwendet wird. Sie wird zur Verbesserung und Interaktivität von HTML-Seiten eingesetzt und ist häufig in HTML-Code eingebettet. JavaScript ist eine interpretierte Sprache.
  55. #### Vorteil
  56. - Moderenes Erscheinungsbild
  57. - leichter zu erlernen als typbasierte Sprachen wie (C#, Java, C++ etc)
  58. - läuft überall (windows, linux, mac etc.)
  59. - läuft im Browser (Webanwendungen werden immer beliebter)
  60. große Community weshalb fast jede Frage die auftreten könnte schon im Internet beantwortet wurde
  61. #### Nachtteil
  62. - code wird schnell unleserlich und somit sehr schwer auf Dauer zu pflegen
  63. - viele der Librarys haben Abhängigkeiten was bedeutet dass sobald einer diese Abhängigkeiten sich ändert oder kaputt geht die Library an sich kaputt geht und somit auch deine Applikation
  64. -das debugging, also die Fehlersuche ist enorm schwer und lästig da kein Editor in der Lage ist dir im vorhinein zu sagen ob eine Variabel existiert oder nicht und du so sehr schnell deine Schreibfehler übersiehts und Sie meist erst nach langer Sucherei findest
  65. - javascript ist vergleichsweise sehr langsam jedoch macht dies mit der heutigen Technik eher weniger aus.
  66. ## Porgrammier Prinziple
  67. #### SOLID
  68. **S**eparations of Concern
  69. **O**pen/Closed Principle
  70. **L**iskov Substitution Principle
  71. **I**nterface Segregation Principle
  72. **D**ependency Inversion Principle
  73. #### STUPID
  74. **S**ingelton
  75. **T**ight Coupling
  76. **U**ntestability
  77. **P**remature Optimization
  78. **I**ndescriptive Naming
  79. **D**uplication
  80. #### KISS
  81. **K**eep **I**t **S**imple (and) **S**tupid
  82. #### FCoH
  83. **F**avor **C**omposition **o**ver **I**nheritance
  84. ####SLA
  85. **S**ingle **L**ayer of **A**bstraction
  86. #### YAGNI
  87. **Y**ou **A**in’t **G**onna **N**eed **I**t
  88. #### IOC
  89. **I**nversion **o**f **C**ontrol
  90. ####DI
  91. **D**ependency **I**njection
  92. #### DRY
  93. **D**on't **R**epeat **Y**ourself
  94. ### DYC
  95. **D**ocument **Y**our **C**ode
  96. #### Clean Code At All Costs