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