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