====== Programming concepts ====== ===== fundamental concepts ===== * conditionals * loops * data types * integer * floating point (precision: double, triple, quadruple) * structures * lists * arrays * object oriented programming * classes * objects * copy * shallow copy * copy on write (CoW) * copy on read * deep copy * lazy copy ===== Algorithms ===== * big O notation * recursion * iteration ===== Patterns ===== Patterns are recognisable structures of code which solve particular problems in a defined way. There are also [[antipatterns|Anti-Patterns]], which are things you should avoid. Often, using software development patterns too much leads to overdoing them, which is an anti-pattern. Anti-patterns lead to code smell, which is a way to say that something is not right with your code. ==== Gang of four patterns ==== * Factory * Builder * Prototype * Singleton * Adapter * Bridge * Composite * Decorator * Proxy * Facade * Flyweight * Chain of Responsibility * Command * Memento * Observer * Template Method * Visitor * Iterator * Mediator * State * Strategy ==== see also ==== * [[https://refactoring.guru/design-patterns/|Refactoring Guru: Design Patterns]]