2 ms·
I think this is a good example for complexity management. Linus has a bottom-up approach to this. With a few building blocks you build up a system where you can
by wirrbel 12y ago
I think this is a good example for complexity management. Linus has a bottom-up approach to this. With a few building blocks you build up a system where you can define and work with simple algorithms that are both understandable and approachable by a single human mind.
The underlying assumption is that simple approaches can lead to an "easy" solution. To contrast this with a complex algorithm, a complex algorithm is in a lot of cases harder to implement and reason about.
I would like to object that generally, you cannot assume that simple means easy and complex means hard, there are complex systems that actually turn out to be easy to reason about and simple systems that turn out to be quite hard.
I actually would not be surprised if the next generation of VCS will feature more complexity than GIT to make working with rewritten history easier and to pave the way for certain workflows that git makes possible but not convenient. Then I hope that these approaches will be complex but easy.
PS: Subversion is for example an example for complex and hard. While the interface of subversion aims at being quite easy and usable, the implementation is very complex with a lot of corner cases, exceptions and an abundance of leaky abstractions. It is a primary example of top-down design gone wrong.