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

Сообщение Re[20]: Rust в Dropbox от 01.07.2016 19:29

Изменено 01.07.2016 19:32 Evgeny.Panasyuk

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

EP>>Где охаял? Можешь целиком сформулировать мысль?

S>https://github.com/rsdn/CodeJam/blob/e86dc27fadd28f7932a0c840f5356e98cfa7a40c/Main/src/Collections/EnumerableExtensions.AggregateFuncs.cs
EP>>>>Например:
EP>>>>
EP>>>>auto it = min_element(source, [](auto &i){ return i->value; });
EP>>>>

S>>> А теперь код element. И что бы было различие между ссылочными и валуе типами.
EP>>Я приводил код, нужен только wrapper в пару строк для Range интерфейса, о котором я сразу и сказал
Автор: Evgeny.Panasyuk
Дата: 23.03.16
.

S> Ну вот нужно добавить.

Что значит "ну вот"? Ещё раз, я сразу же написал:

EP>Да, могут быть добавлены wrapper'ы для range интерфейса вместо двух итераторов, но это же десятки строк, а не сотни


S>По сути и получится тоже самое.


Нет, не тоже самое.
В варианте C# фильтрация заинлайненна вручную и текстовая кодогенерация — сотни строк. На C++ один алгоритм и пару обёрток, причём фильтрация внешняя и ортогональная.

S>Да и на самом деле мне как пользователю наплевать как внутри реализовано. Главное быстро и удобно. Смотри на конечный результат.


Вот только обсуждение как раз про то как реализовано

S>>> То есть мы должны сначала отфильтровать по null а затем применять искать минимум?

EP>>Нет, не "сначала" отфильтровать, а применить ленивый фильтр, который даст вид range без nullptr.
S>То есть делать то же самое, что тебе не понравилось.

Не надо выдумывать Мне не понравилось что на ровном месте пришлось запрягать текстовую кодогенерациюю и примитивнейший алгоритм растянулся на сотни строк (ещё до генерации).

S>У ребят сделано тоже самое.


Ты вообще не понимаешь о чём речь, уже надоедает У них фильтр вручную прибит гвоздями ко внутренностях алгоритма.

S>>>Пока это никак не тянет на

S>>>var МаксЗнач=source.MinItem(i => i.Value)?.Value
EP>>Спрячь применение фильтра во внутрь обёртки, если тебе нужен именно этот вариант
S> И будет в итоге тоже самое.

Нет же Перечитай всю тему.

S>>>А кто готовит автомат? В .Net этим занимается компилятор.

EP>>Никто специальный автомат не готовит, я же говорю что это на основе stackful coroutines. Автомат нужен для stackless.
S> Я с вас хренею любите вы словами бросаться. По поводу await async куча статей с разбором как все работает. По С++ все туго.
S>Хоть бы ссылку на толковую статью.

Читай что такое Coroutine, а конкретно Stackful.

S>>>Кстати по поводу

S>>> // await is not limited by "one level" as in C
S>>>Есть мнтоды Task WhenAll , WhenAny
EP>>Это не в тему. Смотри пример по ссылке — await из bar'а возвращает управление на самый вверх, в C# пришлось бы ставить await bar внутри foo, добавлять async, и так на всех уровнях. Тут же можно вызывать await на самом глубоком уровне, не меняя код на промежуточных.
S> Так await и показывает, что функция асинхронная. А вот вызов просто bar воспринимается как синхронная. Где логика?

Логика в том, что синхронный по форме код не нужно засорять await'ом по всему callstack. И не нужно писать две версии отличающиеся только наличием await+async. И можно взять уже готовый код типа getline, и передать в него stream который внутри делает await. Смотри пример
Автор: Evgeny.Panasyuk
Дата: 21.06.13
.

S>>> Ты всю эту библиотеку изучил? Лучше бы Linq изучил. Тогда вопросов бы таких не было.


EP>>Лучше бы ты изучил STL, тогда хотя бы понял о чём речь

S> Я то как раз изучаю и понимаю о чем ты говоришь.
S>Выложил статью Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
S>Исходники лежат Здесь
S>Выложил статью
S>Разработка → Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
S>Исходники здесь
S>Советую и тебе C# подтянуть.

Давай ты мне не будешь советовать что тебе кажется мне следует делать, а я тебе не буду говорить ты постоянно вставляешь ссылки на них совершенно не к месту и не в тему, ОК?
Re[20]: Rust в Dropbox
Здравствуйте, Serginio1, Вы писали:

EP>>Где охаял? Можешь целиком сформулировать мысль?

S>https://github.com/rsdn/CodeJam/blob/e86dc27fadd28f7932a0c840f5356e98cfa7a40c/Main/src/Collections/EnumerableExtensions.AggregateFuncs.cs
EP>>>>Например:
EP>>>>
EP>>>>auto it = min_element(source, [](auto &i){ return i->value; });
EP>>>>

S>>> А теперь код element. И что бы было различие между ссылочными и валуе типами.
EP>>Я приводил код, нужен только wrapper в пару строк для Range интерфейса, о котором я сразу и сказал
Автор: Evgeny.Panasyuk
Дата: 23.03.16
.

S> Ну вот нужно добавить.

Что значит "ну вот"? Ещё раз, я сразу же написал:

EP>Да, могут быть добавлены wrapper'ы для range интерфейса вместо двух итераторов, но это же десятки строк, а не сотни


S>По сути и получится тоже самое.


Нет, не тоже самое.
В варианте C# фильтрация заинлайненна вручную и текстовая кодогенерация — сотни строк. На C++ один алгоритм и пару обёрток, причём фильтрация внешняя и ортогональная.

S>Да и на самом деле мне как пользователю наплевать как внутри реализовано. Главное быстро и удобно. Смотри на конечный результат.


Вот только обсуждение как раз про то как реализовано

S>>> То есть мы должны сначала отфильтровать по null а затем применять искать минимум?

EP>>Нет, не "сначала" отфильтровать, а применить ленивый фильтр, который даст вид range без nullptr.
S>То есть делать то же самое, что тебе не понравилось.

Не надо выдумывать Мне не понравилось что на ровном месте пришлось запрягать текстовую кодогенерациюю и примитивнейший алгоритм растянулся на сотни строк (ещё до генерации).

S>У ребят сделано тоже самое.


Ты вообще не понимаешь о чём речь, уже надоедает У них фильтр вручную прибит гвоздями ко внутренностях алгоритма.

S>>>Пока это никак не тянет на

S>>>var МаксЗнач=source.MinItem(i => i.Value)?.Value
EP>>Спрячь применение фильтра во внутрь обёртки, если тебе нужен именно этот вариант
S> И будет в итоге тоже самое.

Нет же Перечитай всю тему.

S>>>А кто готовит автомат? В .Net этим занимается компилятор.

EP>>Никто специальный автомат не готовит, я же говорю что это на основе stackful coroutines. Автомат нужен для stackless.
S> Я с вас хренею любите вы словами бросаться. По поводу await async куча статей с разбором как все работает. По С++ все туго.
S>Хоть бы ссылку на толковую статью.

Читай что такое Coroutine, а конкретно Stackful.

S>>>Кстати по поводу

S>>> // await is not limited by "one level" as in C
S>>>Есть мнтоды Task WhenAll , WhenAny
EP>>Это не в тему. Смотри пример по ссылке — await из bar'а возвращает управление на самый вверх, в C# пришлось бы ставить await bar внутри foo, добавлять async, и так на всех уровнях. Тут же можно вызывать await на самом глубоком уровне, не меняя код на промежуточных.
S> Так await и показывает, что функция асинхронная. А вот вызов просто bar воспринимается как синхронная. Где логика?

Логика в том, что синхронный по форме код не нужно засорять await'ом по всему callstack. И не нужно писать две версии отличающиеся только наличием await+async. И можно взять уже готовый код типа getline, и передать в него stream который внутри делает await. Смотри пример
Автор: Evgeny.Panasyuk
Дата: 21.06.13
.

S>>> Ты всю эту библиотеку изучил? Лучше бы Linq изучил. Тогда вопросов бы таких не было.


EP>>Лучше бы ты изучил STL, тогда хотя бы понял о чём речь

S> Я то как раз изучаю и понимаю о чем ты говоришь.
S>Выложил статью Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
S>Исходники лежат Здесь
S>Выложил статью
S>Разработка → Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
S>Исходники здесь
S>Советую и тебе C# подтянуть.

Давай ты мне не будешь советовать что тебе кажется мне следует делать, а я тебе не буду говорить ты постоянно вставляешь ссылки на свои статьи совершенно не к месту и не в тему, ОК?