Что эффективнее для небольшого приложения: C++ или Python?

Здравствуйте.

После прочтения этой статьи, в которой сравнивается производительность распространённых языков программирования и изучения ответов пользователей Тостера на вопросы из разряда «Какой язык выбрать?» (один, два, три, четыре, пять) крепко призадумался на счёт того, не прогадал ли с выбором Python для изучения и последующего использования в написании небольших «бытовых» кроссплатформенных приложений вроде планировщика задач или словаря.

С одной стороны, лаконичность Python позволяет быстрее освоить язык и сократить время разработки самого приложения. Да и читать код приятно.

С другой же, C++ является довольно мощным языком, позволяющим писать быстрые и экономные с точки зрения потребления ресурсов приложения, размер которых будет меньше, чем у «скомпилированного» оппонента. Однако время, необходимое для его изучения, удручает.

Поскольку влезать в уже существующие обсуждения со своими вопросами не совсем прилично, а прояснить ситуацию для меня может лишь мнение более опытных коллег, рискну обратиться к сообществу с вопросом:

Настолько ли значительна скорость работы C++ приложения, чтобы отказаться от простоты использования Python?

P. S. Без претензий на профессиональное использование в будущем, мне бы хотелось изучить с нуля язык и сопутствующие библиотеки, которые позволят создавать легковесные кроссплатформенные приложения с приятным настраиваемым интерфейсом. Судя по всему, вариантов здесь не так уж много: Python + PyQt (QML), C++ + Qt (QML) или Java + Zetes.

Python не быстр, а C++ непрост для изучения и использования. Java же, помимо требовательности к ресурсам, плохо ассоциируется с использованием на домашнем ПК, почему его и не рассматриваю.

Буду благодарен за ваши мнения, комментарии и советы.

Спасибо.
  • Вопрос задан
  • 5622 просмотра
Решения вопроса 2
@lega
Поддержу Сергей Протько, скорости питона хватает в 98% случаев, остальные 2% добиваются на Си, Го и пр. Таким образом сохраняется скорость разработки и производительность.
Ответ написан
Tark
@Tark
Pyramid'альный мир
Если вы хотите использовать SQLite, то выборка данных будет занимать намного больше времени, чем отрисовка данных на экране. Питон в 35 раз медленнее С++ в синтетических тестах, но разница между программами-скриптами при использовании файловой СУБД будет сравнима с погрешностью измерений. Берите Python, не сомневайтесь!
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Обычно, когда Python программист понимает, что ему не хватает скорости языка, он переходит на язык Go и снова начинает радоваться жизни.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
За каждым языком - своя философия.
Изучайте не инструмент - изучайте образ мыслей его создателя.
Когда поймете общую картину, конкретика станет усваиваться рефлекторно.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Добавлю к ответу Sergey Lerg что узкие места приложения всегда можно переписать на Си или тех-же плюсах. Так же не забывайте что есть Cython и подобные штуки. А еще прикинте, будет ли язык программирования узким местом в вашем случае? Если реально загоняться по производительности то тогда уж лучше реально написать большую часть логики на python а критичные к производительности места на С. Пример: albertz.github.io/music-player
Ответ написан
@DancingOnWater
Насчет производительности в реальных задачах:
benchmarksgame.alioth.debian.org

Как видим питон тут может отставать в 100 раз. Если бутылочное горлышко нивилирует эту разницу, то можете писать на питоне. Если вам требуются требуется мегарсчеты или соблюдать временные диаграммы, то Python не лучшее решение.

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

А если переходить к совсем реальным задачам, то вопрос скорости разработки в первую очередь упирается в скорость отладки. И если раньше соотношение 20% времни кодим 80% процентов отлаживаем, то сейчас оно превратилось в 5-10% кодим, 95-90% тестируем. И вот тут статические анализаторы С\С++ или возможности Rust дадут фору подавляющему числу языков.

Так что мой совет - питон хорош, но игнорить Си - плохое решение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы