diff --git a/lerntagebuch.md b/lerntagebuch.md index 7d1886f..2057402 100644 --- a/lerntagebuch.md +++ b/lerntagebuch.md @@ -2,7 +2,7 @@ ## SU 01 -"Eine Laie macht versehentlich etwas richtig, ein Profi mit Absicht." +*"Eine Laie macht versehentlich etwas richtig, ein Profi mit Absicht."* Ein Profi hat: - Fachwissen @@ -28,3 +28,21 @@ Wichtige Git Commands: - git commit -m "Message" - git push -uf origin main +## SU 02 + +### Lernziele +- Imperative Programmierung: Hardwarenahe, nahvollziehbar. +- Declarative Programmierung: Problems im Vordergrund, kürzer Programme, Beweise sind leichter durführbar, z.B. Haskell, Lisp, Prolog, XAML. +- Prozedurale Programmierung: Hierarchie von Funktionen, sequentiell abgearbeitet. Startpunkt ist in der Hauptprozedur. z.B. Fortran, COBOL, C, Pascal. +- Objektorientierte Programmierung: Objekte, Klassung, Polymorphie und Vererbung. z.B. C#, Java, C++... bessere Strukturierung, bessere Tetbarkeit, Wiederverwendbarkeit von Programmteilen. +- Funktionale Programmierung: z.B. Lisp, Haskell, OCAml, Erlang... Berechnungen sind effizient aber ist nur für Berechnungen. +- typisierte Programmiersprachen: fail Fast, Vervollständigungsvorschläge durch die IDE. z.B. C, Java, Typescript... +- typenlose Programmiersprachen: z.B. sh, cmd, JavaScript... nur faktische Kompatibilität, implizite Konvertierung, Typenfehler treten erst zur Laufzeit des Programms auf. +- Prinzipien der Programmierung: + - KISS Keep It Simple (and) Stupid + - FCoH Favor Composition over Inheritance + - SLA Single Layer of Abstraction + - YAGNI You Ain't Gonna Need It + - IOC Inversion of Control + - DI Dependency Injection +