Комментарии 33
Что-то я не понял первый пример про концепты, а почему вдруг строки не могут быть Addable?
Потому что это перевод!
Там и про корутины немного странно:
кооперативную многозадачность
обработка событий в режиме реального времени
по-моему слабо сочетаются. Вообще, реальное время на несколько событий очень хорошо дружит как раз с обычными потоками (хотя и получается поджирание ресурсов), ну или уже код запускать в ядре ОС (модули ядра и т.п.).
В общем - это перевод.
когда я искал когда-то как сделать много поточку, были ответы по типо есть два пути либо паралелить(через механизм отправки и принятия там тоже ждём то что запланировали на отправку-то так то по существу и примеры на SO есть с обсуждениями ) либо потоки, корутина что-то между наверно, а может и не между а подвид паралелизма
предположим есть квадрат он привязан к точке - точку берем как 1 корутину, тогда получаются воркеры наверно, и нагрузка вроде балансируется(если при достижении порога ну 10 например на 1 квадрате, подключать еще 1 корутину, а если прям много много то как-то по другому) много всё равно не распаралелить-то, только в вебе наверно и распаралелить, а в граффике нереально же, есть порог памяти и прочее, если на одном квадрате превышен лимит на мощность на корутину допустим вроде логично звучит, но как на самом деле я не знаю, но клиент такое точно не сможет распаралелить поэтому при достижении порога у игрока именно будет фриз, тоесть когда все игроки на одной локации
Скрытый текст

Потому что это перевод!
Да нет, там в оригинале прямо написано std::string
. То есть проблема не в переводе, а в первоисточнике.
Уточнюсь:
Потому что это перевод!
Это проблема не перевода (как можно подумать). Это проблема другого автора и профессия переводчика.
По автору: как-то нередко получается, что на условно-английском языке пишут все подряд и за собой не очень проверяют, что написано. При этом исходному автору уже комментарий не напишешь.
По профессии переводчика: частенько переводы делают люди, которые переводить умеют лучше, чем писать программы. Как результат, при выборе статьи для перевода некоторые огрехи могут пропускаться. В дальнейшем же спрашивать про неточности в тексте у самого переводчика в любом случае неразумно: если он (вдруг) начнёт делать свои правки, то это уже будет не перевод, а какая-то авторская переработка.
Поэтому:
Про неточности: делаем разбор и обсуждение в комментариях.
Про перевод: спасибо, что есть люди, которые берутся переводить статьи на русский язык.
строку как std::string можно, может просто первоисточник хотел строкой const char*

Мобильная версия документации "современного" языка С++
Код с телефона не пишут, поэтому никто не заморачивался мобильной версией
на телефоне иногда можно накидать идею на С++
Отличный подход. Вот только никто не говорит про "писать". Может, вы в метро захотите почитать, или просто нужно глянуть по-быстрому, а у вас телефон под рукой.
Это мне напоминает хабр, который типа такой супер айтишный ресурс, на котором сидят одни супер профессионалы, и при этом весь кривой и косой.
Хороший десктопный дизайн, разве что не помешало бы цветами выделить секции, чтобы визуально облегчить навигацию.
В вебе, к сожалению, осталось мало таких сайтов. Мне ещё у Gentoo официальный сайт нравится - и стильно, и без смузихлёбной дрисни.
А когда завезут заголовочники для json, http и много чего еще?
Никогда. C++ язык общего назначения и добавление таких узкоспециализированных либ противоречит его философии.
По такой логике буквально все мейнстримные языки, это не языки общего назначения?
Go, java, python и тд вышли из чата. Конечно c++ лучший язык, но это кринге
И вошли в чат С и Раст(ладно жава и питон, это действительно языки для самых разных задач, но Го то каким боком? Язык только для фигачинья микросервисов в прод годится)
На моем текущем месте работы есть несколько разных библиотек для работы с Json, с разными плюсами и минусами. Как из этого сделать что-то обобщенное (чего требует комитет) не представляю, учитывая что они дают разные гарантии и разную производительность.
Алсо я нигде не называл С++ лучшим языком если это не кринж троллинг, вы это выдумали.
это я называю плюсы лучшим языком, но есть моменты, которые меня душат. Что в jsoncons, что в poco::json обобщенная работа с json, например. Генератор случайных чисел в плюсах есть, хотя это довольно узкоспециализированная штука, а вот инструментов для жисончиков нет
Короче разрабы будущих с++ витают в облаках. Пока они абстрагируются уже придумали кучу других языков решающих эти проблемы и не заставляющие писать простыни кода. А по скорости с++ уже отстает
ну на С проще получается(если понять как готовить С++26 флаг тоесть разобраться с классами то поидее норм)), но из-за интереса можно переписать на С++26 флаг и добиться компиляции -O3 -ffast-math, а там так и так простыня кода будет, если агрессивная оптимизация надо следить за шаблонами это чревато простыне наверно, вот я сейчас по своей простыне буду проверять, у меня без O3 работает, на С и с ним и без него работает, ради интереса переписываю все шаблоны на безшаблонье и там буду смотреть), ну а так только агрессивная на С вменяемая, на С++ у меня чото отлетает, и я думаю покачто какойто шаблон, вобщем интересно )
А по скорости с++ уже отстает
Отстаёт от чего?
ну попробуйте математику перенести(только не спрашивайте зачем, просто есть библиотеки которые обновляются, математику можно реализовать же всего 1 раз) воспользуйтесь плюшками С++ и скомпилируйте в -O3 -ffast-math и сравните -O3 -ffast-math на С (nan, inf должен быть устойчивый, и логика должна сохранятся в обоих языках по сути как на С)
если поможет пользуйтесь этим еще floating-point.html
интересно что после такого микроисследования вы скажите про С++, мне что-то подсказывает С++ хорош пока мы пользуемся его библиотекой, но плата или цена на расходные за получение такого удобства неоценимы просто
просто вдумайтесь линукс можно собрать с -O3 или -Ofast сложно но можно, а математика на С++ может быть с багом или адрес может улететь
тогда если уже говорить в этой плоскости есть случаи когда теряется производительность ради интерфейса
чтобы не быть голословным так как я вроде чутка на начале пути уловил какой-то момент в этом вот
Скрытый текст

это например гном-калькулятор на фрибсд как оно собиралось не знаю, я просто в какой-то момент заметил это совсем в другом приложении и прям увидел еффект от расчётов
и очевидно sqrt: nan в С тоже нан, эх я ошибся
линукс можно собрать с -O3 или -Ofast
И почти наверняка получится глюкалово, сюрприз. На Gentoo Wiki прямо написано: не включайте -O3 для системы.
У меня использование -O3 для видеокодеков приводило к дёрганью изображения.
В целом я мало что понял, ваши комменты это какая-то каша, ну а обосновывать ненужность С++ тем, что pure C быстрее - это просто лол.
при одних и тех же условиях проект на кланге С++ даже в -O2 может не собраться по сравнению с С или может собраться но будут те же артефакты, из-за конструкции С++, например часто я молча наблюдал как гцц собирает всё показывает как надо когда как кланг просто не показывает результат ), но компилирует
в такой конкретике и условиях С++, С становится значительно проще, он как раз даёт управление
а так будет фантомное отключение адреса и всё, и это будет неявно где-то и неочевидно, в такой ситуации можно в любую точку тыкать и говорить вот видишь ты не понимаешь )
просто я привёл пример самого факта что даже линукс собирается в -O3 а какой-то пример нет из-за того, что много чего туда надо было запихнуть ради удобства
так а вы с чем сталкивались в С++? часто воспроизводимая ошибка в Анриале слетающие указатели. Вы сталкиваетесь с таким у вас слетают указатели?)
ну видеокодек на С написанный наоборот ляжет хорошо на ускорение, может там какие-то неочевидные штуки, у меня математика и 3д кладутся на ускорение(всё идеально и очевидно), когда тоже самое на С++ приводит к каким-то чудесам ), которые не понятно как работают ) весь експириенс очевидного кодинга можно умножать на 0 когда указатель режется, и причем не мой а библиотечный, типо внутренний
так а может вам было бы интересно написать на Opengl слайдер, рисуете кадры на плоскости 2д, может какой-то опыт появится, как раз увидите как это работает и почему дёргается
расширены возможности ключевого слова
constexpr
Я вот был удивлен насколько. Оказалось можно даже new и delete:
#include <numeric>
constexpr int naiveSum(unsigned int n) {
auto p = new int[n];
std::iota(p, p+n, 1);
auto tmp = std::accumulate(p, p+n, 0);
delete[] p;
return tmp;
}
constexpr int smartSum(unsigned int n) {
return (n*(1+n))/2;
}
int main() {
static_assert(naiveSum(10) == smartSum(10));
static_assert(naiveSum(11) == smartSum(11));
return 0;
}
А то так живешь и не знаешь какие возможности там скрыты.
Современный C++23/26: концепты, корутины и многое другое в высокопроизводительных службах