The Next Big Language
Gary Whatmore
no at spam.spam
Thu Oct 21 13:03:45 PDT 2010
I forgot Scala. They say Scala can @specialize without type erasure and it has variance polymorphism. What are these? Sounds as if Scala is getting closer to C++/D (instantiation and link-time optimization) and we need to fight back to make our language more expressive.
- G.W.
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.
>
> Paulo Pinto Wrote:
>
> > Sorry but I still don't get it.
> >
> > Do you mean that the types that erased and the same code is generated?
> >
> > Then let me say that .Net generics get generated on the fly and JITed for
> > each
> > different type.
> >
> > Eiffel and Modula-3 generics also have specific generated code for each
> > type.
> >
> > The major difference regarding C++ code is that the linkers are smarter and
> > are
> > able to remove duplicates of the generated code for the same set of type
> > arguments.
> >
> > --
> > Paulo
> >
> > "Jonathan M Davis" <jmdavisProg at gmx.com> wrote in message
> > news:mailman.755.1287643587.858.digitalmars-d at puremagic.com...
> > > On Wednesday 20 October 2010 22:47:15 Paulo Pinto wrote:
> > >> Eiffel does have templates, as in generic types.
> > >>
> > >> Or do you mean the compile time trick that C++ templates allow, thus
> > >> opening the door for
> > >> the meta programming done at compile time?
> > >
> > > Templates and generics are two separate - albeit related - things.
> > > Templates
> > > generate code whereas generics allow you to use multiple types with the
> > > same
> > > code (be it by generating code or by actually making them share code). C++
> > > templates happen to allow for metaprogramming beyond that, but I don't
> > > think
> > > that that's necessary for a language to be considered to have templates.
> > > The key
> > > thing is that templates _generate_ code whereas generics can simply make
> > > multiple types use the same code. C++ and D are the only languages that
> > > I'm
> > > aware of which have templates. Other languages with generics generally
> > > don't use
> > > templates to have generics.
> > >
> > > - Jonathan M Davis
> >
> >
>
More information about the Digitalmars-d
mailing list