Информация об изменениях

Сообщение Re[19]: Есть ли подобие LINQ на других языках/платформах? от 19.04.2021 13:37

Изменено 19.04.2021 13:39 Serginio1

Re[19]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Serginio1, Вы писали:



I>>>yield сам по себе вносит потери. Неважно, есть лишние циклы, или нет. x[i] заменяется на доступ через итератор. Вот уже проблема.


S>>То есть ты не согласен с тем, что без yield был бы возможен Linq?


I>Объясни подробно, каким образом ты делаешь такой вывод?

I>Я то говорю о производительности этого yield и прямо пишу, что твои слова "yield ничего не стоит" не подтверждаются
Еще раз. В моем сообщении было написано про то, что Linq не возможен без yield ибо идут вычисления справа налево.

S>>С yield IEnumerable создается автоматически. Заметь IEnumerable!


I>И что? Сколько стоит использование IEnumerable ?

То же что и yield, а именно MoveNext и Current
S>> То что ты пишешь ну никак не относится к

I>Это потому, что ты задним числом правишь сообщения.

Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
S>> К которому ты упорно ставишь минусы и при этом сваливаешься на производительность yield.

I>Я только про это и говорю, потому как ты ты пишешь что yield ничего не стоит.

Этого я никогда не писал. Я писал про лишние циклы. Ибо yield как раз и обеспечивает вычисление с право налево. Перечитай сообщение.
S>>yield создает объект класса реализующий IEnumerable.

I>Ужос. И что дальше? Из этого следует, что yield ничего не стоит?

Где ты нашел про то, что yield ничего не стоит?
S>> Как замедляется доступ к энумератору если он вызывает MoveNext. Передается то IEnumerable а не List или array.

I>Не к энумератору, а к значению. Вместо x[i] у тебя будет обращение к moveNext, switch присваивание Current, чтение Current.

Ну я тебе подам на вход IEnumerable не основанном на List или array, как ты с ним будешь работать.
Это же Linq!!!
S>> Еще раз ответь с чем ты не согласен?

I>В который раз говорю — я не согласен с утверждением, что yield ничего не стоит.

Где я утверждал, что yield ничего не стоит?
Re[19]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Serginio1, Вы писали:



I>>>yield сам по себе вносит потери. Неважно, есть лишние циклы, или нет. x[i] заменяется на доступ через итератор. Вот уже проблема.


S>>То есть ты не согласен с тем, что без yield был бы возможен Linq?


I>Объясни подробно, каким образом ты делаешь такой вывод?

I>Я то говорю о производительности этого yield и прямо пишу, что твои слова "yield ничего не стоит" не подтверждаются
Еще раз. В моем сообщении было написано про то, что Linq не возможен без yield ибо идут вычисления справа налево.

S>>С yield IEnumerable создается автоматически. Заметь IEnumerable!


I>И что? Сколько стоит использование IEnumerable ?

То же что и yield, а именно MoveNext и Current
S>> То что ты пишешь ну никак не относится к

I>Это потому, что ты задним числом правишь сообщения.

Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
S>> К которому ты упорно ставишь минусы и при этом сваливаешься на производительность yield.

I>Я только про это и говорю, потому как ты ты пишешь что yield ничего не стоит.

Этого я никогда не писал. Я писал про лишние циклы. Ибо yield как раз и обеспечивает вычисление с право налево. Перечитай сообщение.
S>>yield создает объект класса реализующий IEnumerable.

I>Ужос. И что дальше? Из этого следует, что yield ничего не стоит?

Где ты нашел про то, что yield ничего не стоит?
S>> Как замедляется доступ к энумератору если он вызывает MoveNext. Передается то IEnumerable а не List или array.

I>Не к энумератору, а к значению. Вместо x[i] у тебя будет обращение к moveNext, switch присваивание Current, чтение Current.

Ну я тебе подам на вход IEnumerable не основанном на List или array, как ты с ним будешь работать.
Это же Linq!!!
S>> Еще раз ответь с чем ты не согласен?

I>В который раз говорю — я не согласен с утверждением, что yield ничего не стоит.

Где я утверждал, что yield ничего не стоит?
Вот все сообщение

S>Linq, при кажущейся простоте, потребовал:

S>

S>
Generics
S>
Extension Methods
S>
Lamda expressions
S>
Expression trees
S>
Anonumus types
S>
Object initializers
S>
Type inferring
S>

S>Это огромный пласт работы. Но и результат до сих пор впечатляет.

S>Есть ли что-либо подобное на других языках/платформах?

Еще нужно добавить про yield и ленивое выполнение.
То есть при выполнении цепочки

list.Where.Where.Select.Count
List пройдет всего один цикл ибо выполнение начнется с права на лево
Count вызовет MoveNext у Select, Select у Where и так далее.
По этому мы можем объединять Where без потери производительности на лишние циклы