Здравствуйте, Doom100500, Вы писали:
D>И это ещё не всё. Потом надо ещё в std-контейнеры переводить. (в шарпе ".ToList()", в плюсах опять begin(), end())
Я фигею, тётя Валя, с вашей телепередачи.
Во-первых, далеко не всегда финалом вычисления хочется иметь контейнер. А зачастую как раз наоборот — хочется, чтоб все эти контейнеры, коллекции и ренджи вычислились по-ленивому на промежуточных этапах и бесследно испарились в итоге.
Во-вторых, для того, кто хоть немного умеет в декомпозицию и способен отделить "ЧТО" от "КАК", тому совершенно пофиг все эти низкоуровневые подробности и программа у него на любом языке будет выглядеть чётко и компактно. А кто пишет код подобно пчеле, строящей соты, у того эти низкоуровневые сопли будут размазаны по всему коду и он будет всю дорогу жаловаться на плохой инструмент.
В-третьих, начиная с C++23, у всех стандартных контейнеров есть версии конструкторов, принимающие абстрактные рэнджи, поэтому использовать пару begin-end совсем не обязательно.
Ну и в-четвёртых, могу повторить то, что говорил выше
const std::list list = make<std::list>(nums | filter(even) | map(pow(2)));
Здесь можно было спокойно использовать auto, но я специально явно написал std::list, чтоб у тебя не возникало сомнений в том, что сконструировался именно std::list.
D>Даже в шарпе приятнее. Haskel, конечно не догнать, но плюсы — это полный П++.
Ну или просто это твои программы на плюсах — полный П++.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, SergeyIT, Вы писали:
SIT>Особенно, когда ИИ начнет уменьшать размер исходников (научившись у воспитанников фортрана)...
Кто ж его научит? Да ещё, говорят, от того старого доброго Фортрана мало что остадлсь. Ходят слухи, что Фортран уже на себя не похож. Хотя бы обратную совместимость оставили, интересно?
Re[4]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Doom100500, Вы писали:
D>>И это ещё не всё. Потом надо ещё в std-контейнеры переводить. (в шарпе ".ToList()", в плюсах опять begin(), end())
R>Я фигею, тётя Валя, с вашей телепередачи.
R>Во-первых, далеко не всегда финалом вычисления хочется иметь контейнер. А зачастую как раз наоборот — хочется, чтоб все эти контейнеры, коллекции и ренджи вычислились по-ленивому на промежуточных этапах и бесследно испарились в итоге.
В конце цепочки всё равно эти богомерзкие begin()/end()
R>В-третьих, начиная с C++23, у всех стандартных контейнеров есть версии конструкторов, принимающие абстрактные рэнджи, поэтому использовать пару begin-end совсем не обязательно.
До него надо дорасти, спортировать проект (он очень дремучий), и ночать использовать. А пока костылим как можем и тихонько матюкаемся.
R>Ну и в-четвёртых, могу повторить то, что говорил выше
: В С++ ты можешь наопределять себе какого угодно синтаксического сахара самостоятельно:
Это везде можно сделать на любом языке. Вопрос в том, что у кого-то в стандартной библиотеке есть готовые абстракции, а кто-то отпускает это разработчикам. А потом имеем глюки — у каждого свои особенные и неповторимые, причины которых надо искать в тех обёртках, которые кто-то когда-то написал, и все остальные начали использовать. Следовательно, если мы хотим иметь стабилную систему, то для случая, где баг точно воспроизводится — мы напишем другую обёртку, немного отличающуюся от той, которая используется в каждом углу.
Да, тесты могут помочь, но нужно иметь в виду, что большинство "разрабов" срать хотели и на чистоту кода, и на покрытие тестами (а начальству фичи важнее тестов).
R>
R>template <template<typename...> class Container>
R>constexpr auto make = [](std::ranges::range auto&& r) { return Container(std::begin(r), std::end(r)); };
R>
R>Здесь можно было спокойно использовать auto, но я специально явно написал std::list, чтоб у тебя не возникало сомнений в том, что сконструировался именно std::list.
В моём компиляторе не компилируется. А значит, пока не внедрили, либо не использовать, либо опять все эти begin()/end().
D>>Даже в шарпе приятнее. Haskel, конечно не догнать, но плюсы — это полный П++.
R>Ну или просто это твои программы на плюсах — полный П++.
Это претензия к "лаконичности" плюсов.
Ну и ещё все эти обязательные return в теле лямбд очень глаза режут и замусоривают код.
Далеко не все плюсовики — независымые разработчики. Есть ещё и те, которые ждут пенсии. Вот ради них и стараемся не писать "непонятно".
Мне ranges нравятся, есличо. Лаконичности очень даже добавляет.
Меня бесят return в лямбдах, begin/end, обязательные круглые и фигурные скобки в лябдах (опять).
R>>Здесь можно было спокойно использовать auto, но я специально явно написал std::list, чтоб у тебя не возникало сомнений в том, что сконструировался именно std::list.
D>В моём компиляторе не компилируется. А значит, пока не внедрили, либо не использовать, либо опять все эти begin()/end().
Блин, я тебе ссылку дал, где это не только компилируется, но и выполняется. На компиляторе С++20, на минуточку. Ты ссылку видишь?
А если ты используешь какую-то ветошь, то при чём тут С++, это твои личные трудности.
--
Справедливость выше закона. А человечность выше справедливости.
R>>>Здесь можно было спокойно использовать auto, но я специально явно написал std::list, чтоб у тебя не возникало сомнений в том, что сконструировался именно std::list.
D>>В моём компиляторе не компилируется. А значит, пока не внедрили, либо не использовать, либо опять все эти begin()/end().
R>Блин, я тебе ссылку дал, где это не только компилируется, но и выполняется. На компиляторе С++20, на минуточку. Ты ссылку видишь?
R>А если ты используешь какую-то ветошь, то при чём тут С++, это твои личные трудности.
Не я, а компания. Трудности не мои, а компании. Мои трудности — это крепиться и терпеть, пока компания не решится сменить компилятор. Это происходит, но не тогда, когда хочу я.
Ещё раз: мне не нравится многословность плюсов, а не необходимость их постоянно учить. Это мне как раз нравится.
Многословность можно решить. ranges — хороший путь, но этого мало.
Спасибо за внимание
Re[3]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Doom100500, Вы писали:
D>Не я, а компания. Трудности не мои, а компании. Мои трудности — это крепиться и терпеть, пока компания не решится сменить компилятор. Это происходит, но не тогда, когда хочу я.
Ну это тоже не проблемы С++. Опять же, проблемы компании и твои, поскольку ты в ней работаешь. Ну блин, давай начнем критиковать C#, опираясь на возможности C# 2.0 и ссылаясь на компанию, где это используется.
D>Ещё раз: мне не нравится многословность плюсов, а не необходимость их постоянно учить. Это мне как раз нравится. D>Многословность можно решить. ranges — хороший путь, но этого мало.
Дело не в ranges. Просто C++ даёт удочки, а ты ждёшь рыбку. Вот и весь сказ.
--
Справедливость выше закона. А человечность выше справедливости.
Re[5]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Doom100500, Вы писали:
D>И??? С чем спорим, с чем согласны? Что? Другой синтаксис? Я его знаю. А что сказать то хотели?
Тут весь тред про другой синтаксис..
Re[8]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, rg45, Вы писали:
R>Ну это тоже не проблемы С++. Опять же, проблемы компании и твои, поскольку ты в ней работаешь. Ну блин, давай начнем критиковать C#, опираясь на возможности C# 2.0 и ссылаясь на компанию, где это используется.
Согласен с каждым словом, но с этими проблемами надо жить.
R>Дело не в ranges. Просто C++ даёт удочки, а ты ждёшь рыбку. Вот и весь сказ.
А мне кажется, что здесь говорит ущемлённое ЧСВ адептов писать закорючки вручную.
Нет ничего плохого ни в удочке ни в рыбе. Как и в том, что наиболее часто употребляемые конструкции были бы в стандартной библиотеке.
Шарп так-то тоже иногда доводит до белочки, когда обязательно требует указывать параметр дженериков, когда мог бы и сам тип вывести.
Здравствуйте, rg45, Вы писали:
R>Ну это тоже не проблемы С++. Опять же, проблемы компании и твои, поскольку ты в ней работаешь....
Это проблемы очень-очень-очень многих людей. У меня тут тоже плюсовый код 30-летней давности, там вообще всё с C начиналось, а не с плюсов.
Даже не представляю, сколько человеко-столетий нужно потратить, чтобы это заставить хотя-бы компилироваться новыми компиляторами, не говоря уже о том, чтобы заставить это работать. Плюсовый код — в большинстве случаев застарелое и окаменелое говно мамонта. Сильно сомневаюсь, что сейчас новые проекты на плюсах начинают. Даже если и начинают, то в них быстро перекачёвывают старые папки с кодом (не отдельные строки, а директории целиком). И таким образом сразу образуется куча ограничений.
ЗЫ: подозреваю, что как минимум часть кода в этих новых/старых проектах будет написана вот теми самыми престарелыми фортранистами.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Философ, Вы писали:
Ф>Невыносимо раз за разом расшифровывать всякие ptrn, alm, grs, rprms. Ф>Сил моих больше нет смотреть на эту экономику букав.
Я думаю, это не Фортран виноват и не его воспитанники, а просто мудаки, не умеющие писать понятно для прочих людей. А также виноваты люди иной культуры, с иероглифами или отсутствием гласных букв в словах.
Re[6]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Privalov, Вы писали: SIT>>Особенно, когда ИИ начнет уменьшать размер исходников (научившись у воспитанников фортрана)... P>Кто ж его научит?
Здравствуйте, Privalov, Вы писали:
P>Я ещё не на пенсии, но внучка подрастает.
Супер! P>Что будет с отраслью, когда набежит толпа айтишников и будет везде пихать ИИ, боюсь даже думать.
Честно говоря, я не очень боюсь. Это ведь смотря куда совать и на каких данных обученный. Надеюсь, у этой "толпы айтишников" хватит ума в критические вещи не совать ИИ, обученный на социальных сетях
Re[5]: Госспади, отправь на пенсию воспитанников фортрана!
Да, девочка замечательная. Вчера у нас была. Не успел я с работы прийти, как она попыталась мне на голову запрыгнуть.
ry>Честно говоря, я не очень боюсь.
Мне иногда приходится сталкиваться. Не знаю, чему их самих учат. Если кто-то старорежимный что-то считает на калькуляторе, он знает, как эти вычисления работают, и чем отличается, скажем, синус от логарифма. А молодёжь не всегда отличает строковое выражение от логического. И не всегда знает, как проверить двоичное число на чётность. С этими явлениями я сталкивался. Боюсь думать, чему такие спецы обучат ИИ.
Re[7]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Философ, Вы писали:
Ф>Невыносимо раз за разом расшифровывать всякие ptrn, alm, grs, rprms. Ф>Сил моих больше нет смотреть на эту экономику букав.
Где-то примерно до 90-х у большинства линкеров было ограничение: у глобальных символов только первые где-то 8 знаков были значащими.
Это сейчас можно объявить два символа, котырые различаются в 256-м знаке от начала, и линкер это правильно обработает.
Фортран тут не очень причём, к Си это тоже относилось. Просто памяти было мало и процессоры были слабые, по сравнению с сегодняшними. Зато программисты понимали, что инструменты могут иметь ограничения, и подстраивались.
Re[9]: Госспади, отправь на пенсию воспитанников фортрана!