The Next Big Language
Lutger
lutger.blijdestijn at gmail.com
Fri Oct 22 00:12:03 PDT 2010
Gary Whatmore wrote:
> What's the difference between:
>
> type polymorphism
> parametric polymorphism
> ad-hoc polymorphism
> generics
> c++ templates
> d style templates
> other templates (are there?)
>
> Does Java and C# have type polymorphism or generics or templates? What's
> the real name and how to compare? Is D most expressive? I bet it is.
>
> - G.W.
>
>From what I've read, the more general term is parametric polymorphism which
is broader than the Ada/C++ family of implementations (generics/templates).
One big difference is that generics are explicit or nominative, whereas
templates are implicit. In Java, Ada and C# you can only use features of
the generic parameters you explicitly constrain, while in C++ and D the
type checking is instead done at instantiation time, not based on the name
but on the structure of the code. This makes it more flexibele, the
argument for explicit polymorphism is that it has better type checking.
Other ways to compare include:
- what can be parametrized. Usually classes, interfaces and functions, D
can also parametrize more declarations at once.
- what kinds can serve as parameters. In Java and C# I think this is only
types, D expands that range to include values, symbols and function
literals.
- support for implicit instantiation
http://en.wikipedia.org/wiki/Type_polymorphism
and a somewhat lighter read: http://www.artima.com/intv/generics.html
More information about the Digitalmars-d
mailing list