Задать вопрос

Qt. Стоит ли с С++ переходить на Python?

Где-то вычитал, что скорость разработки на Python выше в 1,5-2 раза, чем на С++ ( с использованием фреймворка Qt). Хочется поднять свою эффективность и, заодно, выучить Python. Кто-нибудь проходил этот путь? Какие плюсы-минусы?
  • Вопрос задан
  • 6981 просмотр
Подписаться 6 Оценить 1 комментарий
Решения вопроса 1
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
Забавные эти вопросы. Стоит ли изучать $programming_language1, чем лучше $programming_languageA $programming_languageB, etc. Просто забавны. Не то чтобы они не нужны - каждому делу свой инструмент. Сложно забивать гвозди отвёрткой, а вилкой вырезать по дереву (хотя и можно).

Так вот, внесу свою лепту - конечно стоит! И даже не стоит, а требуется. Пайтон уверенно просачивается в жизнь и часто требуется специалист C++ со знанием (знакомством) пайтона. Немного расширяет кругозор - всё же динамическое программирование с небольшой функциональщиной.

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

Я проходил этот путь. Было время, когда достаточно хорошо я знал только Си++ (даже не Си). И в этом были свои проблемы. Теперь я полиглот. Из плюсов - очень быстро учиться что-то новое. Буквально сразу цепляю различия и могу скопипастить целый проект - этот навык сложно переоценить. Уже сотни раз писали, что пайтон хорош для прототипирования - повторюсь: вбиваешь в терминал python и печатаешь. В лаборатории сразу появляются формулы, графики, отчёты. У стартапа сразу появляется UI, логика, прототип. Но... Есть огромные минусы: в какой-то момент без хорошей документации очень тяжело идти дальше - виной очень крутая динамическая типизация. try: catch'и: и тут и там - снова она, ибо никогда не знаешь что тебе подадут в аргументах. Теперь священные воины пробелы vs табы (аля K&R vs BSD) могут обрушить весь проект вместе со сроками.

Ну и да. pyqt ужасен. Лучше использовать что-нибудь другое (хотя ничего другого особо и нет). Гейзенбаги (те, которые то появляются, то исчезают) - тысячи их. И та самая интерактивность сводиться на нет, дай только проекту разраститься до 100 строк - а это очень быстро произойдёт, никакой pythonic-way не поможет. Так померло много проектов, не успев начаться.

Наконец, если хотим кросс-платформы, с горечью вспоминаются ночи (!) проведённые за попытками скомпилировать какую-то полузаброшенную boost-подобную либу-зависимость какого-то гика на гите, который единственный подумал скинуть пару примеров использования всеми забытого протокола.

Зато все слухи про низкую производительность python'а - чушь и клевета. Эта @#$% очень быстра, по крайне менее, если писать подобающе, а не проходиться по словарям в миллионы элементов в сотый раз (если такие словари, пора уже БД подключать, наверное).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
Python подойдет идеально для быстрого прототипирования приложений, далее критические участки можно переписывать на C++.
Ответ написан
Комментировать
@vehsakul
Увеличение скорости разработки может произойти банально за счет того, что не нужно ничего компилировать. Количество набираемого кода тоже будет меньше. Легче экспериментировать с чем-либо. Производительность важна далеко не везде и, там где она не важна, Python может существенно упростить жизнь.
Ответ написан
Комментировать
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Всегда хорошо узнавать что-то новое. +python неплохо работает в связке с c++ (boost::python)
Ответ написан
Комментировать
В качестве второго языка - хороший вариант. Тогда вам будут доступны вакансии типа: company.yandex.ru/job/vacancies/dev_linguistic_cpp.xml, company.yandex.ru/job/vacancies/release_engin.xml и т. д.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы