Andrei Alexandrescu wrote:
Craig Black wrote:
I like very much the direction D2 is going now. Language refactoring
and enhancements driven by the goal of more elegant implementation of
standard libraries. This approach seems very practical and
promising. Thank you very much and keep it up!
-Craig
Thanks. Walter pointed out to me something interesting - STL is
non-intuitive. That doesn't make it any less true (as a pursuit of the
most generic incarnation of fundamental structs and algos). It's
non-intuitive the same way complex numbers and relativity theory are
non-intuitive.
No language has ever managed to comprehend STL by sheer chance. (This in
spite of e.g. C# adding a boatload of new features with each release.)
There are two that can express it at all: C++ and D. Both C++ and D had
to be changed to allow STL to exist, and became better languages as a
result. The range shtick and D's support for lambdas is taking STL
support to a whole new level.
The downside is, it's rather difficult to explain the STL to anyone
using other languages and wanting to just figure what the STL buzz is
all about.
I wrote my MSc thesis about the STL. I think the conceptual idea was
clean and clear, and at the time it was reasonably easy to explain it to
even the professors. ;-)
Today, however, and especially with the advanced implementation we have
here in D, if someone has no prior knowledge of the STL way of thinking,
it may be really hard to get them to 'get it'. There are too many trees
up front to grasp the forest.
What's sad, http://en.wikipedia.org/wiki/Standard_Template_Library
really sucks at introducing the STL on a conceptual level. Even worse,
that is actually the only thing it *should* do. Everyting else is optional.