Сообщение Re[17]: Rust в Dropbox от 01.07.2016 11:59
Изменено 01.07.2016 12:35 Serginio1
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
S>>>> А шаблоны сразу в бинарный код?
EP>>>А зачем в текст? Чтобы заново парсить?
S>> А теперь задай себе вопрос, почему шаблоны так долго компилятся?
EP>Думаешь потому что текст заново парсится?
Разворачиваются
EP>1. Потому что мощные — это требует ресурсов компилятора.
EP>2. Они полные по Тьюрингу, и как следствие на них реализуется разнообразные алгоритмы времени компиляции.
EP>3. Потому что компилятор сильно оптимизируют выхлоп от них. Конкретный пример
Угу, а если без оптимизации то должны как в .Net
SS>>>>>> Это расширение для Linq. И называется кстати EnumerableExtensions. Во втором случае генерятся по подобию два
S>>>>>>расширения на Макс и Мин. Только и всего. При этом две ветки для валуе типов и для классов. Для классов идет еще проверка на null всех элементов, сравнение для них не проводится. По аналогии с DB Null
EP>>>>>К чему ты ведёшь? Как это относится к обсуждаемому вопросу?
S>> Да.
EP>Что "да"?
Это относится к тому, что ты охаял.
S>> А можно привести аналог
S>>
S>> Имея расширения мне нужно всего навсего добавиить лямбду доступа к полю. Как это выглядит на C++?
EP>Например:
EP>
А теперь код element. И что бы было различие между ссылочными и валуе типами.
S>>И как в итоге будет выглядеть итератор.
EP>В каком смысле?
S>> По алгоритму указанному в MinItem. А именно null не сравниваются для указателей.
EP>Добавь filtered во внутрь обёртки, при этом алгоритм фильтрации не нужно расписывать вручную — его заинлайнит компилятор.
EP>
То есть мы должны сначала отфильтровать по null а затем применять искать минимум?
Пока это никак не тянет на
var МаксЗнач=source.MinItem(i => i.Value)?.Value
S>>>>Я решаю кучу различных задач. И кстати GUI мне только помогает. А то консоль наше всё.
EP>>>Причём тут консоль? Думаешь если не-GUI задача, то значит консоль?
S>> А ну да есть еще log файлы и VS для отладки.
EP>
S>>>>async await
EP>>>Await реализуется на stackful coroutines, причём получается даже удобнее так как нет инфецирования await'ами/async'ами по всему callstack, и мощнее — так как намного легче интегрировать асинхронные вставки в существующий код.
S>> Пример пожалуйста.
EP>http://rsdn.ru/forum/cpp/5219587.1
Рад за вас если у вас все прекрасно. Кстати. Я так понимаю async([i]{ return reschedule(), i*100; }); возвращает аналог Task?
А кто готовит автомат? В .Net этим занимается компилятор. Кстати по поводу
// await is not limited by "one level" as in C
Есть мнтоды Task WhenAll , WhenAny
S>>>>И как там в C++ c Nullable?
EP>>>Есть boost::optional.
EP>>>Но, в контексте алгоритмов намного мощнее не optional, а итератор — так как сделано в STL. Итератор одним махом даёт:
EP>>>1) Позицию элемента — например минимальный можно swap'нуть с первым элементом
EP>>>2) Два диапазона [first, min) и [min, last), которые можно обрабатывать в следующих алгоритмах
EP>>>3) Информацию о том найдено ли что-то или нет
S>>На Linq это делается значительно проще.
EP>Да неужели? Именно поэтому EqualRange из CodeJam возвращает два унылых индекса?
Ты всю эту библиотеку изучил?
S>>И можно писать свои расширения как с MinItem
S>>Методы Skip и Take
EP>Расширения для этого не нужны.
Вот когда покажешь такой же ваприант тогда поверю. Пока все мимо.
EP>Здравствуйте, Serginio1, Вы писали:
S>>>> А шаблоны сразу в бинарный код?
EP>>>А зачем в текст? Чтобы заново парсить?
S>> А теперь задай себе вопрос, почему шаблоны так долго компилятся?
EP>Думаешь потому что текст заново парсится?
Разворачиваются
EP>1. Потому что мощные — это требует ресурсов компилятора.
EP>2. Они полные по Тьюрингу, и как следствие на них реализуется разнообразные алгоритмы времени компиляции.
EP>3. Потому что компилятор сильно оптимизируют выхлоп от них. Конкретный пример
Автор: Evgeny.Panasyuk
Дата: 20.10.14
.Дата: 20.10.14
Угу, а если без оптимизации то должны как в .Net
SS>>>>>> Это расширение для Linq. И называется кстати EnumerableExtensions. Во втором случае генерятся по подобию два
S>>>>>>расширения на Макс и Мин. Только и всего. При этом две ветки для валуе типов и для классов. Для классов идет еще проверка на null всех элементов, сравнение для них не проводится. По аналогии с DB Null
EP>>>>>К чему ты ведёшь? Как это относится к обсуждаемому вопросу?
S>> Да.
EP>Что "да"?
Это относится к тому, что ты охаял.
S>> А можно привести аналог
S>>
S>>var МаксЗнач=source.MinItem(i => i.Value)?.Value;
S>>
S>> Имея расширения мне нужно всего навсего добавиить лямбду доступа к полю. Как это выглядит на C++?
EP>Например:
EP>
EP>auto it = min_element(source, [](auto &i){ return i->value; });
EP>
А теперь код element. И что бы было различие между ссылочными и валуе типами.
S>>И как в итоге будет выглядеть итератор.
EP>В каком смысле?
S>> По алгоритму указанному в MinItem. А именно null не сравниваются для указателей.
EP>Добавь filtered во внутрь обёртки, при этом алгоритм фильтрации не нужно расписывать вручную — его заинлайнит компилятор.
EP>
EP>source | filtered([](auto &x){ return x != nullptr; })
EP>
То есть мы должны сначала отфильтровать по null а затем применять искать минимум?
Пока это никак не тянет на
var МаксЗнач=source.MinItem(i => i.Value)?.Value
S>>>>Я решаю кучу различных задач. И кстати GUI мне только помогает. А то консоль наше всё.
EP>>>Причём тут консоль? Думаешь если не-GUI задача, то значит консоль?
S>> А ну да есть еще log файлы и VS для отладки.
EP>
S>>>>async await
EP>>>Await реализуется на stackful coroutines, причём получается даже удобнее так как нет инфецирования await'ами/async'ами по всему callstack, и мощнее — так как намного легче интегрировать асинхронные вставки в существующий код.
S>> Пример пожалуйста.
EP>http://rsdn.ru/forum/cpp/5219587.1
Автор: Evgeny.Panasyuk
Дата: 03.07.13
Дата: 03.07.13
Рад за вас если у вас все прекрасно. Кстати. Я так понимаю async([i]{ return reschedule(), i*100; }); возвращает аналог Task?
А кто готовит автомат? В .Net этим занимается компилятор. Кстати по поводу
// await is not limited by "one level" as in C
Есть мнтоды Task WhenAll , WhenAny
S>>>>И как там в C++ c Nullable?
EP>>>Есть boost::optional.
EP>>>Но, в контексте алгоритмов намного мощнее не optional, а итератор — так как сделано в STL. Итератор одним махом даёт:
EP>>>1) Позицию элемента — например минимальный можно swap'нуть с первым элементом
EP>>>2) Два диапазона [first, min) и [min, last), которые можно обрабатывать в следующих алгоритмах
EP>>>3) Информацию о том найдено ли что-то или нет
S>>На Linq это делается значительно проще.
EP>Да неужели? Именно поэтому EqualRange из CodeJam возвращает два унылых индекса?
Ты всю эту библиотеку изучил?
S>>И можно писать свои расширения как с MinItem
S>>Методы Skip и Take
EP>Расширения для этого не нужны.
Вот когда покажешь такой же ваприант тогда поверю. Пока все мимо.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Serginio1, Вы писали:
S>>>> А шаблоны сразу в бинарный код?
EP>>>А зачем в текст? Чтобы заново парсить?
S>> А теперь задай себе вопрос, почему шаблоны так долго компилятся?
EP>Думаешь потому что текст заново парсится?
Разворачиваются
EP>1. Потому что мощные — это требует ресурсов компилятора.
EP>2. Они полные по Тьюрингу, и как следствие на них реализуется разнообразные алгоритмы времени компиляции.
EP>3. Потому что компилятор сильно оптимизируют выхлоп от них. Конкретный пример
Угу, а если без оптимизации то должны как в .Net
SS>>>>>> Это расширение для Linq. И называется кстати EnumerableExtensions. Во втором случае генерятся по подобию два
S>>>>>>расширения на Макс и Мин. Только и всего. При этом две ветки для валуе типов и для классов. Для классов идет еще проверка на null всех элементов, сравнение для них не проводится. По аналогии с DB Null
EP>>>>>К чему ты ведёшь? Как это относится к обсуждаемому вопросу?
S>> Да.
EP>Что "да"?
Это относится к тому, что ты охаял.
S>> А можно привести аналог
S>>
S>> Имея расширения мне нужно всего навсего добавиить лямбду доступа к полю. Как это выглядит на C++?
EP>Например:
EP>
А теперь код element. И что бы было различие между ссылочными и валуе типами.
S>>И как в итоге будет выглядеть итератор.
EP>В каком смысле?
S>> По алгоритму указанному в MinItem. А именно null не сравниваются для указателей.
EP>Добавь filtered во внутрь обёртки, при этом алгоритм фильтрации не нужно расписывать вручную — его заинлайнит компилятор.
EP>
То есть мы должны сначала отфильтровать по null а затем применять искать минимум?
Пока это никак не тянет на
var МаксЗнач=source.MinItem(i => i.Value)?.Value
S>>>>Я решаю кучу различных задач. И кстати GUI мне только помогает. А то консоль наше всё.
EP>>>Причём тут консоль? Думаешь если не-GUI задача, то значит консоль?
S>> А ну да есть еще log файлы и VS для отладки.
EP>
S>>>>async await
EP>>>Await реализуется на stackful coroutines, причём получается даже удобнее так как нет инфецирования await'ами/async'ами по всему callstack, и мощнее — так как намного легче интегрировать асинхронные вставки в существующий код.
S>> Пример пожалуйста.
EP>http://rsdn.ru/forum/cpp/5219587.1
Рад за вас если у вас все прекрасно. Кстати. Я так понимаю async([i]{ return reschedule(), i*100; }); возвращает аналог Task?
А кто готовит автомат? В .Net этим занимается компилятор. Кстати по поводу
// await is not limited by "one level" as in C
Есть мнтоды Task WhenAll , WhenAny
S>>>>И как там в C++ c Nullable?
EP>>>Есть boost::optional.
EP>>>Но, в контексте алгоритмов намного мощнее не optional, а итератор — так как сделано в STL. Итератор одним махом даёт:
EP>>>1) Позицию элемента — например минимальный можно swap'нуть с первым элементом
EP>>>2) Два диапазона [first, min) и [min, last), которые можно обрабатывать в следующих алгоритмах
EP>>>3) Информацию о том найдено ли что-то или нет
S>>На Linq это делается значительно проще.
EP>Да неужели? Именно поэтому EqualRange из CodeJam возвращает два унылых индекса?
Ты всю эту библиотеку изучил? Лучше бы Linq изучил. Тогда вопросов бы таких не было.
Еще раз хватает >>Методы Skip и Take
S>>И можно писать свои расширения как с MinItem
S>>Методы Skip и Take
EP>Расширения для этого не нужны.
Вот когда покажешь такой же ваприант тогда поверю. Пока все мимо.
То есть твой вариант не универсален.
EP>Здравствуйте, Serginio1, Вы писали:
S>>>> А шаблоны сразу в бинарный код?
EP>>>А зачем в текст? Чтобы заново парсить?
S>> А теперь задай себе вопрос, почему шаблоны так долго компилятся?
EP>Думаешь потому что текст заново парсится?
Разворачиваются
EP>1. Потому что мощные — это требует ресурсов компилятора.
EP>2. Они полные по Тьюрингу, и как следствие на них реализуется разнообразные алгоритмы времени компиляции.
EP>3. Потому что компилятор сильно оптимизируют выхлоп от них. Конкретный пример
Автор: Evgeny.Panasyuk
Дата: 20.10.14
.Дата: 20.10.14
Угу, а если без оптимизации то должны как в .Net
SS>>>>>> Это расширение для Linq. И называется кстати EnumerableExtensions. Во втором случае генерятся по подобию два
S>>>>>>расширения на Макс и Мин. Только и всего. При этом две ветки для валуе типов и для классов. Для классов идет еще проверка на null всех элементов, сравнение для них не проводится. По аналогии с DB Null
EP>>>>>К чему ты ведёшь? Как это относится к обсуждаемому вопросу?
S>> Да.
EP>Что "да"?
Это относится к тому, что ты охаял.
S>> А можно привести аналог
S>>
S>>var МаксЗнач=source.MinItem(i => i.Value)?.Value;
S>>
S>> Имея расширения мне нужно всего навсего добавиить лямбду доступа к полю. Как это выглядит на C++?
EP>Например:
EP>
EP>auto it = min_element(source, [](auto &i){ return i->value; });
EP>
А теперь код element. И что бы было различие между ссылочными и валуе типами.
S>>И как в итоге будет выглядеть итератор.
EP>В каком смысле?
S>> По алгоритму указанному в MinItem. А именно null не сравниваются для указателей.
EP>Добавь filtered во внутрь обёртки, при этом алгоритм фильтрации не нужно расписывать вручную — его заинлайнит компилятор.
EP>
EP>source | filtered([](auto &x){ return x != nullptr; })
EP>
То есть мы должны сначала отфильтровать по null а затем применять искать минимум?
Пока это никак не тянет на
var МаксЗнач=source.MinItem(i => i.Value)?.Value
S>>>>Я решаю кучу различных задач. И кстати GUI мне только помогает. А то консоль наше всё.
EP>>>Причём тут консоль? Думаешь если не-GUI задача, то значит консоль?
S>> А ну да есть еще log файлы и VS для отладки.
EP>
S>>>>async await
EP>>>Await реализуется на stackful coroutines, причём получается даже удобнее так как нет инфецирования await'ами/async'ами по всему callstack, и мощнее — так как намного легче интегрировать асинхронные вставки в существующий код.
S>> Пример пожалуйста.
EP>http://rsdn.ru/forum/cpp/5219587.1
Автор: Evgeny.Panasyuk
Дата: 03.07.13
Дата: 03.07.13
Рад за вас если у вас все прекрасно. Кстати. Я так понимаю async([i]{ return reschedule(), i*100; }); возвращает аналог Task?
А кто готовит автомат? В .Net этим занимается компилятор. Кстати по поводу
// await is not limited by "one level" as in C
Есть мнтоды Task WhenAll , WhenAny
S>>>>И как там в C++ c Nullable?
EP>>>Есть boost::optional.
EP>>>Но, в контексте алгоритмов намного мощнее не optional, а итератор — так как сделано в STL. Итератор одним махом даёт:
EP>>>1) Позицию элемента — например минимальный можно swap'нуть с первым элементом
EP>>>2) Два диапазона [first, min) и [min, last), которые можно обрабатывать в следующих алгоритмах
EP>>>3) Информацию о том найдено ли что-то или нет
S>>На Linq это делается значительно проще.
EP>Да неужели? Именно поэтому EqualRange из CodeJam возвращает два унылых индекса?
Ты всю эту библиотеку изучил? Лучше бы Linq изучил. Тогда вопросов бы таких не было.
Еще раз хватает >>Методы Skip и Take
S>>И можно писать свои расширения как с MinItem
S>>Методы Skip и Take
EP>Расширения для этого не нужны.
Вот когда покажешь такой же ваприант тогда поверю. Пока все мимо.
То есть твой вариант не универсален.