On Monday, 12 January 2015 at 23:18:52 UTC, bearophile wrote:
I don't agree. The basic ideas of STL by Alexander Stepanov are very good. Phobos contains related ideas, repackaged in ranges. Ranges are a little more fundamental, ma but in practice they are often good enough and they are often more handy. Rust has chosen a different way so far, but will improve with higher order generics later.
I've tried to like STL for 17 years, and whenever speed and clear programming matters it is basically a good idea to throw it out. It goes like this: 1. code up prototype with STL, 2. write STL code and add the features I need, 3. being annoyed by the bloat and noise, 4. rewrite code with my own container for log2 efficiency and ease of use...
I wish Phobos would have stuck to the term "iterators" used in GoF since a "range" usually is something else... but digressions aside. Phobos is kinda like the "functional" parts of Python. The downside there is that you need to remember lots of verbs. A solution like list comprehensions is a lot easier on the programmer, if convenience is the goal.
But in system level programming efficiency is the goal. That means log2 sizes, operations that are optimized for log2 sizes, datastructures that are optimized for SIMD. Phobos "ranges" need a next_simd() to be efficient. Right?