- 10.11.2020
- Александр Березин
-
3 602
Мясо «Пайтона»: чем овладеет разработчик самого популярного языка программирования
Сегодня инфопространство переполнено предложениями по обучению программированию. Пандемия и подстегиваемое «торжество удаленки», с одной стороны, повысили интерес к таким рабочим местам. С другой — в эпоху нестабильности доходов носителей традиционных профессий хочется найти такую сферу (и прилагающиеся к ней навыки), которые буду востребованы при любой погоде. Один из таких курсов предлагает SkillFactory — и он касается разработчика на Python. Расскажем о нем подробнее.
Универсальный трамплин в мир программирования
В отличие от многих языков, Python поддерживает более чем одну парадигму программирования. Например, он одновременно поддерживает и объектно-ориентированный и структурный подходы, и аспектно-ориентированное и функциональное программирование.
Что конкретно имеется в виду? Структурное программирование — такая парадигма, в которой программа — это иерархическая структура блоков. Появилась она еще в конце 60-х и с тех времен остается важнейшим элементов кодинга в принципе. Согласно структурному подходу, «правильная» программа (без goto) включает три типа основных управляющих конструкций: последовательность, ветвление и цикл (плюс подпрограммы).
Объектно-ориентированный подход — с одной стороны, развитие структурного, с другой — некоторый отход от него. В нем базовый элемент программы — это объекты, каждый из которых является представителем некоего класса, а у каждого класса есть иерархия наследования: то есть один класс данных может наследовать данные и особенности другого, «родительского» класса.
А в аспектно-ориентированном программировании код разделяют по функциональному признаку на модули, что позволяет проще управлять крупными программами. Функциональный подход к программированию предполагает вычисление результатов функций от исходных данных и результатов других функций — без явного хранения состояния программы. Такой подход характерен для Lisp.
Все эти особенности обычно «разбросаны» по нескольким разным языкам: допустим, аспектно-ориентированный подход в том или ином виде можно найти в C / C++, функциональный — в Lisp и так далее. Сочетание всех этих подходов в одном языке — безусловно сильная сторона Python. Обучающийся ему человек в итоге при необходимости сможет проще осваивать другие языки программирования, где есть один из этих подходов. Напротив, тот, кто знает язык программирования, где части этих подходов нет, столкнется с бо́льшими проблемами при переходе на другой язык.
Другая его необычная сторона — динамическая типизация (тип переменной определяется в момент присваивания значения). А при изменении значения может меняться тип данных. За счет этого в различных участках программы одна и та же переменная может принимать значения разных типов — что заметно упрощает ее использование в целом ряде ситуаций. Во многих случаях программа работает с меняющимся окружением, с данными переменных типов.
Несмотря на то что Python использует сразу все эти подходы, его синтаксис все равно остается простым и понятным — в том числе потому, что для выделения блоков кода здесь применяются отступы, а не скобки. Выходит, тот, кто изучал его, получит сразу и «универсальный трамплин», оттолкнувшись от которого в будущем, сможет при желании освоить и другие языки. В то же время само освоение этого трамплина будет не слишком сложным.
Веб-разработка: какие пути открывает этот язык здесь
Одна из важнейших областей конкретного Python — это именно веб-разработка, в первую очередь — веб-программирование. И здесь перед изучающим язык человеком открываются два пути. Во-первых, он может работать с бэкендом веб-приложений, используя сам нативный Python или же применяя популярные фреймворки, например Django. (Фреймворк — это ПО, облегчающее разработку и объединение разных компонентов большого программного проекта). Кстати, на курсах SkillFactory вы овладеете не только самим Python (и JavaScript), но и освоите упомянутый выше Django (а равно и React, и SQL).
Обычно разработку делят на фронтенд и бэкенд. Первый отвечает за интерфейс, с которым работает конечный пользователь, а второй — за «начинку», программный «движок» продукта. 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, сопроводит вас в первичном анализе информации.
На протяжении курсов вы так или иначе столкнетесь с тем, что Python позволяет и готовить датасеты (исходные наборы данных) к анализу, и интерпретировать их результаты моделированием на основе машинного обучения. Для упрощения анализа данных в Python можно использовать специальные команды: чтобы, скажем, исключить повторяющиеся значения в массиве информации или выявить какие-то тренды в нем же. Другой важный конкретный навык при работе с большими данными с пользованием Python — организация «конвейеров» сборки и обработки информации (data pipelines).
Даже администраторы облачных данных могут использовать Python — например, чтобы проверять подлинность конечных пользователей с помощью специального приложения на Python.
Разумеется, это далеко не все, чему можно научиться на курсах SkillFactory: еще там можно стать датасайнтистом (специалистом в изучении больших данных), тестировщиком ПО, а также разработчиком приложений на Android. Все эти специальности в наше время также востребованы, а количество вакансий по ним существенно превышает число соискателей.
Вперед, в объятия Python’a?
Вышеперечисленное — далеко не все области применения Python. Его используют для написания игр и 3D-графики, программ для обработки аудио, видео, изображений и многого другого. Все это значит, что для человека, овладевшего навыками программирования на таком языке, проблем с востребованностью не будет. Поэтому, если хотите быть спокойными за свое будущее, стоит записаться на курс «Профессия Fullstack-разработчик на Python» в SkillFactory.
Следует отметить, что до 15 ноября 2020 года действует промокод Разработчик, скидка по которому на все курсы SkillFactory — 45%. Она применима не только курсов по Python, но и курсов тестировщика ПО, датасайнтиста и разработчика на Android.