Я не согласен и с Андреем, и с Конрадом, и со мной: -)
Самым фундаментальным понятием является интерфейс, а не итератор, и это довольно очевидно в любой работе, которую кто-либо делает сегодня (которая связана с кросс-библиотекой, кросс-языком, кросс-компилятором, кросс-ОС, кроссплатформенностью, вы перекрестно назовите это :-)
Ни итератор, ни диапазон (кроме использования на уровне источника) не предлагают ничего, кроме чистого и простого, не навязчивого или навязчивого, не общего или общего, не уникального или уникального: указатель! Чистый указатель на типизированные данные просто универсален, и вы можете сделать данные изменяемыми или неизменяемыми и многое другое. Весь интерфейс - это просто еще один уровень косвенного обращения к нему, в то же время дружественный к машине и компилятору всех видов, плюс гораздо более безопасный, откладывающий итераторы и использование диапазона до деталей реализации.
В этом смысле IEnumerable и IQueryable выполняют половину «правильной вещи» TM, но они явно уступают в своих концепциях итерации и намного больше того, что вы можете делать с STL, сохранять контроль и так далее и тому подобное (но, да, они иметь лучшие метаданные и, следовательно, лучшую, более чистую модель). Используя интерфейсы, вы можете создать любую абстракцию, которую хотите и удовлетворить, что, вероятно, противоречиво, но, по сути, не представляет никакой сложности: оптимальное и нейтральное представление данных и кода во время выполнения или во время компиляции (черт возьми, существенное для алгоритмов и компиляторов и виртуальных машин, а что нет) ,
Можно даже оптимизировать его для «динамических» / компонентных систем вплоть до «динамического» встраивания (винт HotSpot VM :-) .. В этом смысле переход к 1975 году минимален, о чем свидетельствует огромная рабочая нагрузка индустрии взаимодействия. (он везде, куда вы заглядываете, включая этот сайт, его использование проприетарных и открытых технологий и т. д .; в идеализме информатики, ну, этот тип сопряженных «работ» не должен существовать, если это так) ..