Steven Schveighoffer wrote:
I'd ask the naysayers of interfaces for dcollections, and also the supporters: what is the point of having interfaces in D? Are interfaces pretty much obsolete, and I am just nostalgic about their utility?

Interfaces are for runtime polymorphism, rather than compile time polymorphism. They are especially useful for things like:

1. runtime plugin interfaces
2. designs where strict implementation hiding is desired
3. to have binary libraries (shared and static)
4. to support Java/C# style coding
5. reduced code memory footprint
6. experience shows they are an excellent fit for user interfaces


Compile time polymorphism, such as what templates provide, are most useful for:

1. maximum performance
2. minimal data memory consumption
3. better compile time checking


I believe the tradeoffs for collection types favor compile time polymorphism because:

1. performance is often critical for collections
2. C++ STL has shown the success of this approach
3. collections must fit in naturally with ranges, and ranges are compile time polymorphic

Reply via email to