Здравствуйте, Артём, Вы писали:
N>> Я как-то переписывал ffplay на С++, Аё>Велосипедизм- один из худших пороков C++.
Нет, Артёмка, худший порок — склеивать воедино нагромождение фреймворков вместо того, чтобы написать простой код, который просто тупо делает именно то, что нужно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
N>>> Я как-то переписывал ffplay на С++, Аё>>Велосипедизм- один из худших пороков C++. CC>Нет, Артёмка, худший порок — склеивать воедино нагромождение фреймворков вместо того, чтобы написать простой код, который просто тупо делает именно то, что нужно.
Ну, фреймворки наверное, предоставляют какую-то функциональность? Умение просто склеить off the shelve фреймворки, на которые потрачено тысячи человекочасов, однозначно лучше написания собственного велосипеда.
Здравствуйте, Артём, Вы писали:
Аё>Умение просто склеить off the shelve фреймворки, на которые потрачено тысячи человекочасов, однозначно лучше написания собственного велосипеда.
Нет, Артёмка, не однозначно и не лучше.
В этом и заключается разница между инженером и кодером.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Не нужно держаться за язык. Это всего лишь инструмент. Выбирай интересные тебе задачи и изучай инструменты для решения этих задач. Деньги? Конечно, важны, но не ориентируйся только на них. Миллионы на неинтересных задачах — ну… я б не смог.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, kaa.python, Вы писали:
KP>>После того как посмотрю очередной CppCon или почитаю планируемые изменения, сразу в голове роятся мысли "ну что за хрень, надо из этого уходить на совсем". CC>А что, разве кто то заставляет вот прямо таки всё что там добавят начинать срочно пихать везде? CC>Пиши на том сабсете, который тебя устраивает.
Я вот свою игру писал, так и было — прекрасный язык, сам себе LINQ написал, сам std::ranges за 10 лет до. Всё пело и летало, красивый код и полная функциональщина и скобочки вот так
func
{
}
а не вот так
func() {
}
Но, работая в команде, нужно отдавать себе отчёт что все программисты разные, и стандарты и подходы у них разные, и если в язык добавили новую фичу — обязательно найдётся тот, кто её немедленно опробует. А за ним и другие, и на следующем твоём MR аргументу мол "перепиши посовременнее, вот, новая конструкция" трудно что то ответить. И код С++ очень быстро превращается в свалку, смешение всех стилей и острым желанием всё это к чертям... В современном С++ уже кода не видно, сплошные навороченные декораторы функций, переменных. И вездессущее auto.
Вся проблема С++ как раз в том что там уже теперь столько фич, и один и тот же код можно написать сотней разных способов.
Современный С++ это уже вот такая красота (я даже не вижу где тут название функции!)
Здравствуйте, Артём, Вы писали:
N>>Именно поэтому на Java нет ни плееров, ни видеосерверов? Аё>Есть.
Но никто о них не знает и назвать их не может.
N>>Именно поэтому что Nvidia, что Интел, что АМД начинают новые проекты на С++? Аё>В облаках C++ нет.
Как раз все серверные продукты перечисленных контор написаны на плюсах, их прямо сейчас начинают писать на плюсах и дают вдобавок к плюсовому питоновский API. Я тебя могу ссылками с головой закидать, потому как участник партнёрских программ той же Nvidia.
N>>А как ещё изучить тот же ffmpeg? Аё>Чтением документации?
Нет, ни документация, ни примеры не дают тех знаний, которые сами авторы вложили в свои же прикладные продукты.
N>> разбирать исходники готового ПО — это лучший способ изучения технологии. Аё>Разбирать исходники клиентского кода вместо чтения документации- извращение.
Если это ПО от авторов библиотеки, то оно лучше документации показывает каноническое и оптимальное использование. Я выше писал, что их примеры работают медленнее, чем их же ffplay и ffmpeg. Теперь я знаю почему.
Тут выбора нет, по большому счёту: либо ты пишешь средний продукт и как всё, либо копатель код и выдаёшь скорость выше.
Здравствуйте, johny5, Вы писали:
J>прекрасный язык, сам себе LINQ написал, сам std::ranges за 10 лет до. Всё пело и летало, красивый код и полная функциональщина и скобочки вот так
+1
J>все программисты разные, и стандарты и подходы у них разные, и если в язык добавили новую фичу — обязательно найдётся тот, кто её немедленно опробует.
В разработке нет места демократии, только жёсткая диктатура. Так что все эти вольности в любой серьёзной команде рубятся на корню.
J>на следующем твоём MR аргументу мол "перепиши посовременнее, вот, новая конструкция" трудно что то ответить.
Как раз на деле всё наоборот. Чтобы что либо переписать с копролита на более менее адекватное приходится изыскивать как это переписывания продать за новую фичу.
Просто так никто ничего перепиысывать просто не даст.
J> И код С++ очень быстро превращается в свалку, смешение всех стилей
Эти попытки рубятся на code review
J>Современный С++ это уже вот такая красота
Это не красота, это "укушенность Александреску" 2.0
J>Пойди докажи им что это не так.
Кому, им?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Nuzhny, Вы писали:
N>>>Именно поэтому на Java нет ни плееров, ни видеосерверов? Аё>>Есть.
N>Но никто о них не знает и назвать их не может.
Ну я не помню уже за давностью- ставил в 2010 торрент-видео-клиент, и он был на жаве. Может быть, дело что десктоп на жаве с 2010г не пишут Зато можно легко найти клиентов и серверов не нативных: Banshee (C#), Plex Server (Python). И естесственно, что кодек не на питоне или жаве написан.
N>>>Именно поэтому что Nvidia, что Интел, что АМД начинают новые проекты на С++? Аё>>В облаках C++ нет.
N>Как раз все серверные продукты перечисленных контор написаны на плюсах, их прямо сейчас начинают писать на плюсах и дают вдобавок к плюсовому питоновский API. Я тебя могу ссылками с головой закидать, потому как участник партнёрских программ той же Nvidia.
Ну так закидай. Чтобы работало в AWS микросервисом.
N>>>А как ещё изучить тот же ffmpeg? Аё>>Чтением документации?
N>Нет, ни документация, ни примеры не дают тех знаний, которые сами авторы вложили в свои же прикладные продукты.
OMG да ffmpeg из консольки запускается . Открыл pipe и вперед, и без бинарного API его можно использовать.
N>Если это ПО от авторов библиотеки, то оно лучше документации показывает каноническое и оптимальное использование.
Каноническое использование- вызывать документированный API. Ты вроде не первый год в индустрии.
N>Тут выбора нет, по большому счёту: либо ты пишешь средний продукт и как всё, либо копатель код и выдаёшь скорость выше.
Велоспорт вчера, сегодня, завтра http://rsdn.org/forum/philosophy/1143827.all
Здравствуйте, CreatorCray, Вы писали:
J>>Пойди докажи им что это не так. CC>Кому, им?
"укушенным Александреску"
Правда тут думаю уже чуть больше чем просто желание напрудить сложных шаблонов. В конце концов Boost мы используем все, и всё было не так и плохо..
Плохо в том, что в сам стандарт тянут со всех языков без разбору — куча висящих, полуимплеметированных фич, которые ещё и плохо играют друг с другом. Пропало единое видение языка.
Здравствуйте, Артём, Вы писали:
Аё>Ну я не помню уже за давностью- ставил в 2010 торрент-видео-клиент, и он был на жаве. Может быть, дело что десктоп на жаве с 2010г не пишут Зато можно легко найти клиентов и серверов не нативных: Banshee (C#), Plex Server (Python). И естесственно, что кодек не на питоне или жаве написан.
Banshee — умер много лет назад.
Plex Server — на гитхабе нашёл только Plex Player, он написан на C++ Qt.
Gerbera media server — C++
MythTV — C++
OBS Studio — C++
PipeWire — C
Kodi — C++
N>>Как раз все серверные продукты перечисленных контор написаны на плюсах, их прямо сейчас начинают писать на плюсах и дают вдобавок к плюсовому питоновский API. Я тебя могу ссылками с головой закидать, потому как участник партнёрских программ той же Nvidia. Аё>Ну так закидай. Чтобы работало в AWS микросервисом.
Ну, все продукты Nvidia для нейросетей, которые я использую явно, вот прямо со своей рабочей машины беру: Triton server (это даже не библиотека, а сервермоделей), DeepStream, TensorRT, cuDNN, CUDA, Video Codec SDK, nvjpeg — это всё и множество других библиотек и продуктов. Оно как раз на серверах и edge device и используется в основном.
У Интела прикладное — OpenVINO (ngraph, TBB), oneAPI (тут вообще не только плюсовые библиотеки, но и сишные), Model server (то же самое, что и triton у NVidia).
N>>Нет, ни документация, ни примеры не дают тех знаний, которые сами авторы вложили в свои же прикладные продукты. Аё>OMG да ffmpeg из консольки запускается . Открыл pipe и вперед, и без бинарного API его можно использовать.
Хорошо, как мне ffmpeg из консольки декодирует видео покадрово, используя cuvid decoder, при этом кадры декодируются в NV12 цветовое пространство в видеопамяти, мне надо в видеопамяти же сконвертировать их в 3 RGB плейна на входной тензор какой-нибудь нейросетевой библиотеки. То есть кадр декодировался в видеопамять в своём нативном цветовом пространстве, а потом уже лежит в правильном формате на входе нейросети также в видеопамяти. Знаешь, как оно обычно бывает у питонистов? Какой-то декодер, кадр копируется и конвертируется в RGB в системной памяти, кадр конвертируется во входной формат тензора, кадр где-то в нейросетевом фреймворке копируется в видеопамять. Это всё заводится в облаках, тормозит, но масштабируется, путём добавления инстансов. Потом Интел и Нвидиа начинают спешно писать на С++ свои Triton и Model сервера, чтобы оно было полегче, а то они начинают проигрывать в своей железной гонке (Google начинает делать свои TPU, только ленивый не начинает их делать). Но их сервера также из-за своей универсальности не так хороши, как написанное вручную. Да и многого эти сервера всё таки не могут.
Это я про гигантов рассказал. Ещё есть туева хуча аналогичного ПО от китайцев, от Abbyy (NeoML), от менее именитых производителей.
N>>Если это ПО от авторов библиотеки, то оно лучше документации показывает каноническое и оптимальное использование. Аё>Каноническое использование- вызывать документированный API. Ты вроде не первый год в индустрии.
Блин, детский сад. Конечно все используют документированный API. Это как с любым языком: мало прочитать документацию, надо знать ещё как пользоваться, чтобы оно работало правильно и быстро.
Хорошо, убедил. Нужно нативно, питон большие накладные расходы. Но почему C++ ужасный использовать? Тот же ffmpeg на C без плюсов. Go так вообще замечательный нативный язык.
Здравствуйте, johny5, Вы писали:
J>>>Пойди докажи им что это не так. CC>>Кому, им? J>"укушенным Александреску"
А, этим ничего доказывать не надо по причине бесполезности сего занятия. Сами должны переболеть, а до тех пор не пускать к Core product.
J>В конце концов Boost мы используем все
Нет, не все. Кроме того буст местами просто ужасен.
J>Плохо в том, что в сам стандарт тянут со всех языков без разбору — куча висящих, полуимплеметированных фич, которые ещё и плохо играют друг с другом. Пропало единое видение языка.
Это есть, да.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Артём, Вы писали:
Аё>Но почему C++ ужасный использовать?
Не надо ужасный. Используй нормальный С++
Аё> Тот же ffmpeg на C без плюсов.
С без плюсов ужасен без шансов на исправление.
Аё> Go так вообще замечательный нативный язык.
Нет.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Если это куски реального кода, то можно задать пару уточняющих вопросов? (опыта с C++20 пока нет, какие-то вещи кажутся далеко не очевидными)
1. Зачем у func в качестве возвращаемого значения указывается const auto, а не просто auto?
2. Зачем при указании концепта в требованиях к func используется синтаксис T (x)? Тут же вроде не макро, какой смысл x заключать в скобки?
3. В чем смысл концепта, который проверяет э... возможность привести x к void (обычно конструкция вида (void)x применяется в коде разве что для того, чтобы компилятор не выдавал предупреждений о неиспользованных аргументах/локальных переменных)?
Ну и еще смущает вот это (и не только странным названием):
Дело в том, что здесь возникнет ошибка компиляции, если у T нет префиксного ++. Может так и задумывалось, но вроде как обычно стараются в таких случаях добавить еще и проверку того, что для T вообще есть префиксный ++, а уже потом определяют, бросающий ли это ++ или нет.
Здравствуйте, Артём, Вы писали:
Аё>Но почему C++ ужасный использовать?
Потому, что когда есть знание C++ и реальный опыт его нормального использования, то на C++ получается быстрее, проще, лаконичнее и надежнее.
Аё>Тот же ffmpeg на C без плюсов.
Здравствуйте, Nuzhny, Вы писали:
Аё>>Но почему C++ ужасный использовать? Тот же ffmpeg на C без плюсов. Go так вообще замечательный нативный язык.
N>В C мне не хватает абстракций. Скучно на нём.
VTable в C руками делается.
N>Go лень учить, лучше Rust, всё интересней.
Go прикольный. Не нужно его абстрактно учить, нужно использовать для небольших задач. Такое ощущение, когда простая задача остается простой и понятной реализацией, в отличие от C++ где оно обрастет укусами александреску или жавы, где оно обрастет 3 наслоениями getter-setter, непрозрачными аннотациями programagic и ничего не понятно, когда оно магически не работает.
Здравствуйте, Homunculus, Вы писали:
H>Здравствуйте, checkthestack, Вы писали:
H>Миллионы на неинтересных задачах — ну… я б не смог.
это когда закрыты базовые потребности то да, а вот когда ты нищий тут некоторые другие приоритеты вылезают
но конечно есть сумашедшие которые "буду делать только то что нравится" и получающие копейки
Здравствуйте, Артём, Вы писали:
N>>В C мне не хватает абстракций. Скучно на нём. Аё>VTable в C руками делается.
Дадада, и закат солнца вручную тоже.
Сишный boilerplating задалбывает своей рутинностью и унынием.
Аё>Go прикольный.
Это скорее недостаток.
Аё>в отличие от C++ где оно обрастет укусами александреску
Это у тех, кто не умеет в С++
Аё> или жавы, где оно обрастет 3 наслоениями getter-setter, непрозрачными аннотациями programagic
Аналогично. Даже на жабе можно писать просто, если выбросить из головы то, что называют "best practices"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока