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

Сообщение Re[3]: Госспади, отправь на пенсию воспитанников фортрана! от 18.11.2025 15:32

Изменено 18.11.2025 15:49 rg45

Re[3]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Doom100500, Вы писали:

D>И это ещё не всё. Потом надо ещё в std-контейнеры переводить. (в шарпе ".ToList()", в плюсах опять begin(), end())


Я фигею, тётя Валя, с вашей телепередачи.

Во-первых, далеко не всегда финалом вычисления хочется иметь контейнер. А зачастую как раз наоборот — хочется, чтоб все эти контейнеры, коллекции и ренджи вычислились по-ленивому на промежуточных этапах и бесследно испарились в итоге.

Во-вторых, для того, кто хоть немного умеет в декомпозицию и способен отделить "ЧТО" от "КАК", тому совершенно пофиг все эти низкоуровневые подробности и программа у него на любом языке будет выглядеть чётко и компактно. А кто пишет код подобно пчеле, строящей соты, у того эти низкоуровневые сопли будут размазаны по всему коду и он будет всю дорогу жаловаться на плохой инструмент.

В-третьих, конструировать контейнеры сейчас уже можно и без begin() и end() и у всех стандартных контейнеров есть версии конструкторов, принимающие абстрактные рэнджи.

Ну и в-четвёртых, могу повторить то, что говорил выше
Автор: rg45
Дата: 17.11 17:41
: В С++ ты можешь наопределять себе какого угодно синтаксического сахара самостоятельно:

template <template<typename...> class Container>
constexpr auto make = [](std::ranges::range auto&& r) { return Container(std::begin(r), std::end(r)); };


И сколько угодно наслаждаться результатами:

http://coliru.stacked-crooked.com/a/69dfe8880f64bfbb

    const std::list list = make<std::list>(nums | filter(even) | map(pow(2)));


D>Даже в шарпе приятнее. Haskel, конечно не догнать, но плюсы — это полный П++.


Ну или просто это твои программы на плюсах — полный П++.
Re[3]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Doom100500, Вы писали:

D>И это ещё не всё. Потом надо ещё в std-контейнеры переводить. (в шарпе ".ToList()", в плюсах опять begin(), end())


Я фигею, тётя Валя, с вашей телепередачи.

Во-первых, далеко не всегда финалом вычисления хочется иметь контейнер. А зачастую как раз наоборот — хочется, чтоб все эти контейнеры, коллекции и ренджи вычислились по-ленивому на промежуточных этапах и бесследно испарились в итоге.

Во-вторых, для того, кто хоть немного умеет в декомпозицию и способен отделить "ЧТО" от "КАК", тому совершенно пофиг все эти низкоуровневые подробности и программа у него на любом языке будет выглядеть чётко и компактно. А кто пишет код подобно пчеле, строящей соты, у того эти низкоуровневые сопли будут размазаны по всему коду и он будет всю дорогу жаловаться на плохой инструмент.

В-третьих, конструировать контейнеры сейчас уже можно и без begin() и end() и у всех стандартных контейнеров есть версии конструкторов, принимающие абстрактные рэнджи.

Ну и в-четвёртых, могу повторить то, что говорил выше
Автор: rg45
Дата: 17.11 17:41
: В С++ ты можешь наопределять себе какого угодно синтаксического сахара самостоятельно:

template <template<typename...> class Container>
constexpr auto make = [](std::ranges::range auto&& r) { return Container(std::begin(r), std::end(r)); };


И сколько угодно наслаждаться результатами:

http://coliru.stacked-crooked.com/a/69dfe8880f64bfbb

    const std::list list = make<std::list>(nums | filter(even) | map(pow(2)));

Здесь можно было спокойно использовать auto, но я специально явно написал std::list, чтоб у тебя не возникало сомнений в том, что сконструировался именно std::list.

D>Даже в шарпе приятнее. Haskel, конечно не догнать, но плюсы — это полный П++.


Ну или просто это твои программы на плюсах — полный П++.