Будет ли Python подходящим выбором для видео библиотеки для домашнего использования программного обеспечения
Я подумываю о создании программного обеспечения для видеобиблиотеки, которое отслеживало бы все мои видео и отслеживало видео, которые я еще не смотрел, и такую статистику. Статистика будет индивидуальной для каждого пользователя, использующего программное обеспечение.
Мой вопрос в том, подходит ли python для создания этого программного обеспечения или мне нужно что-то вроде C++.
5 ответов
Если вы хотите, чтобы ваш код был REAL FAST, используйте C++ (или параллельный фортран).
Однако в вашем приложении 99% времени выполнения не будет в ВАШЕМ коде, оно будет в библиотеках GUI, вызовах ОС, ожидании взаимодействия с пользователем, вызове библиотек (написанных на C) для открытия видеофайлов и создания миниатюр и тому подобное.
Таким образом, использование C++ сделает ваш код в 100 раз быстрее, а ваше приложение, в результате, будет на 1% быстрее, что совершенно бесполезно. И если вы напишите это на C++, вам потребуются месяцы, а с помощью Python вы закончите намного быстрее и получите гораздо больше удовольствия.
Использование C++ может даже сделать его намного медленнее, потому что в Python вы можете очень легко создавать более масштабируемые алгоритмы, используя сверхмощные примитивы, такие как хеши, наборы, генераторы и т. Д., Попробуйте несколько алгоритмов за 5 минут, чтобы увидеть, какой из них лучший, импортируйте библиотека, которая уже выполняет 90% работы и т. д.
Напишите это на Python.
Python идеально подходит для таких задач - действительно, самый популярный видеосайт YouTube, по сути, запрограммирован на Python (конечно, используются компоненты более низкого уровня, вызываемые из Python для таких задач, как веб-обслуживание, реляционная база данных, транскодирование видео). Есть много таких повторно используемых компонентов с открытым исходным кодом для всех этих видов задач, но логический поток вашего приложения и вся логика уровня приложения вполне может быть в Python).
Буквально вчера вечером, на собрании местной группы интересов Python в Маунтин-Вью, у нас появились новые участники, которые просто переехали в Силиконовую долину именно для того, чтобы устроиться на работу на основе Python в видеоиндустрии, и они говорили, что передача видео профессионального уровня в отрасли также все больше и больше склоняясь к Python- такие приверженцы, как Pixar и ILM, использовали Python вечно, но в последние год-два это был поток внедрения Python в отрасли.
Да. Python намного проще в использовании, чем C++ для чего-то подобного. Вы можете использовать его в качестве внешнего интерфейса для БД, такой как sqlite3
Конечно, вы можете использовать практически любой язык программирования практически для любой задачи. Но, заметив это, также очевидно, что разные языки также по-разному хорошо адаптированы для разных задач.
C/C++ - это языки, которые очень "дружественны к оборудованию". По сути, языки - это всего лишь один уровень абстракции над ассемблером, в C используются указатели и т. Д. C++ почти как (полу) переносимый объектно-ориентированный ассемблер, если кто-то хочет быть забавным.:) Это делает C/C++ быстрым и хорошим в общении с оборудованием.
Но те же функции становятся ошибками в других случаях. Указатели позволяют перемещаться по всей памяти, и если вы не будете осторожны, вы потеряете память повсюду. Поэтому я бы сказал (и теперь люди на C разозлятся), что C/C++ фактически не подходит для того, что вы хотите делать.
Вам нужен более высокий язык, который автоматически и незаметно делает больше, например, управление памятью. Есть из чего выбирать, но, без сомнения, Python как нельзя лучше подходит для этого. Python в последние пару лет стал новым классным языком для написания подобных программ, и многие мультимедийные программы, такие как Freevo и Moovida, уже упоминались на Python.
Может быть, вы должны взглянуть на этот проект: Moovida
Это полный медиацентр с открытым исходным кодом, написанный на python, который легко расширить. Я не знаю, будет ли это делать именно то, что вы хотите из коробки, но вы, вероятно, можете легко добавить функции, которые вы хотите.