Anti-OOP... stupid?

foobar foo at bar.com
Wed Feb 15 12:12:30 PST 2012


On Wednesday, 15 February 2012 at 15:35:37 UTC, bearophile wrote:
> foobar:
>
>> 1. D templates are an enhanced version of C++ templates which 
>> are a poor design. The problem stems IMO not from issues with 
>> OOP but rather with the horrible idea of C++-like templates. 
>> Other languages have *much* better solutions which integrate 
>> better.
>
> C++ is one of the most commonly used languages, probably there 
> are billions of lines of C++ in use, and C++ library code uses 
> templates often, so despite the well known flaws of C++ 
> templates (bloat, bad error messages, etc), they are somehow 
> "good enough", they aren't horrible.
>
> Compared to C++, D templates introduce constraints, a better 
> syntax, and more uniform/sane semantics of details. Bjarne 
> Stroustrup is still trying to invent simplified Concepts to 
> improve C++ templates, to give them "static" types.
>
> Java generics, C# generics, Ada generic programming, C++ 
> templates, ML polymorphism, Haskell type inference with type 
> classes, Haskell template extensions, are designed to satisfy 
> different needs and constraints. All of them are used and 
> useful, none of them are perfect.
>
> Bye,
> bearophile

I beg to differ. I was talking about the *design* aspect of 
templates and you seem to agree that it is flawed. the design 
*is* horrible and can be compared to other better designs. The 
fact that it is used in so much software is a completely 
orthogonal matter. Most people use qwerty keyboards (including 
me) but that does not mean it's the superior design. on the 
contrary, it was *intentionally* designed to be flawed for 
historical reasons that are no longer relevant. what is "good 
enough"? it is highly subjective. Is it enough to be commonly 
used by many people? what other criteria would be required to 
classify as good enough and not worth improvement? should we 
never strive to achieve better designs?

I don't know Haskell and won't comment on the above mentioned 
features but regarding generics (e.g in C#) - they have no 
conflicts with OOP and are a good feature.


More information about the Digitalmars-d-learn mailing list