Как ИИ изменит нашу жизнь — в специальном проекте Naked Science!
Перейти
  • Добавить в закладки
  • Facebook
  • Twitter
  • Telegram
  • VK
  • Печать
  • Email
  • Скопировать ссылку
Партнерский материал

Мясо «Пайтона»: чем овладеет разработчик самого популярного языка программирования

Согласно Stack Overflow Developer Survey 2019 (данные по 87 тысячам айтишников разных стран), Python в 2019 году опередил таких признанных лидеров, как Java и С++. Одна из главных причин его успеха — универсальность. Он используется от Data Science (машинное обучение, анализ данных, визуализация) до разработки встроенного программного обеспечения и серверной части веб-приложений. При помощи Python можно создавать игры, приложения, писать тесты для программного обеспечения и делать многое другое. Какие именно навыки реально получить на курсах обучения Python, чтобы получить возможность работать в этих областях?
Python — самый логичный путь в мир программирования нашего времени / ©extremetech.com

Сегодня инфопространство переполнено предложениями по обучению программированию. Пандемия и подстегиваемое «торжество удаленки», с одной стороны, повысили интерес к таким рабочим местам. С другой — в эпоху нестабильности доходов носителей традиционных профессий хочется найти такую сферу (и прилагающиеся к ней навыки), которые буду востребованы при любой погоде. Один из таких курсов предлагает SkillFactory — и он касается разработчика на Python. Расскажем о нем подробнее.

Универсальный трамплин в мир программирования

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

Что конкретно имеется в виду? Структурное программирование — такая парадигма, в которой программа — это иерархическая структура блоков. Появилась она еще в конце 60-х и с тех времен остается важнейшим элементов кодинга в принципе. Согласно структурному подходу, «правильная» программа (без goto) включает три типа основных управляющих конструкций: последовательность, ветвление и цикл (плюс подпрограммы).

Основные концепции объектно-ориентированного программирования / ©stackify.com

Объектно-ориентированный подход — с одной стороны, развитие структурного, с другой — некоторый отход от него. В нем базовый элемент программы — это объекты, каждый из которых является представителем некоего класса, а у каждого класса есть иерархия наследования: то есть один класс данных может наследовать данные и особенности другого, «родительского» класса.

А в аспектно-ориентированном программировании код разделяют по функциональному признаку на модули, что позволяет проще управлять крупными программами. Функциональный подход к программированию предполагает вычисление результатов функций от исходных данных и результатов других функций — без явного хранения состояния программы. Такой подход характерен для Lisp.

Все эти особенности обычно «разбросаны» по нескольким разным языкам: допустим, аспектно-ориентированный подход в том или ином виде можно найти в C / C++, функциональный — в Lisp и так далее. Сочетание всех этих подходов в одном языке — безусловно сильная сторона Python. Обучающийся ему человек в итоге при необходимости сможет проще осваивать другие языки программирования, где есть один из этих подходов. Напротив, тот, кто знает язык программирования, где части этих подходов нет, столкнется с бо́льшими проблемами при переходе на другой язык.

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

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

Веб-разработка: какие пути открывает этот язык здесь

Одна из важнейших областей конкретного Python — это именно веб-разработка, в первую очередь — веб-программирование. И здесь перед изучающим язык человеком открываются два пути. Во-первых, он может работать с бэкендом веб-приложений, используя сам нативный Python или же применяя популярные фреймворки, например Django. (Фреймворк — это ПО, облегчающее разработку и объединение разных компонентов большого программного проекта). Кстати, на курсах SkillFactory вы овладеете не только самим Python (и JavaScript), но и освоите упомянутый выше Django (а равно и React, и SQL).

Python поддерживает немало фреймворков / ©mahipal-nehra.medium.com

Обычно разработку делят на фронтенд и бэкенд. Первый отвечает за интерфейс, с которым работает конечный пользователь, а второй — за «начинку», программный «движок» продукта. Python сам по себе оптимизирован под бэкенд, но это вовсе не значит, что он им и ограничивается. Как мы уже отмечали, именно это делает этот язык оптимальным для подготовки фулстек-разработчика. Такие кодеры по окончании соответствующего курса смогут разбираться во всем объеме проекта: и во фронтенде, и в бэкенде. Причем такие возможности они получат сразу после выхода на работу — даже в тот момент времени, когда их собственный опыт в разработке будет ограничиваться учебными проектами.

Именно поэтому SkillFactory предлагает желающим пройти курс «Профессия Fullstack-разработчик на Python». Его программа разработана так, чтобы за 15 месяцев на практике вы освоили больше 20 видов конкретных инструментов для будущего веб-разработчика. По итогам этого курса вы сможете как создавать работающие «лицом к лицу с пользователем» небольшие приложения, так и развивать большие и масштабируемые проекты с позиции бэкенд-разработчика (порталы, веб-сервисы, интернет-магазины).

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

Машинное обучение, искусственный интеллект и Python

Еще одно важнейшее поле конкретных навыков после овладения этим языком — машинное обучение и разработка AI на Python. Среди конкретных инструментов, которые может изучать «пайтонист» (впрочем, по-русски их называют и «питонистами»), — библиотеки типа TensorFlow, созданной исследовательской группой Google Brain с использованием Python.

Сам Google активно использует эту библиотеку для программирования и обучения нейронных сетей. На сегодня это одна из основных магистральных троп в области разработки искусственного интеллекта. Другая известная библиотека на Python — Scikit-learn. Она, кроме того, использует включения Cython. Это язык программирования, являющийся «мостиком» между Python и С-подобными языками. На нем просто написать модуль С/С++ кода для Python.

Разработчик может работать в нем так же, как и в обычном Python, с сохранением все той же «человеческой» простоты синтаксиса. Но если надо, в Cython можно напрямую вызвать функции С/С++. При нужде код Cython преобразуется в С/С++ код для последующей компиляции и потом может использоваться как расширение «обычного» Python или как независимое приложение со встроенной библиотекой выполнения Cython.

Как уже знает читатель, Python более производителен: времени на написание кода на нем надо примерно в два-три раза меньше, чем для такого же объема кода на С/С++. Так зачем же в машинном обучении или строительстве нейросетей может быть нужен «гибрид» Python и С? Ответ достаточно прост: в целом ряде систем, обрабатывающих огромное количество данных, может быть важна скорость.

Приложение на Android в норме не обрабатывает гигабайты данных за раз, а вот нейросеть, обучающая машину Waymo рулить без водителя, получает иной раз по много гигабайт исходных данных в минуту. Кроме того, нужные для этого компьютеры роботизированных автомобилей тратят до 500 ватт-часов в час на свою работу. Написав отдельный (но часто употребимый) модуль на С/С++, можно ускорить его работу и снизить энергетические затраты на исполнение кода.

Изучение таких «гибридных» подходов в принципе полезно и самому «питонисту»: с ними он будет лучше готов к работе в более масштабном проекте, где часто требуется взаимодействие с теми, кто пишет на С-подобных языках.

Машинное обучение и нейросети — одно из ключевых направлений работы программистов ближайших 10-20 лет. Причина — в огромной значимости для будущего беспилотных автомобилей и иной роботизированной техники (беспилотные комбайны, летающие дроны). Во всех этих областях солидный дефицит специалистов, и разработки по ПО беспилотников на основе нейросетей активно ведутся в самых разных местах, включая Россию («Яндекс»).

Big Data и Python: неизбежные партнеры

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

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

Изучая этот язык, вы сможете освоить библиотеку с открытым исходным кодом SciPy, куда входят модули для математических, инженерных и научных вычислений в самых разных областях. Научиться визуализировать данные поможет Matplotlib — одна из самых популярных библиотек в этой области. Другая библиотека, PANDAS, сопроводит вас в первичном анализе информации.

©extremetech.com

На протяжении курсов вы так или иначе столкнетесь с тем, что Python позволяет и готовить датасеты (исходные наборы данных) к анализу, и интерпретировать их результаты моделированием на основе машинного обучения. Для упрощения анализа данных в Python можно использовать специальные команды: чтобы, скажем, исключить повторяющиеся значения в массиве информации или выявить какие-то тренды в нем же. Другой важный конкретный навык при работе с большими данными с пользованием Python — организация «конвейеров» сборки и обработки информации (data pipelines).

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

Разумеется, это далеко не все, чему можно научиться на курсах SkillFactory: еще там можно стать датасайнтистом (специалистом в изучении больших данных), тестировщиком ПО, а также разработчиком приложений на Android. Все эти специальности в наше время также востребованы, а количество вакансий по ним существенно превышает число соискателей.

Вперед, в объятия Python’a?

Вышеперечисленное — далеко не все области применения Python. Его используют для написания игр и 3D-графики, программ для обработки аудио, видео, изображений и многого другого. Все это значит, что для человека, овладевшего навыками программирования на таком языке, проблем с востребованностью не будет. Поэтому, если хотите быть спокойными за свое будущее, стоит записаться на курс «Профессия Fullstack-разработчик на Python» в SkillFactory.

Следует отметить, что до 15 ноября 2020 года действует промокод Разработчик, скидка по которому на все курсы SkillFactory — 45%. Она применима не только курсов по Python, но и курсов тестировщика ПО, датасайнтиста и разработчика на Android.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl + Enter.
Подписывайтесь на нас в Telegram, Яндекс.Новостях и VK
26 ноября
Александра Медведева

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

Позавчера, 14:24
Василий Парфенов

Что такое накопитель энергии? Чем отличается аккумулятор от батареи? В чем настоящее чудо электричества? Вся эволюция человечества тесно связана с нашим умением добывать энергию в разных формах. Но настоящая революция произошла, когда появились технологии преобразования тепла, давления и работы в электричество. Благодаря этому мы научились транспортировать энергию и запасать ее. Дальнейший рост эффективности энергосистем невозможен без накопителей. Naked Science решил разобраться во всех деталях.

Вчера, 18:46
Анна Новиковская

В течение 55 лет никто не исследовал часть космоса, где мог зародиться сигнал «Wow!», который некоторые астрономы считают посланием инопланетной цивилизации. Теперь международная группа исследователей провела двойное телескопирование области, откуда, вероятнее всего, этот сигнал пришел, но не нашла там ничего достойного внимания.

26 ноября
Александра Медведева

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

26 ноября
Мария Азарова

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

24 ноября
Редакция

Режиссер Илай Сасик (Eli Sasich), вдохновившись классическими научно-фантастическими фильмами «Чужой» и «Бегущий по лезвию», несколько лет назад снял короткометражный фильм «Атропа», который стоит посмотреть, если вы интересуетесь наукой и космическими технологиями.

1 ноября
Анна Новиковская

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

19 ноября
Анна Новиковская

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

24 ноября
Редакция

Режиссер Илай Сасик (Eli Sasich), вдохновившись классическими научно-фантастическими фильмами «Чужой» и «Бегущий по лезвию», несколько лет назад снял короткометражный фильм «Атропа», который стоит посмотреть, если вы интересуетесь наукой и космическими технологиями.

[miniorange_social_login]

Комментарии

1 Комментарий

-
0
+
Динамическая типизация - это на самом деле минус, и весьма большой. Потому что в процессе выполнения невозможно получить тип объекта. На самом деле языки со статической типизацией давно уже поддерживают и динамическую типизацию тоже, как дополнительную опцию (например, DLR в C#, или лексема var). Лично я, как человек, работающий с этой ненавистной дин типизацией в 1С77 уже лет 20, с удовольствием бы задушил того, кто ее придумал... Структурное программирование сильно устарело, вряд ли при решении современных задач оно чем-то будет полезно. Наличие многих языков в одном флаконе - в том же C# это норма уже лет 15. Всю программу можно писать на разных языках вперемешку, в том числе на функциональном F#. Всю эту кашу выучить за год? Мда. Максимум пробежаться по верхушкам. Одни основы ИИ можно грызть лет 5-7. Есть хорошая статья в инете - Научитесь программировать за десять лет, Питер Норвиг.
Подтвердить?
Подтвердить?
Не получилось опубликовать!

Вы попытались написать запрещенную фразу или вас забанили за частые нарушения.

Понятно
Жалоба отправлена

Мы обязательно проверим комментарий и
при необходимости примем меры.

Спасибо
Аккаунт заблокирован!

Из-за нарушений правил сайта на ваш аккаунт были наложены ограничения. Если это ошибка, напишите нам.

Понятно
Что-то пошло не так!

Наши фильтры обнаружили в ваших действиях признаки накрутки. Отдохните немного и вернитесь к нам позже.

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

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

Понятно
Ваше сообщение получено

Мы скоро прочитаем его и свяжемся с Вами по указанной почте. Спасибо за интерес к проекту.

Понятно

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: