Ну а вы бы вместо того что бы хаять всех подряд, посмотрели на реализацию Range в Swift 2.2
public struct Range<Element : ForwardIndexType> : Equatable, CollectionType, CustomStringConvertible, CustomDebugStringConvertible
и 3.0
public struct Range<Bound : Comparable>
Например count пропал потому что он находится в протоколе CollectionType, убрали протокол - пропал count. Почему убрали, это уже другой вопрос и внутренняя реализация языка.
У objc нормальный стиль, возможно он со стороны кажется не естественным, но это только со стороны. Есть еще С и C++, на которых алгоритм получится еще и платформонезависимым.
Не стоит назвать людей идиотами (тем более не знакомых) не зная причин)