私はアンドレイとコンラッドの両方、そして私自身に同意しません:-)
最も基本的な概念は、イテレータではなくインターフェースであり、今日誰もが行っているすべての作業で明らかです (クロスライブラリ、クロス言語、クロスコンパイラ、クロス OS、クロスプラットフォーム、クロスネームに関するすべてです)。それ :-)
イテレータも範囲も (ソースレベルでの使用を除いて) クリーンでシンプル、非侵入的または侵入的、非共有または共有、非一意または一意: ポインター以上のものを提供しません! 型付きデータへのクリーンなポインターは単純にユニバーサルに配置され、データを可変または不変にすることができます。すべてのインターフェースは、あらゆる種類のマシンやコンパイラーにとって使いやすく、さらにはるかに安全であり、イテレーターと範囲の使用を実装の詳細に委譲しながら、それに対する別のレベルの間接化です。
その範囲で、IEnumerable と IQueryable は半分「正しい」TM を行いますが、反復の概念では明らかに劣っており、STL でできること、制御の保持などよりもはるかに劣っています (ただし、より良いメタデータを持っています。したがって、より優れた、よりクリーンなモデルになります)。インターフェイスを使用すると、必要な抽象化を構築して満足させることができます。おそらく矛盾していますが、本質的には簡単です。最適で、実行時またはコンパイル時の中立的なデータ表現とコードです(アルゴリズム、コンパイラ、VMなどに不可欠です)。 .
「動的」/コンポーネント システムから「実行時」インライン化まで最適化することも可能です (スクリュー HotSpot VM:-). その範囲では、1975 年への進歩は最小限に抑えられており、これは巨大な相互運用業界のワークロードによって明らかです (それはどこにでもあります)。このサイト、プロプライエタリでオープンな技術の使用などを含めて見てください; コンピューターサイエンスの理想主義では、この種のインターフェース「作業」は存在すべきではありません..