Есть ли подходящая замена для C ++, когда я хотел бы написать приложения для обработки видео? - PullRequest
9 голосов
/ 14 января 2011

Я хочу написать программное обеспечение для редактирования видео, и «логический» вывод состоит в том, что я должен использовать язык C ++ ... Но мне он не нравится (извините, поклонники c ++)

Iхотел бы написать что-нибудь классное, например, Lisp, Haskell или Erlang ... Но я не знаю, позволила ли реализация этих языков с открытым исходным кодом (у меня нет денег на покупку лицензий) сделать конкурентное программное обеспечение (в области производительности)

Как вы думаете?что порекомендуете?

Ответы [ 6 ]

9 голосов
/ 14 января 2011

Я не могу разговаривать с Lisp, но и Erlang, и Haskell способны обеспечить производительность, необходимую для обработки видео.Достижение этой производительности, вероятно, будет более трудным, чем с C ++, потому что в домене меньше существующих библиотек, поэтому вам придется реализовать больше самостоятельно.Это означает, что вы должны быть в состоянии самостоятельно написать высокопроизводительный код.В Haskell я ожидаю, что это потребует значительных затрат времени (минимум 6 месяцев), чтобы овладеть навыками.

Какой язык вы выберете, во многом зависит от целей проекта.Если это хобби-проект, или вы хотите узнать много нового об алгоритмах обработки (и, следовательно, не возражаете против необходимости делать многоуровневое кодирование самостоятельно), нет ничего плохого в использовании языка, не входящего в основной поток.У Haskell есть привязки ко многим вещам, которые вы, вероятно, захотите использовать в конечном итоге, например оболочка для GLSL .

Как кто-то, работающий с обработкой звука (включая реальное время), я могускажу, что производительность Хаскелла не была для меня проблемой.Для недавнего проекта я написал некоторые функции на C, но это было необходимо для реализации пользовательской схемы векторизации.Выполнение работы на высоком уровне в Haskell и обращение к C, когда это необходимо, является вполне обоснованным подходом, хотя, к счастью, сейчас он менее необходим, чем в прошлом.

Конечно, это предполагает несколько вещей о природе вашегопроект.Если вы хотите что-то, что вы можете использовать сразу, Haskell, Lisp и Erlang, вероятно, не являются языками для вас, потому что ресурсов меньше.Рассматривали ли вы Обработка ?Это Java, я не знаю, считаете ли вы это лучше, чем C ++ или хуже.

У меня были мотивы, помимо производительности, для работы в Haskell (и моя производительность некоторое время пользовалась большим успехом), без этих других целей.Я бы не выстоял.Если вы хотите написать что-то, чтобы использовать это, придерживайтесь того, что будет наиболее продуктивным.Если у вас есть другие мотивы, скажите нам, чем они являются, и, скорее всего, люди сделают полезные предложения.

4 голосов
/ 14 января 2011

Для чего стоит, Wings3D написано на Erlang.

Вы всегда можете попробовать D , если вам нужно что-то похожее на C ++, но не на C ++.Кроме того, D может использовать немного любви.

3 голосов
/ 14 января 2011

Для Haskell и Erlang реализация с открытым исходным кодом является стандартной, наиболее эффективной из доступных реализаций. Нет причин, по которым Haskell не должен быть достаточно производительным для ваших нужд - для видео, я предполагаю, вы будете использовать матрицы и тому подобное. Есть качественные крепления, доступные для BLAS & co для Haskell. Я не знаю о существующей работе по редактированию видео, но Альберто Руис (автор HMatrix) проделал работу с Haskell и компьютерным зрением: http://dis.um.es/profesores/alberto/research.html

В Haskell также много работы над звуковыми библиотеками и их обработкой.

1 голос
/ 17 января 2011

Уже есть сервер потокового видео, написанный на Erlang http://erlyvideo.org/. Вы можете найти вдохновение https://github.com/erlyvideo/erlyvideo.

1 голос
/ 14 января 2011

Это зависит хотя бы от того, какова ваша цель в проекте.Если это хобби-проект, и вы хотите выучить другой язык, то вы должны выбрать этот язык.В этом случае, однако, я предполагаю, что вы знакомы с обработкой видео.С другой стороны, если вы хотите узнать об обработке видео, я бы порекомендовал использовать язык, с которым вы уже знакомы.

Теперь, если это профессиональный проект приличного размера (программное обеспечение для обработки видео может бытьогромное) вы, вероятно, должны рассмотреть возможность использования разных языков для разных вещей.Типы систем, с которыми я работаю, обычно требуют написания некоторого кода на C (по соображениям эффективности), но мы всегда стараемся сохранить его на минимальном уровне и используем язык более высокого уровня для большей части поведения системы (мы используем erlang, ноотносится к любому другому языку более высокого уровня).

IMO, написание больших систем на C или C ++ - почти самоубийство.Есть проекты, которые добиваются успеха, но я считаю, что гораздо сложнее, чем дополнить часть C языками более высокого уровня.

1 голос
/ 14 января 2011

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

Если этот проект предназначен для развлечения / изучения нового языка, то во что бы то ни стало, отправляйтесь в путь с меньшими затратами. Но если это что-то, что вам нужно отправить за разумное количество времени, избегать лучших инструментов для работы, потому что они вам не нравятся, - неправильная стратегия.

...