I do not agree with Andrei and Konrad and with myself :-)
The most fundamental concept is the interface, not the iterator, and this is pretty obvious in any work that someone does today (as for the cross-library, cross-language, cross-compiler, cross-OS, cross-platform, you rename him:-)
Neither the iterator, nor the range (other than using the source level) offers nothing more pure and simple, non-intrusive or intrusive, not general or general, not unique or unique: a pointer! A clean pointer to typed data is simply made universal, and you can make data mutable or immutable, and many others. The whole interface is another level of indirection, although it is still friendly to machines and compilers of all kinds, and also much safer by dropping iterators and using range to implementation details.
To this extent, IEnumerable and IQueryable make half the “right” TM, but they are clearly inferior to their concepts of iteration and much more than what you can do with STL, maintain control and so on and so forth (but otoh, they have better metadata and, therefore, a better, cleaner model). A point with interfaces allows you to create any abstraction that you want and satisfy, but probably contradictory, but it’s essentially brainless: optimal and temporary or neutral representation of data and compilation time code (especially important for algorithms and compilers and virtual machines, and what not ),
You can even optimize it for "dynamic" / component systems down to "runtime" inline (HotSpot VM screw :-) .. To this extent, the progress until 1975 is minimal, as can be seen from the huge workload in interop (this is where you look , including this site, its use of proprietary and open technologies, etc., in the idealism of computer science, this type of interaction "work" should not exist if it).
rama-jka toti May 08 '09 at 18:49 2009-05-08 18:49
source share