Getting rid of dynamic polymorphism and classes

Jakob Ovrum jakobovrum at gmail.com
Thu Nov 8 09:44:10 PST 2012


On Thursday, 8 November 2012 at 17:27:42 UTC, Tommi wrote:
> ..and it got me thinking, couldn't we just get rid of dynamic 
> polymorphism and classes altogether? Doesn't static 
> polymorphism through the use of duck typing and member function 
> delegates provide all that we need?

For a lot of programs (or parts of programs) that currently use 
runtime polymorphism, the answer seems to be yes, and Phobos is 
very good at helping D programmers do their polymorphism at 
compile-time.

But dynamic polymorphism is special in that it is just that - 
dynamic.

You can decide which implementation to use at runtime rather than 
having to do it at compile-time. When this runtime component is 
necessary, there is no replacement for runtime polymorphism.

As for function pointers and delegates, class-based polymorphism 
provides a couple of additional niceties: for one, vtables are 
created at compile-time. Secondly, it provides a lot of syntax 
and structure to the system that you don't have with arbitrary 
function pointers or delegates.

Emulating OOP (no, not Object *Based* Programming) with function 
pointers is a real pain. Without classes, we'd only be marginally 
better off than C in this area, thanks to delegates.




More information about the Digitalmars-d mailing list