4 ms·
> JS or even Python (both were not OO in first version) This isn't true for Python. Quoting Guido: "classes were added late during Python’s first year of devel
by pansa2 6y ago
> JS or even Python (both were not OO in first version)
This isn't true for Python. Quoting Guido: "classes were added late during Python’s first year of development at CWI, though well before the first public release" [0].
I don't think it's true for JS either - the first versions didn't have classes, but I believe they already had prototype-based OO.
[0] http://python-history.blogspot.com/2009/02/adding-support-for-user-defined-classes.html http://python-history.blogspot.com/2009/02/adding-support-fo...
- cies 6y agoI dont consider prototypes-based OO a real OO. I thought Python had classes in the first release but not to be used by library/application makers. But I was probably mistaken. Thanks for setting that straight. What I think is rather unidiomatic in OO langs is Pythons "function/methods" like `len(x)` which is implemented as `__length__()`. This is just weird/unintuitive/unidiomatic OO... I do not know what Guido was on when he thought this was a good idea.
- pansa2 6y ago> I dont consider prototypes-based OO a real OO. Fair enough - in some ways it’s like half-way to an OO system. Yes, it’s theoretically elegant to have everything be an object and not to have classes. However in the vast majority of cases it seems prototype-based OO is only used as a foundation upon which to build a class system. > What I think is rather unidiomatic in OO langs is Pythons "function/methods" like `len(x)` which is implemented as `__length__()`. AFAIK the reason for the double-underscore method for `len` is to avoid it accidentally working for, say, a Rectangle class that exposes `length` and `width`.