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

 Где-то вычитал, что скорость разработки на Python выше в 1,5-2 раза, чем на С++ ( с использованием фреймворка Qt). Хочется поднять свою эффективность и, заодно, выучить Python. Кто-нибудь проходил этот путь? Какие плюсы-минусы? 

 Забавные эти вопросы. Стоит ли изучать $programming_language1, чем лучше $programming\_languageA $programming_languageB, etc. Просто забавны. Не то чтобы они не нужны - каждому делу свой инструмент. Сложно забивать гвозди отвёрткой, а вилкой вырезать по дереву (хотя и можно).  
  

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

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

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

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

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

Зато все слухи про низкую производительность python'а - чушь и клевета. Эта @#$% очень быстра, по крайне менее, если писать подобающе, а не проходиться по словарям в миллионы элементов в сотый раз (если такие словари, пора уже БД подключать, наверное). 

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

 Увеличение скорости разработки может произойти банально за счет того, что не нужно ничего компилировать. Количество набираемого кода тоже будет меньше. Легче экспериментировать с чем-либо. Производительность важна далеко не везде и, там где она не важна, Python может существенно упростить жизнь. 

 Всегда хорошо узнавать что-то новое. +python неплохо работает в связке с c++ (boost::python) 

 В качестве второго языка - хороший вариант. Тогда вам будут доступны вакансии типа: [company.yandex.ru/job/vacancies/dev\_linguistic\_cpp.xml,](http://company.yandex.ru/job/vacancies/dev_linguistic_cpp.xml,) [company.yandex.ru/job/vacancies/release\_engin.xml](http://company.yandex.ru/job/vacancies/release_engin.xml) и т. д.