Am 23.10.2011, 06:04 Uhr, schrieb Jonathan M Davis <jmdavisp...@gmx.com>:

I'd have to go digging through the newsgroup archives to give all of the
reasons but it basically comes down to the fact that people very rarely want
to pass containers by value, and the fact that C++ makes it so that the
default behavior of passing container is to copy them is a frequent source of bugs. In C++, containers are almost always passed by reference with & or * rather than passing them by value, and if you forget to make the function take or return via reference or pointer, it's a major performance hit. So IIRC, Andrei thought that the fact that C++ containers are value types was a big
mistake of C++.

- Jonathan M Davis

It is also what people not coming from C++ expect and I honestly think the containers should be more newbee friendly. RedBlackTree was a struct, that could not exist without at least one element in it. So instead of allocating it in the constructor of a class and using it in one of its methods, wherever you add an element you have to check if you have to create it first. If the community is really split that much amongst people who want the most low-level containers as structs and people who want easy to use classes, then we actually need two container modules in Phobos. It is not done by saying, "you can wrap them in a class". Because then they are not easy to use in the first place.

Maybe we have so many arguments over how stuff should be done, because D can be used from scripting to writing OS kernels. There are probably three or more audiences with their expectations and in a few years we will see Tango resurrected by one of the thirds. Shouldn't those people with a very clear idea on how a container should be implemented, just implement their own or look for third party libraries and those who know little about containers can just use some whishy-whashy container that supports most common needs (can create empty, is by reference, has removal method, ...)? After all most of the performance stems from the used algorithm, not from going more low-level.

- Marco

Reply via email to