Здравствуйте, T4r4sB, Вы писали:
TB>Покажи аналог на С++. Чтоб в заголовке шаблона были описаны все необходимые и достаточные ограничения на типы, которые в него можно подставлять (кажется, "концепт" называется). TB>Просто утиный шаблон не предлагать,
Есть принципиальная разница: в Rust-е все эти ограничения формально необходимы. В C++ -- нет, до тех пор пока концепты (или SFINAE до C++20) не потребуются для выбора одной из нескольких перегрузок average в зависимости от параметров.
TB> потому что нечитаемых ошибок компиляции от govno compiler collection я насмотрелся.
Здравствуйте, CreatorCray, Вы писали:
CC>>>Тут какой то псих пишет LINQ-style кашу. Р>>ну как псих. CC>На С++ писать функциональщину — это mental disorder
Здравствуйте, kov_serg, Вы писали:
vsb>>Напиши тот же код на другом языке со сходными возможностями. C++ или Haskell. И тогда можно попробовать сравнить. vsb>>По сути тут задача не тривиальная же.
_>o_O вычисление среднего не тривиальная задача?
В типизированном языке, для произвольных типов и с адекватными сообщениями об ошибках при неправильном использовании — я думаю, что не тривиальная.
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, CreatorCray, Вы писали:
CC>>>>Тут какой то псих пишет LINQ-style кашу. Р>>>ну как псих. CC>>На С++ писать функциональщину — это mental disorder
S>А что там такого ужасного? Разница лишь в форме записи и к этому можно привыкнуть.
Вообщем идея хорошая, но что-то вам мешает.
Тут просто надо выбрать: путь одиночки или со стадом.
Здравствуйте, vsb, Вы писали:
_>>o_O вычисление среднего не тривиальная задача?
vsb>В типизированном языке, для произвольных типов и с адекватными сообщениями об ошибках при неправильном использовании — я думаю, что не тривиальная.
То есть программист должен не тривиально ублажать язык, вместо решения простой прикладной задачи. Очень показательно.
S>Каким-то ретроградством и лудизмом пахнуло.
Каким-то хомячизмом и доверчивостью к мнению большинства пахнуло. А если принять во внимание тот факт, что функциональщина — это древняя откопанная стюардесса, то кто еще тут ретроград?
Здравствуйте, so5team, Вы писали:
S>Есть принципиальная разница: в Rust-е все эти ограничения формально необходимы. В C++ -- нет,
И это минус С++.
TB>> потому что нечитаемых ошибок компиляции от govno compiler collection я насмотрелся.
S>Вас пожалеть?
Нет, только не надо врать, как легко и классно ты за минуту понимаешь, почему на шаблонном коде govno compiler collection высирает тупое бесполезное эссе на 1000 строк какого-то бреда, в котором нет ни единого упоминания строчки, где действительно произошла ошибка.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, T4r4sB, Вы писали:
S>>Есть принципиальная разница: в Rust-е все эти ограничения формально необходимы. В C++ -- нет,
TB>И это минус С++.
А черное -- это белое, ага.
TB>>> потому что нечитаемых ошибок компиляции от govno compiler collection я насмотрелся.
S>>Вас пожалеть?
TB>Нет, только не надо врать, как легко и классно ты за минуту понимаешь, почему на шаблонном коде govno compiler collection высирает тупое бесполезное эссе на 1000 строк какого-то бреда, в котором нет ни единого упоминания строчки, где действительно произошла ошибка.
Так уж получается, что в последние лет пять в случае с GCC гораздо сложнее разбираться в некоторых других ошибках, а не в том, что связано с шаблонами. Например, синтаксическая ошибка в списке инициализаторов нешаблонного класса может поставить в тупик больше, чем пять экранов описания невозможности инстанциировать шаблон.
Я это к тому, что в C++, исторически, всратая система информирования об ошибках и это не имеет прямое отношения к шаблонам.
Здравствуйте, CreatorCray, Вы писали:
CC>>>На С++ писать функциональщину — это mental disorder S>>Каким-то ретроградством и лудизмом пахнуло.
CC>Ну т.е. забивать гвозди отключенным от питания промышленным перфоратором это "ретроградство и лудизм"?
Нет, ретроградство и лудизм -- это ассоциировать функциональщину в C++ с забиванием гвоздей перфоратором.
CC>Нуок
Мне вот удивительно, как человек с такой верой в непогрешимость собственных суждений умудряется еще и узнавать что-то новое. Хотя...
Здравствуйте, The Passenger, Вы писали:
TP>Здравствуйте, Константин Б., Вы писали:
КБ>>А на нормальном языке этот класс ошибок и уязвимостей полностью отсутсвует.
TP> и даже в виртуальных машинах, которые, между дрочим, пишутся на с и с++?
Да. К сожалению если программу на нормальном языке запускать на платформе написанной на сишечке — то уровень безопасности будет как у сишечки.
Это как строить небоскребы на заминированном болоте вместо фундамента. Но это не повод опускать руки и не исправлять ситуацию к лучшему.
В чястности не надо начинать новые проекты на сишечке, чтобы количество уязвимостей хотя бы не росло.
Здравствуйте, so5team, Вы писали:
S>Нет, ретроградство и лудизм -- это ассоциировать функциональщину в C++ с забиванием гвоздей перфоратором.
Что одно что другое — использование мощного инструмента не по назначению.
S>Мне вот удивительно, как человек с такой верой в непогрешимость собственных суждений умудряется еще и узнавать что-то новое. Хотя...
Рад тебе сообщить что то новое, но ты лучше отойди от зеркала что ли...
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
S>>Нет, ретроградство и лудизм -- это ассоциировать функциональщину в C++ с забиванием гвоздей перфоратором. CC>Что одно что другое — использование мощного инструмента не по назначению.
К непогрешимости суждений добавляется еще и раздутое самомнение. Полагаю, в вашем присутствии, все ЧСВ-мометры в радиусе 10 метров выходят из строя.
S>>Мне вот удивительно, как человек с такой верой в непогрешимость собственных суждений умудряется еще и узнавать что-то новое. Хотя... CC>Рад тебе сообщить что то новое, но ты лучше отойди от зеркала что ли...
Мне уже столько раз сообщали, что я не умею писать код, ничего не понимаю в разработке, застрял в 1990-х и вообще идиот, что вы точно к этому списку ничего не добавите.
Здравствуйте, so5team, Вы писали:
S>Я это к тому, что в C++, исторически, всратая система информирования об ошибках и это не имеет прямое отношения к шаблонам.
Утиная типизация в шаблонах дополнительно усложняет диагностику. Ты получаешь лог об ошибке вообще не в том месте где она действительно возникла. Вместо простого и понятного что такой-то тип не подходит по условиям для подстановки в такойто шаблон
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, T4r4sB, Вы писали:
S>>Я это к тому, что в C++, исторически, всратая система информирования об ошибках и это не имеет прямое отношения к шаблонам.
TB>Утиная типизация в шаблонах дополнительно усложняет диагностику. Ты получаешь лог об ошибке вообще не в том месте где она действительно возникла. Вместо простого и понятного что такой-то тип не подходит по условиям для подстановки в такойто шаблон
По моим наблюдениям сейчас уже гораздо получше. Где-то начиная с gcc-9.
А вот то, что C++ компиляторы вместо того, чтобы остановиться не первой найденной проблеме пытаются идти дальше и вываливают еще 100500 сообщений о последующих ошибках... Вот это 3.14дец, простите мне мой французский. Пишешь класс, забываешь после него точку с запятой поставить, ниже по коду используешь его в качестве параметра шаблона и... В выхлопе сперва то, что мне нужно, а потом еще 10 страниц с ошибками о том, как компилятор пытался инстанциировать шаблон, но не смог + информация о том, как он пытался это делать.
Здравствуйте, T4r4sB, Вы писали:
TB>Утиная типизация в шаблонах дополнительно усложняет диагностику.
Добавлю отдельно: основная проблема утиной типизации в шаблонах (как по мне, это все злостное имхо) не в проблемах диагностики если в шаблон отдали что-то не то. А в том, что здесь как в динамически типизированных языках: пока все тестами не покроешь, нет никакой уверенности. Даже в том, что шаблон вообще скомпилируется. Раньше вон VC++ допускал наличие в теле шаблона синтаксических ошибок -- там просто транслятор был так устроен, что если шаблон не инстанциируется, то его тело толком и не парсилось.
Вот это да, это гораздо серьезнее. Напишешь шаблонный код, который отлично работает с X и const X &, через года полтора кто-то в него засунет X && и бах! Ошибка компиляции, а автор шаблона уже и сам не помнит, всех деталей.
Здравствуйте, so5team, Вы писали:
S>Мне уже столько раз сообщали, что я не умею писать код, ничего не понимаю в разработке, застрял в 1990-х и вообще идиот
И? Я то к этому всему каким боком?
S> что вы точно к этому списку ничего не добавите. S>К непогрешимости суждений добавляется еще и раздутое самомнение.
Ты правда думаешь что меня интересует твоя персона?
Я написал про функциональщину, ты же перевёл это всё строго на себя.
Так что самомнение твоё таки да, походу раздутое.
Сдувай.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока