(no title)
raymondh | 1 year ago
* There are more 64-bit integers than C floats/doubles. But in math, reals are a superset of the integers.
* Because floats are rounded, `x < x + 1`, is not an invariant.
* The possibility of a `NaN` value means that the assignment `y = x` does not guarantee that x and y are equal.
* Floats are implemented as binary fractions, so they are actually rationals.
I disagree with the OP that OOP is entirely flawed. The core ideas of encapsulation and messaging are a really useful organizing principle. And polymorphism beats maintaining giant case-statements.
Only when inheritance is added to the mix does it get dicey. As a tool for code reuse, it is not a bad idea. I think the central problem is that people want more from inheritance that it has to give (especially if you expect that children are always substitutable for their parents).
mrkeen|1 year ago
Does OOP actually do encapsulation, messaging or polymorphism better than other languages though?
raymondh|1 year ago
IIRC the inspiration came from multicellular organisms. A cell "encapsulates" complexity within a cell wall. The organism as a whole works by have the cells work together via "messaging". Any shared interfaces (e.g. oxygen transpiration and nutrient absorption) can be viewed as "polymorphism".
If you buy into the definition and biological analogy, then any language that implements "encapsulation, messaging or polymorphism" actually is OOP and your question is a tautology.