Is Inheritance That Evil?

Why inheritance is considered as a pillar of OOP when so many developers criticize it? We'll see where inheritance comes from and what problems it solves.
Why inheritance is considered as a pillar of OOP when so many developers criticize it? We'll see where inheritance comes from and what problems it solves.
We continue our walk on the path leading to Vim mastery by reviewing crazy Vim functionalities which will increase even more your productivity.
Depending on its intensity, the imposter syndrome can be a gruesome feeling causing other mental health issues like burnout or even depression. What's the imposter syndrome? Where does it come from? Can we overcome it? Let's look at the studies on the subject to gather some answers.
You know already the basics of Vim and you want to get better? This article explains more advanced Vim concepts.
Recursion is more than repeating a function again and again: it's a process of expansion and reduction. As often, practicing is the best way to grasp this difficult concept. That's why this article propose a short explanation as well as examples and exercises.
Compilation and interpretation can be seen as different concepts, even if they are two similar ways to translate source code, often into machine code. What is machine code? How does a computer execute a program? What's the difference between interpretation and compilation, and why does it matter? What are their benefits and drawbacks?
Type systems are core components of programming languages. However, it's easy to get confused by the rich vocabulary we use to describe them, especially since they seem to have different sense depending of the programming language you speak about. What are the big ideas of a type system? Is there a better type system to rule them all?
Why nobody seems to agree when to apply the Single Responsibility Principle? Why is it often misunderstood? Let's see what are the first principles of the SRP.
For 30 years, command-line interfaces have been developed and extended to solve many problems developers can have. That's why the shell is the keystone of a powerful and efficient development environment. It's important to choose one which help you accomplish your goals without getting in your way. It's exactly what Zsh does.
As developers, learning is part of our job. We need to learn about many different topics to be good problem solvers. How to learn effectively, and efficiently? This is the question this article try to answer by brushing over the vast concept of learning.