Почему крупные библиотеки для обработки мультимедиа используют чистый си?
Заметил, что крупные мультимедийные проекты, такие как Gstreamer, vulkan, opengl, ffmpeg, openal и другие используют чистый си как основной яп. Происходит ли это из-за высокой портируемости сишки или по другим причинам?
Просто многие библиотеки зависимости используют си, кроме того это очень близко к железу, что для медиа очень важно и помогает использовать расширенные инструкции процессора напрямую.
качественно написанная прога на Си быстрее.
Чем больше прокладок абстракции от железа в высокоуровневом языке тем оно медленнее в плане числодробительства.
pfg21, ключевое слово качественно. Затраты времени на сравнимую программу на с или c# или Java различаются в 2-7 раз . Рэйты программистов нужно упоминать?
Владимир Коротенко, сравнимую по скорости числодробления ??
вы наверное подразумеваете получение готового продукта ?? тут да, абсолютно согласен. чем больше прокладок абстракции от железных вычислений - тем быстрее пишетца код.
но к скорости числодробления быстронаписанное имеет малое отношение. обычно все упирается в развитость оптимизации компилятора.
та же джава сколь трогал весьма не поворотлива в плане прикладной числодробилки. эффективнее числодробилку написать на си и прибиндить в прогу на джаве.
си шарп не знаю, но думаю из той же оперы.
если на плюсах писать быструю числодробилку, то получится тот же си только с излишними замудрениями.
pfg21, Сравнимую а то и превосходящую по числодроблению, но время на нее потратится меньше в несколько раз. Шарпы и джаву писали очень хорошие спецы. И обходили углы которые встречаются в кодинге.
Владимир Коротенко, ой вей да ладно !!
давай для исключения голословности, какое-либо подтверждение что хорошо написанная джава-прога по числодроблению обойдет соответствующую хорошо написанную си-прогу.
с огромным интересом прочитаю !!
pfg21, Ну вот вам пример делает в 3 раза https://habr.com/ru/post/66562/
Декламэйры тест возможно и не точен. Но в общем случае, разработчик средней руки на шарпах или джаве напишет код быстрее и более быстрый.
Владимир Коротенко, с качественно оптимизированным кодом на си пожалуйста месье :)
там же в табличке видно насколь код не оптимизирован. включение О2 для С++ убыстряет систему в разы.
mayton2019, потому что в оптимизациях на С++ придется опуститься туда же, с уровня абстракций на уровень байтов и прямого управления памятью. И окажется, что 80% кода все равно на С, только немного иначе написана.
С++ это больше про шаблоны и мета-программирование. Объекты - где-то на задворках. Просто я смотрю со стороны практики объектов в Java Enterprise и вижу что в C++ больший упор делается на другое.
mayton2019, да, но - допрасходы-то на шаблончики есть, в статье хорошо описано, а вообще идея что чистый С "знают все" все больше не лишена смысла, я вот тоже от C++ вообще далек, программирование - в пределах аналитики и прототипов, но экплоиты / CVE понимаю....
Dimonchik, один финский парень, который написал самую известную операционку в оперсорцсе, сказал что С++ ему вот никак не подходит. Не может он на нем писать. По техническим причинам. Возвращаясь к теме топика я думаю что это тоже отчасти ответ на главный вопрос.
Не везде нужен С++. Я для себя вижу только вопрос интеграции. Если драйвера и библиотеки для работы с low-level поставляются как хедеры на С и бинарники - то и использовать их желательно в контексте С. Не превнося в этот контекст дополниительную сложность такую как объекты или не дай бог шаблоны. Решать технический долг так проще. Простота - это великая вещь. Так еще сказал один конструктор оружия который АК-47 создавал.