It just dawned on me. The issue with inheritance is cyclic dependencies. The parent class might depend on methods overridden in the child, and the child methods might depend on the parent. This cannot evolve gracefully
-
-
Replying to @etorreborre
Even without cyclic dependencies, you're still in the situation where the behavior of the class you're looking at is determined by all the classes you inherited from, & all their overrides, all the way up the trees; and none of them had any clue what you're doing (or visa versa).
5 replies 0 retweets 7 likes -
Replying to @jdegoes @etorreborre
Inheritance is antithetical to local reasoning, which is antithetical to graceful evolution; and cyclic inheritance is the worse. Inheritance is splattering the logic for something across the code base, in strange places where no one is aware what changing it might do.
1 reply 1 retweet 5 likes -
Replying to @jdegoes @etorreborre
In defense of non-local reasoning, it can be a great amplifier, if done right — i.e. if it *is* local in some sense, yet with non-local effects when transformed. Fourier transforms. Cellular automatons. Emergent behavior... it's important to know what to control and what not to.
1 reply 0 retweets 2 likes
I would go further: all non-trivial programming is about non-local reasoning. If the result of the program are smaller than the program, the program could be shortened to a quote of the result. If the data were inert with no remote interaction, there would be nothing to code.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
Read my blog!