From 2772150e985939a097f6880c786c458cb7e07be2 Mon Sep 17 00:00:00 2001 From: TheUltimateOptimist Date: Thu, 2 Nov 2023 14:41:35 +0100 Subject: [PATCH] entry lecture 31th October --- Lerntagebuch.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/Lerntagebuch.md b/Lerntagebuch.md index db0dc56..f86c553 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -15,4 +15,56 @@ Favoring polymorphism over inheritance is one of such practices. More examples can be found on the [CleanCodeDeveloper](https://clean-code-developer.com) website. ### repetition -Developers should not be considered artists. An artist expresses his emotion with his work. On the contrary, developers solve a real world problem enabling businesses to gain an edge on their competitors for example. As such, developers are way closer to craftsmen than artists. \ No newline at end of file +Developers should not be considered artists. An artist expresses his emotion with his work. On the contrary, developers solve a real world problem enabling businesses to gain an edge on their competitors for example. As such, developers are way closer to craftsmen than artists. + +## lecture 31th October 2023 + +### takeaway +Programming paradigms: +- imperative -> program as a top down series of instructions +- procedural -> imperative but with procedures/functions +- declarative -> describing the problem is the main conern concrete instructions are generated from that description +- objectoriented -> supports object, classes and inheritance +- functional -> programs are created by applying and composing functions + +Typed programming languages: +- parameters, values as well as return values of functions receive a datatype +- the datatype can be set explicitly or implicitly (in modern languages at least) +- one example is C +- advantages are failing fast and IDE completion +- disadvantages are having to know every type from the get-go and later type changes breaking the code + +Untyped programming languages: +- datatypes are not specified +- sh is one example +- implicit type conversion is on of the advantages +- one disadvantage is type mistakes only surfacing at runtime + +SOLID: +- Seperation of Concerns +- Open/Closed Principle +- Liskov Substitution Principle +- Interface Seggregation Principle +- Dependency Inversion Principle + +STUPID: +- Singleton +- Tight Coupling +- Untestability +- Premature Optimization +- Indescriptive Naming +- Duplication + +Additional Principles: +- KISS -> Keep it simple and stupid +- FCoH -> Favor composition over inheritance +- SLA -> Single layer of abstraction +- YAGNI -> You aint't gonna need it +- IOC -> Inversion of control +- DI -> Dependency injection + +### perception +Following SOLID for the group project is a good idea. Additionally avoiding the pitfalls referred to as STUPID is also important. Added to that we should follow the KISS(Keep it simple and stupid) principle. + +### repetition +Functional programming is a paradigm that allows you to build programs by applying and composing functions. These functions allow no side affects. As a result functional programming can only be used for calculations and not for tasks like defining a UI for example. \ No newline at end of file