Re[14]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 24.04.22 07:15
Оценка: +2
Здравствуйте, Артём, Вы писали:

N>> Я как-то переписывал ffplay на С++,

Аё>Велосипедизм- один из худших пороков C++.
Нет, Артёмка, худший порок — склеивать воедино нагромождение фреймворков вместо того, чтобы написать простой код, который просто тупо делает именно то, что нужно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 24.04.22 08:42
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

N>>> Я как-то переписывал ffplay на С++,

Аё>>Велосипедизм- один из худших пороков C++.
CC>Нет, Артёмка, худший порок — склеивать воедино нагромождение фреймворков вместо того, чтобы написать простой код, который просто тупо делает именно то, что нужно.

Ну, фреймворки наверное, предоставляют какую-то функциональность? Умение просто склеить off the shelve фреймворки, на которые потрачено тысячи человекочасов, однозначно лучше написания собственного велосипеда.
Re[16]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 24.04.22 08:46
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Умение просто склеить off the shelve фреймворки, на которые потрачено тысячи человекочасов, однозначно лучше написания собственного велосипеда.

Нет, Артёмка, не однозначно и не лучше.
В этом и заключается разница между инженером и кодером.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Оставаться в С++ или уходить?
От: Homunculus Россия  
Дата: 24.04.22 08:49
Оценка: +1
Здравствуйте, checkthestack, Вы писали:

Не нужно держаться за язык. Это всего лишь инструмент. Выбирай интересные тебе задачи и изучай инструменты для решения этих задач. Деньги? Конечно, важны, но не ориентируйся только на них. Миллионы на неинтересных задачах — ну… я б не смог.
Re[5]: Оставаться в С++ или уходить?
От: johny5 Новая Зеландия
Дата: 24.04.22 11:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, kaa.python, Вы писали:


KP>>После того как посмотрю очередной CppCon или почитаю планируемые изменения, сразу в голове роятся мысли "ну что за хрень, надо из этого уходить на совсем".

CC>А что, разве кто то заставляет вот прямо таки всё что там добавят начинать срочно пихать везде?
CC>Пиши на том сабсете, который тебя устраивает.

Я вот свою игру писал, так и было — прекрасный язык, сам себе LINQ написал, сам std::ranges за 10 лет до. Всё пело и летало, красивый код и полная функциональщина и скобочки вот так
func
{
}


а не вот так
func() {
}


Но, работая в команде, нужно отдавать себе отчёт что все программисты разные, и стандарты и подходы у них разные, и если в язык добавили новую фичу — обязательно найдётся тот, кто её немедленно опробует. А за ним и другие, и на следующем твоём MR аргументу мол "перепиши посовременнее, вот, новая конструкция" трудно что то ответить. И код С++ очень быстро превращается в свалку, смешение всех стилей и острым желанием всё это к чертям... В современном С++ уже кода не видно, сплошные навороченные декораторы функций, переменных. И вездессущее auto.

Вся проблема С++ как раз в том что там уже теперь столько фич, и один и тот же код можно написать сотней разных способов.

Современный С++ это уже вот такая красота (я даже не вижу где тут название функции!)
template<class T> inline constexpr bool is_nothrow_incrable_v = noexcept(++std::declval<T&>());
template<class T, class...Ts>
constexpr const auto func(T&& val, Ts&&...a) const noexcept(is_nothrow_incrable_v<T>)
requires requires(T (x)) { (void)x; };
{
 ... initializer_list<int>{(ref(f)((Ts&&)a),0)...};
}


Пойди докажи им что это не так.
Re[16]: Оставаться в С++ или уходить?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 24.04.22 11:55
Оценка: +1
Здравствуйте, Артём, Вы писали:

N>>Именно поэтому на Java нет ни плееров, ни видеосерверов?

Аё>Есть.

Но никто о них не знает и назвать их не может.

N>>Именно поэтому что Nvidia, что Интел, что АМД начинают новые проекты на С++?

Аё>В облаках C++ нет.

Как раз все серверные продукты перечисленных контор написаны на плюсах, их прямо сейчас начинают писать на плюсах и дают вдобавок к плюсовому питоновский API. Я тебя могу ссылками с головой закидать, потому как участник партнёрских программ той же Nvidia.

N>>А как ещё изучить тот же ffmpeg?

Аё>Чтением документации?

Нет, ни документация, ни примеры не дают тех знаний, которые сами авторы вложили в свои же прикладные продукты.

N>> разбирать исходники готового ПО — это лучший способ изучения технологии.

Аё>Разбирать исходники клиентского кода вместо чтения документации- извращение.

Если это ПО от авторов библиотеки, то оно лучше документации показывает каноническое и оптимальное использование. Я выше писал, что их примеры работают медленнее, чем их же ffplay и ffmpeg. Теперь я знаю почему.
Тут выбора нет, по большому счёту: либо ты пишешь средний продукт и как всё, либо копатель код и выдаёшь скорость выше.
Re[6]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 24.04.22 12:33
Оценка: 4 (1)
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[17]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 24.04.22 23:56
Оценка:
Здравствуйте, 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
Автор: SchweinDeBurg
Дата: 26.04.05
Отредактировано 25.04.2022 0:01 Артём . Предыдущая версия . Еще …
Отредактировано 25.04.2022 0:00 Артём . Предыдущая версия .
Re[7]: Оставаться в С++ или уходить?
От: johny5 Новая Зеландия
Дата: 25.04.22 01:44
Оценка:
Здравствуйте, CreatorCray, Вы писали:

J>>Пойди докажи им что это не так.

CC>Кому, им?
"укушенным Александреску"

Правда тут думаю уже чуть больше чем просто желание напрудить сложных шаблонов. В конце концов Boost мы используем все, и всё было не так и плохо..
Плохо в том, что в сам стандарт тянут со всех языков без разбору — куча висящих, полуимплеметированных фич, которые ещё и плохо играют друг с другом. Пропало единое видение языка.
Re[18]: Оставаться в С++ или уходить?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.04.22 03:22
Оценка: +1
Здравствуйте, Артём, Вы писали:

Аё>Ну я не помню уже за давностью- ставил в 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. Это как с любым языком: мало прочитать документацию, надо знать ещё как пользоваться, чтобы оно работало правильно и быстро.
Re[19]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 25.04.22 05:52
Оценка: :))
Здравствуйте, Nuzhny, Вы писали:

Хорошо, убедил. Нужно нативно, питон большие накладные расходы. Но почему C++ ужасный использовать? Тот же ffmpeg на C без плюсов. Go так вообще замечательный нативный язык.
Re[20]: Оставаться в С++ или уходить?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.04.22 07:28
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Но почему C++ ужасный использовать? Тот же ffmpeg на C без плюсов. Go так вообще замечательный нативный язык.


В C мне не хватает абстракций. Скучно на нём.
Go лень учить, лучше Rust, всё интересней.
Re[8]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 25.04.22 07:40
Оценка:
Здравствуйте, johny5, Вы писали:

J>>>Пойди докажи им что это не так.

CC>>Кому, им?
J>"укушенным Александреску"
А, этим ничего доказывать не надо по причине бесполезности сего занятия. Сами должны переболеть, а до тех пор не пускать к Core product.

J>В конце концов Boost мы используем все

Нет, не все. Кроме того буст местами просто ужасен.

J>Плохо в том, что в сам стандарт тянут со всех языков без разбору — куча висящих, полуимплеметированных фич, которые ещё и плохо играют друг с другом. Пропало единое видение языка.

Это есть, да.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[20]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 25.04.22 07:42
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Но почему C++ ужасный использовать?

Не надо ужасный. Используй нормальный С++

Аё> Тот же ffmpeg на C без плюсов.

С без плюсов ужасен без шансов на исправление.

Аё> Go так вообще замечательный нативный язык.

Нет.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 25.04.22 07:47
Оценка:
Здравствуйте, johny5, Вы писали:

J>Современный С++ это уже вот такая красота (я даже не вижу где тут название функции!)

J>
J>template<class T> inline constexpr bool is_nothrow_incrable_v = noexcept(++std::declval<T&>());
J>template<class T, class...Ts>
J>constexpr const auto func(T&& val, Ts&&...a) const noexcept(is_nothrow_incrable_v<T>)
J>requires requires(T (x)) { (void)x; };
J>{
J> ... initializer_list<int>{(ref(f)((Ts&&)a),0)...};
J>}
J>


Если это куски реального кода, то можно задать пару уточняющих вопросов? (опыта с C++20 пока нет, какие-то вещи кажутся далеко не очевидными)

1. Зачем у func в качестве возвращаемого значения указывается const auto, а не просто auto?

2. Зачем при указании концепта в требованиях к func используется синтаксис T (x)? Тут же вроде не макро, какой смысл x заключать в скобки?

3. В чем смысл концепта, который проверяет э... возможность привести x к void (обычно конструкция вида (void)x применяется в коде разве что для того, чтобы компилятор не выдавал предупреждений о неиспользованных аргументах/локальных переменных)?

Ну и еще смущает вот это (и не только странным названием):
template<class T> inline constexpr bool is_nothrow_incrable_v = noexcept(++std::declval<T&>());

Дело в том, что здесь возникнет ошибка компиляции, если у T нет префиксного ++. Может так и задумывалось, но вроде как обычно стараются в таких случаях добавить еще и проверку того, что для T вообще есть префиксный ++, а уже потом определяют, бросающий ли это ++ или нет.
Re[20]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 25.04.22 07:49
Оценка: +1 -1
Здравствуйте, Артём, Вы писали:

Аё>Но почему C++ ужасный использовать?


Потому, что когда есть знание C++ и реальный опыт его нормального использования, то на C++ получается быстрее, проще, лаконичнее и надежнее.

Аё>Тот же ffmpeg на C без плюсов.


К сожалению.
Re[21]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 25.04.22 08:07
Оценка:
Здравствуйте, Nuzhny, Вы писали:

Аё>>Но почему C++ ужасный использовать? Тот же ffmpeg на C без плюсов. Go так вообще замечательный нативный язык.


N>В C мне не хватает абстракций. Скучно на нём.

VTable в C руками делается.

N>Go лень учить, лучше Rust, всё интересней.


Go прикольный. Не нужно его абстрактно учить, нужно использовать для небольших задач. Такое ощущение, когда простая задача остается простой и понятной реализацией, в отличие от C++ где оно обрастет укусами александреску или жавы, где оно обрастет 3 наслоениями getter-setter, непрозрачными аннотациями programagic и ничего не понятно, когда оно магически не работает.
Отредактировано 25.04.2022 8:08 Артём . Предыдущая версия .
Re[2]: Оставаться в С++ или уходить?
От: a.v.v Россия  
Дата: 25.04.22 22:20
Оценка: +1
Здравствуйте, Homunculus, Вы писали:

H>Здравствуйте, checkthestack, Вы писали:


H>Миллионы на неинтересных задачах — ну… я б не смог.


это когда закрыты базовые потребности то да, а вот когда ты нищий тут некоторые другие приоритеты вылезают
но конечно есть сумашедшие которые "буду делать только то что нравится" и получающие копейки
Re[3]: Оставаться в С++ или уходить?
От: Homunculus Россия  
Дата: 26.04.22 04:43
Оценка:
Здравствуйте, a.v.v, Вы писали:

AVV>это когда закрыты базовые потребности то да, а вот когда ты нищий тут некоторые другие приоритеты вылезают


Не знал, что возможна ситуация когда базовые потребности не закрыты, но есть возможность выйти в интернет и потрепаться на форуме
Re[22]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 26.04.22 04:47
Оценка: -1 :)
Здравствуйте, Артём, Вы писали:

N>>В C мне не хватает абстракций. Скучно на нём.

Аё>VTable в C руками делается.
Дадада, и закат солнца вручную тоже.
Сишный boilerplating задалбывает своей рутинностью и унынием.

Аё>Go прикольный.

Это скорее недостаток.

Аё>в отличие от C++ где оно обрастет укусами александреску

Это у тех, кто не умеет в С++

Аё> или жавы, где оно обрастет 3 наслоениями getter-setter, непрозрачными аннотациями programagic

Аналогично. Даже на жабе можно писать просто, если выбросить из головы то, что называют "best practices"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.