C++ — Чем обусловлена популярность Python’а


Содержание

Развитие языка и работа

16.05.2020, 16:48

Основы языка Python. Работа со списками
Дан одномерный массив числовых значений, насчитывающий N элементов. Вставить.

TChromium, работа через прокси,изменение языка
Очень мало инфы по работе с этим компонентом. 1)Подскажите пожалуйста как работать через.

Стандарт языка, работа со строками. Малая русская я
В общем помогите разобраться с локалями. Не нужно мне про toupper и другие костыли. Только.

ЛАБОРАТОРНАЯ РАБОТА ТИПЫ ДАННЫХ ЯЗЫКА ТУРБО ПАСКАЛЬ
Вариант 4 1. Напечатать текст, образованный литерами с порядковыми номерами 65, 71 и 69. 2. type.

Использование Awesomium — Работа с WebSessionProvider: не получается их связать, для исправления языка
Доброе время суток. Возник вопрос, использую Awesomium и на одном сайте ругается что не верный.

16.05.2020, 17:09 2

На нем можно написать абсолютно все: игры, сайты, desktop приложения, консольные приложения, мобильные приложения и т д и т п
Чаще всего python используют как серверный язык, на нем пишут сайты (Часть ютуба на нем написана и вообще в google любят python и используют его в разных проектах. Ну раз уж заговорил о google, то вообще первая версия его была написана на python https://habrahabr.ru/post/282678/), парсеры различные и т д и т д (перечислять долго).

Смотря какой город смотрел, тут вся проблема, что не во всех города России есть те кто на нем кодит, в основном много вакансий в Москве, Питере и т д
Вся проблема в том, что у нас тут информационное болото, где используют по привычке древние технологии.

16.05.2020, 17:47 [ТС] 3 16.05.2020, 17:54 4
16.05.2020, 17:54
16.05.2020, 19:04 5
16.05.2020, 20:58 [ТС] 6
16.05.2020, 21:05 7
16.05.2020, 21:11 [ТС] 8
16.05.2020, 21:34 9
16.05.2020, 22:12 10
16.05.2020, 22:36 11

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

Почему Python развивается так быстро: исследование Stack Overflow

Введение

Почему Python так быстро развивается? Этот язык программирования используется в самых разных целях, от веб-разработки до работы с данными и DevOps. Также стоит отметить, что в последнее время становятся все более распространенными приложения, разработанные на Python. По словам Робинсона, сам он использует язык программирования R, поэтому его очень интересует, насколько рост популярности Python затронет область, в которой он работает. Он посмотрел на базу Stack Overflow со своей точки зрения, чтобы понять, в каких областях Python будет развиваться с наибольшей скоростью, и в каких организациях он используется наиболее часто.

Этот анализ позволяет сделать два вывода. Во-первых, наиболее часто Python применяют в сферах анализа данных, машинного обучения и научных исследованиях. Среди тегов, связанных с Python, быстрее всего растет популярность pandas . Что касается того, в каких индустриях используется Python, то статистика Stack Overflow показывает, что это такие области, как электроника, производство, разработка программ, правительство и особенно популярен язык в учебных заведениях. Однако рост Python по отраслям происходит довольно равномерно. В совокупности это говорит о том, что анализ данных и машинное обучение получают распространение в различных типах компаний, и Python становится общим и популярным решением для подобных задач.

Так же как и в этом посте, все эти типы анализа ограничиваются странами с высоким уровнем дохода по классификации Всемирного банка .

Что разрабатывают на Python?

Python — это универсальный язык, используемый для решения множества задач, таких, как веб-разработка и анализ данных. Как же можно проанализировать значительное развитие Python?

Во-первых, можно изучить рост трафика по тегам, представляющим пакеты Python в каждой области. Можно сравнить веб-фреймворки Django и Flask с пакетами данных NumPy , matplotlib и pandas (сравнить популярность тех или иных поисковых запросов можно с помощью Stack Overflow Trends).

Pandas, пожалуй, является библиотекой Python, которая быстрее всего набирает популярность: в 2011 году она едва была представлена, однако теперь составляет почти 1% запросов в Stack Overflow. Запросы по numpy и matplotlib также выросли в сравнении с предыдущим периодом. Трафик запросов по Django оставался довольно стабильным в течение прошедшего времени, в то время как Flask немного подрос. Все это говорит о том, что развитие Python больше связано с аналитикой данных, а не с веб-разработкой.

Однако это раскрывает только часть общей картины, поскольку так можно оценивать только широко используемые библиотеки Python, специфичные для него. Python также популярен среди системных администраторов и инженеров DevOps, которые могут использовать запросы Linux, Bush и Docker, совместно с Python. Точно так же многие задачи веб-разработки могут решаться с помощью Python, без использования Django или Flask, и такие разработчики будут, скорее, использовать JavaScript, HTML или CSS в качестве «поддерживающего» тега. Невозможно просто измерить рост таких тегов, как linux , bash , javascript , но, предположим, что они связаны с Python. Таким образом, можно измерить теги посещений, связанных с Python.

Для анализа были рассмотрены только летние месяцы (июнь-август 2020 года): это позволило снизить эффект влияния обучающихся студентов, сосредоточиться на актуальном трафике и помогло уменьшить проблемы сложения трафика длительного периода времени. Были рассмотрены только зарегистрированные пользователи, которые посещали Stack Overflow не менее 50 раз за указанный период. Посетители определялись как пользователи Python, если:

  • их самый посещаемый тег был Python;
  • Python составлял не менее 20% от общего количества посещений.

Какие же теги были популярны у людей вместе с Python?

С большим отрывом лидирует тег библиотеки pandas , который является наиболее популярным, что неудивительно, ведь выше уже отмечался рост его популярности. Вторым наиболее посещаемым тегом является JavaScript, который также представляет веб-разработчиков Python (как и Django несколькими позициями ниже). Это подтверждает теорию команды исследователей: нужно рассматривать эти теги совместно с Python, а не только рост тегов, непосредственно связанных с Python в целом.

Ниже в списке можно увидеть другие «группы» технологий. Можно оценить их связь, рассматривая, какие пары тегов имеют тенденцию к корреляции: то есть, могут ли пары пользователей Python непропорционально посетить оба тега. Отфильтровав для пар теги с высокой степенью корреляции Пирсона , можно отобразить эти отношения в сетевой диаграмме ( здесь можно найти больше информации).

Можно увидеть несколько крупных групп технологий, примерно описывающих категории проблем, которые часто решаются с помощью Python. В верхнем центре — группа для анализа данных и машинного обучения: в центре pandas, Numpy и matplotlib. Они тесно связаны с такими технологиями, как R, Keras и TensorFlow. В группе ниже описывается веб-разработка, с помощью таких тегов, как JavaScript, HTML, CSS, Django, Flask и JQuery. Два других кластера, которые можно заметить, для системного администрирования / DevOps — слева (в центре кластера Linux и Bash) и для информационных технологий — справа (Spark, Hadoop и Scala).

Рост по направлениям

Исследование показало, как связанный с Python трафик на Stack Overflow можно разделить на несколько тем. Это позволяет выяснить, какая из тем отвечает за наибольший рост посещений тегов, связанных с Python, на Stack Overflow.

Предположим, известна история посещений пользователя и видно, что Python — наиболее посещаемый тег. Как же можно догадаться, является ли пользователь веб-разработчиком, big data специалистом, системным администратором или кем-то еще? Можно было бы рассмотреть их второй наиболее посещаемый тег, затем третий, а также далее по списку наиболее посещаемых тегов, пока не появится информация, с помощью которой мы можно опознать представителя одной из вышеописанных групп.

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

  • Специалисты по работе с данными: Pandas, NumPy, Matplotlib.
  • Веб-разработчик: JavaScript, Django, HTML.
  • Системный администратор / DevOps: Linux, Bash, Windows.
  • Неопределенный: ни один из девяти тегов не набрал более 5% от общего числа трафика.

Это не очень сложно, но позволяет быстро оценить влияние каждой категории на рост развития Python. Исследователи также пробовали применить более строгий подход к скрытому распределению Дирихле и получили аналогичные результаты.

Какие категории разработчиков Python стали более распространенными с течением времени? Обратите внимание, что в исследовании классифицируются пользователи, а не визиты, поэтому отображается это как процент зарегистрированных пользователей Stack Overflow (независимо от того, были это визиты с тегом Python или нет).

Можно увидеть, что число посетителей с тегом Python, которые работают с веб-технологиями и системным администрированием, растет медленными или умеренными темпами последние три года по отношению ко всем посетителям Stack Overflow. Но доля разработчиков Python, связанных с технологиями анализа данных, растет стремительно. Это говорит о том, что популярность Python в области анализа данных и машинного обучения, вероятно, является главной движущей силой его быстрого развития.

Можно было бы также рассмотреть рост уровня отдельных тегов, вычислив трафик по тегам, которые посещали разработчики Python в 2020 и 2020 годах. Например, возможно, трафик JavaScript устойчив в целом, но он сокращается в процентах от общих посещений разработчиков Python. Как только будут получены темпы роста каждого тега, появится возможность разложить их по сетевой диаграмме, и получится понять, какие темы растут, а какие сокращаются.

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

Статистика по отраслям

Другой способ понять развитие языка программирования Python — это рассмотреть, с каких типов компаний осуществляются визиты. Этот запрос отличается от типов посетителя: как розничные компании, так и медиафирмы могут использовать специалистов по работе с данными и веб-разработчиков.

Исследователи сосредоточились на двух странах, в которых рост развития Python наиболее заметен: США и Великобритания. В этих странах можно разделить трафик по отраслям (как это было сделано при сравнении AWS и Azure ).

Отрасль с наибольшим трафиком Python (с наибольшим отрывом) — академическая, включающая в себя колледжи и университеты. Возможно, причина в том, что Python часто преподают в учебных заведениях?

Частично, но не полностью. Как можно увидеть в этом посте , трафик Python из университетов есть не только осенью и весной, но и летом тоже. Например, Python и Java наиболее посещаемые теги в университетах, и можно увидеть разницу в сезонных тенденциях.

Можно увидеть, как трафик по тегу Java падает более резко в течение каждого лета, потому что Java является распространенным предметом для обучения.

Напротив, Python составляет большую долю летнего трафика. Поэтом высокий уровень трафика по тегу Python из университетов частично объясняется академическими исследователями, которые приходят в течение всего года. Это дает больше доказательств того, что рост развития Python объясняется его возможностями в научных вычислениях и анализе данных.

Что касается других отраслей, посмотрите , насколько Python популярен и быстро развивается в правительственном секторе, но также он широко используется в электронике и обрабатывающей промышленности. Дэвид Робинсон меньше знаком с этими отраслями, и ему было интересно, почему Python там так популярен. Этот язык все еще не сильно распространен в розничных или страховых компаниях (некоторые исследования показывают, что Java остается там доминирующим).

Этот пост в основном исследует причины роста развития Python. Был ли процесс роста трафика по тегу Python более быстрым в других отраслях?

Рост развития Python за последний год был довольно равномерно распространен по отраслям, по крайней мере в США и Великобритании. Трафик Python по каждой отрасли увеличился примерно на 2-3 процентных пункта. (Следует обратить внимание, что это означает более высокий относительный рост в отраслях, в которых он еще не был распространен, таких, как страхование и розничная торговля).

Во многих других отраслях Java остается наиболее посещаемым тегом на основе данных 2020 года, но Python сокращает дистанцию. Например, в рамках финансов (одного из крупнейших участников трафика Stack Overflows, который не принадлежит вышеуказанным отраслям) Python стал четвертым наиболее посещаемым тегом в 2020 году и вторым самым посещаемым тегом по итогам 2020 года.

Заключение: стоит ли всем переходить на Python

Он так не думает. Во-первых, R тоже развивается очень быстро: R является вторым по скорости развития языком после Python. Во-вторых, причины, по которым автор исследования предпочитает R для анализа данных, не сильно связаны с его относительной популярностью. (Дэвид планирует написать пост в личном блоге о том, почему он Python предпочел R, что ему нравится в обоих языках, и почему он не чувствует себя вынужденным вернуться обратно).

В любом случае, анализ данных — это захватывающая и растущая область, где есть много возможностей для различных языков программирования. Дэвид Робинсон хочет побудить разработчиков в начале их карьеры к тому, чтобы они рассмотрели возможность развития навыков в области анализа данных. Эта область в числе одних из самых быстрорастущих компонентов экосистемы разработки программного обеспечения, и она актуальна во многих индустриях.

Для тех, кто работает на Python в веб-разработке, анализе данных или других отраслях, хочет сделать следующий шаг в своей карьере, вот некоторые компании , нанимающие разработчиков на Python прямо сейчас на Stack Overflow.

Если вы занимаетесь поиском Python разработчиков, рекомендуем воспользоваться AmazingHiring прямо сейчас .

Через четыре года Python заменит C и Java

Язык Python, который сейчас находится на третьем месте в рейтинге TIOBE, демонстрирует быстрый рост индекса. Составители рейтинга полагают, что через три-четыре года он возглавит рейтинг, заменив C и Java. Основной причиной роста является простота использования языка для новичков.

Python заменит C и Java

Через три-четыре года Python заменит C и Java, став самым популярным языком программирования. К такому выводу пришли составители индекса TIOBE, который оценивает популярность различных языков. Индекс рассчитывается в ходе анализа результатов поисковых запросов, которые содержат название языка, на таких порталах как Google, Blogger, Wikipedia, YouTube, Baidu, Yahoo!, Bing, Amazon и т. д.

В настоящий момент Python занимает третье место в рейтинге TIOBE с показателем 8,5%. Аналитики отмечают, что это самый высокий балл Python за все время его присутствия в рейтинге. Результат показал годовой рост на 2,77%. Сейчас Python уступает только Java и C, показатели которых равны 15% и 13,3% соответственно.

В первую десятку рейтинга также входят C++, Visual Basic .NET, C#, JavaScript, PHP, SQL и Assembly.

Напомним, Python был создан нидерландским разработчиком Гвидо ван Россум (Guido van Rossum) в 1989 г. Ван Россум официально занимает в проекте пост «великодушного пожизненного диктатора» (BDFL). Python сейчас является одним из самых широко используемых в мире языков программирования, идеальным для новичков и в тоже время нашедшим применение в масштабных проектах, в том числе YouTube, Instagram и Dropbox. Сам Гвидо как раз и работает в Dropbox, после того как в 2012 г. ушел из Google.

Другие признаки роста

Еще одним показателем популярности Python является то, что в маркетплейсе для редактора исходного кода Visual Studio Code, разработанного Microsoft, приложение Python для редактора является самым популярным — сейчас количество его установок превышает 9 млн, хотя еще в апреле их было 8 млн.

В настоящий момент в популярной системе вопросов и ответов о программировании Stack Overflow задается больше вопросов о Python, чем о Java, который лидировал до этого. В 2020 г. Stack Overflow поставил Python на седьмое место среди самых популярных языков программирования, написания скриптов и разметки, причем в этом списке Python опередил языки C#, Ruby и PHP.

Исследование, проведенное среди 12 млн ИТ-специалистов компанией Skillsoft, показало, что общее время тренировки Python разработчиками выросло в 2020 г. на 20% по сравнению с предыдущим годом и составила 200 тыс. часов. Профильный ресурс CodingDojo поставил владение Python на второе место в списке самых востребованных работодателями навыков разработчика.

Причины роста

Основной причиной роста популярности Python составители TIOBE считают расцвет, который переживает в настоящий момент разработка ПО. Данная сфера привлекает большое количество новичков, для которых Java — это слишком подробный язык.

«Чтобы полностью понять и запустить простую программу, такую как Hello world на Java, вам необходимо знать классы, статические методы и пакеты. В C это немного проще, но тогда вы столкнетесь с явным управлением памятью. В Python это всего лишь одна строка», — поясняют аналитики.

Важным фактором роста популярности Python стало то, что компании типа Netflix используют этот язык везде, где только возможно — для создания алгоритмов рекомендаций, управление сетями распространения контента и автоматизации функций безопасности. Сам по себе Python становится более гибким и полезным во многом благодаря популярным библиотекам, таким как TensorFlow и Numpy.

Стоит ли продолжать начинания в изучении Python как основного? [закрыт]

Мне симпатизирует синтаксис, но язык кажется каким-то больше вспомогательным сам по себе. Да, есть фреймворки, но тот же Джанго относительно не столь популярен. Но на данный момент это единственный язык, который я знаю на начальном уровне, и стоит ли продолжать?

Не хочу ситуацию, чтоб я остался на улице, а PHP/C++/Java-элита бы пожинала плоды.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками insolor, Kromster says support Monica, Viktor Tomilov, default locale, andreymal 8 фев ’18 в 10:26 .

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

4 ответа 4

1. Мнение

  1. Python — не «вспомогательный» язык,
  2. это популярный язык программирования,
  3. продолжать изучение стоит,
  4. на улице при соответствующем уровне знаний не останетесь.

2. Аргументация

2.1. Рейтинги популярности языков программирования

PYPL — второе место на февраль 2020;

TIOBE — четвёртое место на январь 2020;

Trendy Skills — пятое место на февраль 2020. Правда, на 4-м месте в этом рейтинге HTML, не являющийся языком программирования.

2.2.Рейтинги востребованности рабочих мест

2.3. Рейтинги языков программирования по зарплате разработчиков

См. также перевод отрывка, посвящённого Python:

Это универсальный и понятный язык, используемый крупными игроками в технологической индустрии (Google, NASA). Принимая во внимание, что уже в 2020 инженер-программист со знанием Python может заработать до $100 000, мы прогнозируем, что годовой оклад Senior Python Developer будет колебаться вокруг суммы $105 000 и выше. Это объясняется в значительной степени популярностью языка и его частым появлением в списках требований в процедурах найма на работу. Согласно рейтингу TIOBE, Python находится на 5-м месте по количеству запросов в основных поисковых системах, поэтому аналитики предполагают, что его популярность будет продолжать расти. За последние 5 лет популярность Python демонстрировала наибольшие темпы роста в этом аспекте (6,8%, когда, например, PHP имеет -5,0%).

3. Дополнительная информация

О том, как вычисляются рейтинги, в большинстве случаев можно посмотреть по ссылкам на эти рейтинги. См. также:

Почему Python?

С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.

Некоторые из вас знают, что совсем недавно я посетил крупнейшее событие в сообществе Python программистов — PyCon US 2020. Полностью все расходы были покрыты мною самостоятельно без привлечения спонсоров и работодателей. Пожалуй, чтобы посетить такое мероприятие, нужно иметь некоторую эмоциональную привязанность к предмету, и это правда.

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.

Для демонстрации лаконичности рассмотрим код на Python и Java, который открывает файл и сохраняет его содержимое в переменную:

Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее :)

Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

  • Google
  • Dropbox
  • Mozilla
  • Facebook
  • Yandex
  • Red Hat
  • Microsoft (с недавних пор очень активно, в частности с Visual Studio)
  • Intel (активно ведёт исследовательскую работу в области параллельных вычислений на Python)

. и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поискового паука Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit
  • Instagram (500M юзеров на Python)
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online MMOPG
  • Quora
  • Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки. Подробнее можно узнать в подкасте от TalkPython, выпуск #54
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus (использую в этом блоге, сервис реализован на Django)
  • Внутренние сервисы Facebook (см. постер в моей заметке о PyCon)
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

и я уверен ещё множество других интересных и популярных приложений, которые я забыл здесь перечислить (велком в комментарии).

О чём это может говорить? О многом. А самое главное о том, что крупные корпорации не боятся строить свой бизнес вокруг Python, они уверены в том, что технология будет жить, а следовательно проблем с поиском специалистов ждать не стоит. Более того, разнообразие приложений также радует, что свидетельствует о широком круге задач, которые Python решает мастерски.

В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme. Времена меняются, сейчас в качестве цифрового lingua franca лидирует что. Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.

Недостатки Python

У читателя незнакомого с Python может сложиться впечатление, что он панацея от всех бед, серебряная пуля и лекарство от рака. Но не всё так радужно и прекрасно. Как и у всего, у Python есть ряд своих недостатков, которые порой могут быть критическими и влиять на выбор не в пользу змеи.

Скорость

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.

Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:

Динамическая типизация

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox :)

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач. Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.

Наверняка я ещё что-то забыл. В общем, Python рулит!

Что такое Python и для чего он используется

Python — это высокоуровневый язык программирования, который используется в различных сферах IT, таких как машинное обучение, разработка приложений, web, парсинг и другие.

В 2020 году Python стал самым популярным языком программирования, обогнав Java на 10%. Это обусловлено многими причинами, одна из которых — высокая оплата труда квалифицированных специалистов (около 100 тысяч долларов в год).

Язык программирования Python

Различные языки программирования обычно доминируют в какой-то отрасли (или нескольких), для работы в которой они хорошо подходят. Но это не значит, что программист ограничен использовать строго определённый инструмент, поэтому любой язык общего назначения, такой как Python, может применять для создания чего-угодно.

Python смог захватить малую часть рынка веб-разработки, иногда используется для написания десктопных приложений и, конечно, тотально доминирует в сфере машинного обучения. Кроме того, на нём создаётся много прототипов, которые позволяют быстро набросать функционал и внешний вид будущего проекта.

Происхождение названия


Автор языка Python назвал его в честь британского комедийного шоу “Monty Python”, которое было популярно в начале 1970-х годов.

Это телешоу позволяло автору расслабиться и отвлечься от разработки языка. Однако, несмотря на настоящее происхождение названия, для людей более очевидно связывать Python со словом “змея”. Этому также способствует логотип, на котором изображена рептилия.

И хотя создатель языка не раз говорил, что название никак не связано со змеями, повлиять на мнение общества так и не удалось.

Питон или Пайтон?

Будь то название британского телешоу или английское звучание слова “змея”, Python правильно произносить, как Пайтон. Однако, около 80% Российского сообщества привыкли использовать слово “Питон”.

Нельзя сказать, что однозначно правильно использовать один из вариантов, многие названия адаптируются под произношения конкретного языка, а изменить сложившиеся привычки общества очень сложно. Однако, вариант названия “Питон” уместно употреблять только в разговоре с русскоязычными собеседниками, потому что на любой международной конференции значение слова “Питон” просто не поймут, ведь в английском языке его нет, есть только “Python (Пайтон)”.

Логотип

На логотипе изображены две змеи, образующие квадрат с выпуклым центром, это часто вводит в заблуждение пользователей, вынуждая ассоциировать название языка с рептилией.

Логотип создал брат автора, Юст ван Россум — программист и шрифтовой дизайнер. Он разработал как дизайн логотипа (две змеи), так и шрифт текста Flux Regular.

История создания

Язык начал разрабатывать программист, Гвидо ван Россумом, в конце 1980-х. На тот момент он работал в центре математики и информатике в Нидерландах.

Гвидо ван Россум увлекался работой с «железками» ещё со школьных лет, и хотя он не находил поддержки и одобрения у своих сверстников, это не помешало ему самостоятельно разработать язык программирования.

Россум работал над Python в свободное время, в качестве основы он взял язык программирования ABC, в разработке которого когда-то участвовал.

Этапы истории языка программирования Python:

  • В феврале 1991 исходный код языка был опубликован на alt.sources. Уже тогда язык придерживался объектно-ориентированного подхода, мог работать с классами, наследованием, функциями, обработкой исключений и всеми основными структурами данных.
  • В 2000 году вышла в релиз вторая версия Python. В неё добавили много важных инструментов, включая поддержку Юникода и сборщик мусора.
  • 3 декабря 2008 в релиз вышла третья версия Python, которая является основной до сих пор. Многие особенности языка были переделаны и стали несовместимы с предыдущими версиями. И хотя функциональность третьей версии ничем не уступает второй, развитие языка разделилось на две ветки. Кто-то продолжал использовать Python 2, чтобы поддерживать старые проекты, кто-то полностью перешёл на третью версию.

Дату смерти второй версии установили на 2015 год, однако, боясь не успеть перенести весь существующий код на Python 3, время жизни Python 2 продлили жизнь до 2020 года.

Python — простой язык

Синтаксис Питона всегда выделял его на фоне других языков программирования. Он не страдает избыточностью, схожесть синтаксиса с обычным английским позволяет понять код даже обычному пользователю, кроме того, программист пишет меньше строк кода, потому что нет необходимости использовать символы: «;», «<», «>». Вложенность обозначается отступами, что повышает читаемость кода и приучает новичков к правильному оформлению.

Python упрощает написание кода и делает разработку быстрой, всё потому что он обладает следующими особенностями:

  • Динамическая типизация. Программисту не нужно указывать тип переменных, язык присвоит его сам. Операнды разных типов, участвующие в одной операции, автоматически приводится к нужному по определённым правилам.
  • Удобный возврат нескольких значений функцией. Их можно перечислить через запятую и они автоматически преобразуются в список. Чтобы вернуть массив из функции, достаточно написать “ return имя_массива “. Не нужно выделять память и передавать указатели в функцию.
  • Автоматическое выделение памяти. Программисту не нужно самостоятельно выделять память под что-либо. С одной стороны это уменьшает контроль программиста над программой, с другой, разработка значительно ускоряется.
  • Сборщик мусора. Если объект становится бесполезным (на него перестаёт что-либо ссылаться), он автоматически удаляется сборщиком мусора. Сборщик мусора позволяет оптимизировано использовать память и не удалять бесполезные объекты вручную.
  • a, b = b, a. Эта строка меняет местами значения переменных, теперь то, что было в a, находится в b и наоборот. Такое возможно, потому что Питон сначала рассматривает переменные справа от знака “=” и помещает их в список, то же он делает с элементами слева от “=”, затем он связывает каждый элемент правого списка с левым. Таким способом можно обменивать значения не только двух переменных, но и трёх, пяти и так далее.
  • Привязка типа данных. Тип данных привязан к значению, а не к переменной. То есть значение — это какой-то объект с атрибутами, которые определяют его тип и другие характеристики, а переменная — просто ссылка на этот объект. Такой подход позволил обойтись без явного определения типов и значительно упростил повторное присваивание значения переменной (особенно, если тип нового значения отличен от начального).
  • Цикл for. Работать с массивами, списками и другими контейнерами в Питоне просто и удобно. Когда необходимо перебрать все его элементы, конструкция выглядит так: “ for x in контейнер: ” (перебор идёт от 0 до последнего элемента, его индекс можно обозначить как -1). Если нужно, чтобы прошло определённое количество циклов, пишут так: “ for x in range(1,9): ” (цикл будет выполняться со значениями x от 1 до 8).
  • Интерпретируемый язык. Написанный код не нужно компилировать, достаточно запустить его и получить результат. Более того, можно работать в интерактивном режиме и получать результат буквально после каждой операции.

Чтобы ускорить разработку, часть программы (обычно не сильно влияющую на скорость работы) пишут на Питоне.

Именно благодаря простоте этот язык программирования смог занять доминирующее место в сфере машинного обучения. Люди, так или иначе связанные с наукой, предпочитают не тратить много времени на такие вещи, как написание кода, поэтому Python отлично подошёл для реализации поставленных перед ними задач.

Пример кода:

Популярность

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

Он собрал вокруг себя огромное сообщество разработчиков, по результатам опроса на Stackoverflow Python занял 7 место с почти 39% голосов.

Индекс TIOBE

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

Согласно индексу TIOBE Python занял 3 место с 9-ю процентами популярности. Он уступил лишь языкам Java и C.

Этот индекс основывает на количестве поисковых запросов, касающихся учебных материалов по языку.

По данным с PYPL Python занимает первое место с более чем 29% популярности и на 10% обгоняет Java.

statista.com

Сервис предоставляет различные виды статистики, среди которых – популярность языков программирования.

Согласно опросу более 85 тысяч респондентов, Python занимает 4 место, уступив таким языкам, как JS, языки разметки и SQL.

Скорость работы

Программисты часто задаются вопросом: “Не приведёт ли использование Python к снижению производительности?”. Не стоит делать какие-либо выводы без детального разбирательства.

Если рассматривать только скорость выполнения кода, то становится ясно, что Python уступает другим языкам программирования, таким как C. Действительно, динамическая типизация, интерпретируемость и другие особенности, облегчающие работу программиста, приводят к ухудшению производительности.

Для любого проекта важно выбрать правильный инструмент и лучшую реализацию. Улучшая одно, программист жертвует другим, его задача — найти идеальный баланс, ориентируясь на конкретное техническое задание.

Python позволяет писать достаточно быстрый код, однако может подводить в некоторых “узких” местах, которые и оказывают наибольшее влияние на производительность всего проекта. Чтобы не затянуть разработку и получить на выходе программу, работающую на высокой скорости, её структуру проектируют так, чтобы соотношение “быстродействие/время разработки” было максимальным.

Программисты используют приёмы, позволяющие нивелировать недостаточную скорость выполнения программ на Pyton:

Почему ТОП-40 американских университетов выбирают Python, и вы должны

Перед каждым начинающим разработчиком встает вопрос «Какой язык учить первым?». 10 программистов могут дать на него 10 разных ответов.

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

Как начинающему разработчику выбрать оптимальный вариант для себя, если он не знает, каким конкретно видом программирования хочет заниматься? Чтобы ответить на этот вопрос, обратимся к опыту американских университетов.

ТОП-40 американских университетов выбирают Python

В высших учебных заведениях в США на вводных курсах Computer Science часто преподают Python. По данным исследования Ассоциации Вычислительной Техники 2014 года, этот язык выбрали 27 из 39 лучших американских университетов. На это есть несколько причин:

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

2. Широкая сфера использования. Знание Python бывает полезно студентам для изучения других предметов. Этот язык применяется для анализа данных и научных исследований.

3. Высокая популярность языка в «реальной разработке».

Начать изучение программирования с Python также рекомендуют популярные во всем мире сервисы для онлайн-образования — Coursera, Codecademy, Udacity, edX.

Популярность Python по сравнению с другими языками

По данным ежегодного рейтинга журнала IEEE Spectrum, Python на первом месте по популярности среди языков программирования. Для составления рейтинга журналисты анализировали публичные чаты разработчиков, объявления о вакансиях, Github, StackOverflow и десятки других источников.

В августе 2020 года Python был на пятом месте в рейтинге Tiobe Index. Он составляется на основе результатов запросов вида « programming» в популярных поисковиках.

Где применяется Python

Python используется в:

  • создании сайтов;
  • разработке десктопных приложений;
  • создании игр;
  • системном администрировании;
  • научных исследованиях.

Какие компании используют Python

Python используют Google, Facebook, Ebay, Instagram, Яндекс и Mail.Ru и другие крупные IT-компании.

13% специалистов Яндекса большую часть рабочего дня программируют на Python.

На Python написаны:

  • клиент для Dropbox;
  • графический редактор GIMP;
  • BitTorrent до версии 5.3.

Сколько зарабатывают Python-разработчики?

Как было сказано выше, сфера применения Python широка. Поэтому спрос на программистов, работающих на этом языке, очень высок.

По данным американского портала gooroo.io, самый высокий «потолок зарплат» среди разработчиков на популярных языках у программистов Python. Максимальное годовое вознаграждение, указанное в вакансиях, составляет 148 тысяч долларов.

Python-разработчики востребованы и в России. Зарплата senior-разработчика доходит до 200 тысяч рублей в месяц.

Как научиться программировать на Python

Поступить на факультет Python-разработки в GeekUniversity. Это совместный проект GeekBrains и Mail.Ru Group. Учиться можно из любой точки планеты. Получение новой профессии можно совмещать с работой в офисе или занятиями в университете.

Уроки проводятся два-три раза в неделю в форме вебинаров. Программа обучения рассчитана на 350 академических часов.

Что освоят студенты за год

Выпускники факультета Python-разработки научатся:

  • верстать сайты на HTML, CSS, Bootstrap;
  • cоздавать сайты на Django Framework;
  • работать с GIT;
  • применять принципы ООП в работе;
  • использовать шаблоны проектирования singleton, adapter, factory, dependency injection;
  • работать в команде по методологиям разработки Agile и Scrum;
  • успешно проходить собеседования и общаться с заказчиками.

Также студенты GeekUniversity проходят практические спецкурсы от Avito, Альфа-банк, МТС, Тинькофф и DeliveryClub.

Что ждет студентов после окончания GeekUniversity

Опыт реальной разработки, портфолио с готовыми проектами, гарантированное трудоустройство. Выпускникам GeekBrains доступны стажировки в ведущих IT-компаниях. Среди них Superjob, «Сбербанк», LevelTravel, profi.ru и другие.

Плюс парочка приятных бонусов:

  • именной сертификат об окончании курсов;
  • бесплатный видеокурс «Английский для IT-специалистов»;
  • годовой онлайн-курс английского языка — бесплатно.

C++ подвинул Python в тройке лидеров апрельского рейтинга TIOBE

Апрельский рейтинг, составленный специалистами аналитического портала TIOBE, принес неожиданные перемены. Относительно молодой и очень перспективный Python, подававший большие надежды, покинул тройку лидеров. Его место занял старый-добрый С++.

Python не виноват

Python – действительно интересный язык: простой, с низким порогом входа и впечатляющими возможностями. У него простой и элегантный синтаксис, избавленный от множества скобок и запятых, и целые россыпи «синтаксического сахара» – одни только генераторы чего стоят!

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

Почему же Python сдал позиции? По словам экспертов TIOBE, его поклонников меньше не стало. Просто С++ вышел на новую волну популярности. Он все такой же быстрый, обеспечивает работу с данными и компонентами на низком уровне, а аудитория «плюсов» – это как минимум три поколения разработчиков.

Первая 20-ка «фигурантов» рейтинга

Возрождение легенды

Когда-то доля С++ на рынке составляла 15%. Сейчас рекордные 15% у Java, которая широко применяется в бэкенде сайтов, Android и решениях интернета вещей. А у С++ – менее 9%, весьма скромный результат.

Но эксперты верят, что С++ вполне способен вернуть былую славу. Основные проблемы языка связаны с выходом новых версий компиляторов.

Сейчас же, после выхода трех ключевых редакций C++11, C++14 и C++17 и их поддержки основными компиляторами, ситуация восстанавливается. Популярность «плюсов» стала возрождаться, а новые версии Gcc, Clang и Visual Studio сделали разработку проще, комфортнее и продуктивнее.

Коротко о С++

С++ – компилируемый язык программирования со статической типизацией. Наследник языка С создан в конце 1980-х годов сотрудником Bell Labs Бьерном Страуструпом. Первый коммерческий выпуск С++ состоялся в 1985 году.

Фактически Страуструп взял синтаксис С и дополнил его средствами языка Симула, чтобы эффективно решать возникающие задачи. В С++ появились объекты и классы, и это ускорило разработки за счет внедрения объектно-ориентированного подхода.

Классы в С++ отражают типы объектов, событий и других явлений. Их можно наследовать, создавая целые иерархии классов, а также ограничивать доступ к функциям и данным класса (это обеспечивает инкапсуляцию — сокрытие деталей реализации от пользователя).

Кроме того, классы — это полиморфизм: можно создать единый интерфейс и множество его воплощений, чтобы работать со всеми ними единообразно и не задумываться об особенностях реализации. Реализуется полиморфизм и через перегрузку функций.

Наконец, в С++ есть мощный механизм дружественных функций и классов. Он позволяет открыть доступ к приватным членам классов, сторонним классам и функциям, сохраняя нужный уровень конфиденциальности.

Преимущество С++ в том, что он, как и чистый С, позволяет работать с ресурсами на низком уровне и эффективно оптимизировать код, но в то же время внедрять парадигму объектно-ориентированного программирования. К тому же С++ поддерживает практически любой код на С и имеет обширную стандартную библиотеку классов и функций, которая постоянно расширяется.

Новейший стандарт языка — С++17 2020 года.

Вот как выглядит простейшая программа на С++:

Изучение С++ рекомендуем начать с книги Бьерна Страуструпа «Язык программирования C++» и «Полного справочника по C++» Герберта Шилдта. Обе книги много раз переиздавались и позволяют быстро вникнуть в особенности непростого, но логичного и мощного языка.

Как составляется рейтинг TIOBE

Рейтинг языков программирования TIOBE отражает их популярность в мире. Позиция в списке никак не связана с качеством языка, его возможностями, количеством написанных строк кода или широтой применения.

При составлении рейтинга эксперты подсчитывают количество поисковых запросов, касающихся того или иного языка, в четырех поисковых системах: Google, Bing, Yahoo! и Baidu. Также учитываются результаты выдачи Wikipedia, Amazon и YouTube.

Рейтинг публикуется ежемесячно. Он дает возможность понять, какие языки заслуживают внимания, и помогает определиться тем, кто хочет сменить направление разработки.

Является ли Python быстрее и легче С++?

Я всегда думал, что преимущества Python — это скорость чтения и развития кода, но время и использование памяти не так хороши, как у С++.

Что ваш опыт говорит вам о времени и памяти Python vs С++?

Я думаю, что вы неправильно читаете эту статистику. Они показывают, что Python примерно в 400 раз медленнее, чем С++, и, за исключением одного случая, Python больше похож на память. Когда дело доходит до размера источника, Python выигрывает.

Мои опыты с Python показывают ту же определенную тенденцию, что Python находится в порядке от 10 до 100 раз медленнее, чем С++ при выполнении любого серьезного хруста. Для этого есть много причин, основными из которых являются: а) интерпретируется Python, а С++ — скомпилирован; б) у Python нет примитивов, все, включая встроенные типы (int, float и т.д.), являются объектами; c) список Python может содержать объекты различного типа, поэтому каждая запись должна хранить дополнительные данные о ее типе. Все это серьезно затрудняет как время работы, так и потребление памяти.

Это не повод игнорировать Python. Множество программ не требует много времени или памяти даже при 100-кратном временном коэффициенте. Стоимость разработки — это то, где Python выигрывает с простым и сжатым стилем. Это улучшение стоимости разработки часто перевешивает стоимость дополнительных ресурсов процессора и памяти. Однако, когда это не так, выигрывает С++.

Все самые медленные ( > 100x) применения Python в перестрелке — это научные операции, которые требуют высокого значения GFlop/s. Вы не должны использовать python для них. Правильный способ использования python состоит в том, чтобы импортировать модуль, который выполняет эти вычисления, а затем отправиться в расслабляющий день с семьей. Это питонический путь:)

Почему Python?

С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.

Некоторые из вас знают, что совсем недавно я посетил крупнейшее событие в сообществе Python программистов — PyCon US 2020. Полностью все расходы были покрыты мною самостоятельно без привлечения спонсоров и работодателей. Пожалуй, чтобы посетить такое мероприятие, нужно иметь некоторую эмоциональную привязанность к предмету, и это правда.

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.

Для демонстрации лаконичности рассмотрим код на Python и Java, который открывает файл и сохраняет его содержимое в переменную:

Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее :)

Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

  • Google
  • Dropbox
  • Mozilla
  • Facebook
  • Yandex
  • Red Hat
  • Microsoft (с недавних пор очень активно, в частности с Visual Studio)
  • Intel (активно ведёт исследовательскую работу в области параллельных вычислений на Python)

. и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поискового паука Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit
  • Instagram (500M юзеров на Python)
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online MMOPG
  • Quora
  • Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки. Подробнее можно узнать в подкасте от TalkPython, выпуск #54
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus (использую в этом блоге, сервис реализован на Django)
  • Внутренние сервисы Facebook (см. постер в моей заметке о PyCon)
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

и я уверен ещё множество других интересных и популярных приложений, которые я забыл здесь перечислить (велком в комментарии).

О чём это может говорить? О многом. А самое главное о том, что крупные корпорации не боятся строить свой бизнес вокруг Python, они уверены в том, что технология будет жить, а следовательно проблем с поиском специалистов ждать не стоит. Более того, разнообразие приложений также радует, что свидетельствует о широком круге задач, которые Python решает мастерски.

В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme. Времена меняются, сейчас в качестве цифрового lingua franca лидирует что. Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.

Недостатки Python

У читателя незнакомого с Python может сложиться впечатление, что он панацея от всех бед, серебряная пуля и лекарство от рака. Но не всё так радужно и прекрасно. Как и у всего, у Python есть ряд своих недостатков, которые порой могут быть критическими и влиять на выбор не в пользу змеи.

Скорость

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.

Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:

Динамическая типизация

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox :)

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач. Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.

Наверняка я ещё что-то забыл. В общем, Python рулит!

Цукерберг рекомендует:  Обучение - JS не работает там, где есть swf
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих