Python

Если вы собираетесь изучать такой язык программирования, как Python, или уже изучаете — у вас может возникнуть резонный вопрос:

«Для решения каких конкретных задач я могу использовать Python?»

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

Но не волнуйтесь, по мере роста моих знаний в этой области, я выделил 3 основных способа применения для Python, и сейчас я поделюсь ими:

  • Веб-разработка
  • Анализ и работа с данными, а именно: машинное обучение, анализ и визуализация данных
  • Скриптинг

Теперь поговорим о каждом из них.

Веб-разработка

Веб-фреймворки, основанные на языке Python, например, Django и Flask, в последнее время стали крайне популярными в веб-разработке.

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

Но подождите, зачем мне эти веб-фреймворки?

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

Какой фреймворк я должен взять на вооружение?

Django и Flask — два самых популярных веб-фреймворка на Python. Если вы новичок, я бы рекомендовал использовать один из них.

В чем разница между Django и Flask?

За меня на этот вопрос ответит статья Гарета Дуайера. Возьму смелость процитировать её:

<begin quote>

Основные различия:

  • Flask минималистичен, прост в использовании и гибок, а также у него отсутсвуют какие-либо ограничения.
  • Django похож на тариф «Все включено». В нем есть админ-панель, интерфейс базы данных, ORM (объектно-реляционное отображение) и структура каталогов для готовых приложений и проектов.

Вам стоит выбрать:

  • Flask, если вы заинтересованы в получении профессионального опыта и возможности обучения или же хотите получить больше контроля над тем, какие компоненты используются (например, какие базы данных вы хотите использовать и как взаимодействовать с ними).
  • Django, если вы сосредоточены на конечном результате. Особенно, если работаете над новостным сайтом, интернет-магазином или блогом, и вы хотите, чтобы на сайтах все было предельно понятно и легко для пользователя.

</end quote>

Другими словами, если вы новичок — Flask лучший выбор, потому что он достаточно прост в работе. Также, Flask подходит тем, кому нужно больше кастомизации. Кроме того, по словам моего друга Джонатана Т ХоFlaskболее подходит для создания REST API, чем Django. Все благодаря его гибкости в работе.

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

Переходим к следующему пункту!

Анализ и работа с данными, а именно: машинное обучение, анализ и визуализация данных

Перво-наперво, разберемся с понятием машинное обучение.

Мне кажется, лучший способ объяснить, что же такое машинное обучение — показать все на простом примере:

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

Беря за основу картинку № 1, вы хотите, чтобы программа определила, что на ней собака.

Картинка № 1

Беря за основу картинку № 2, вы хотите, чтобы программа распознала на ней стол.

Картинка № 2

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

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

Вот тут-то и появляется машинное обучение

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

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

Это схоже с тем, как ребенок познает что-нибудь новое. Каким образом ребенок понимает, что одна вещь похожа на собаку, а другая на стол? Вероятно, с помощью примеров.

Вы однозначно не говорите ребенку: «Если что-то пушистое и с светло-коричневой шерстью, то это собака». Вы просто говорите: «Это собака. Просто собака. А это стол. И вот это тоже стол»

Алгоритмы машинного обучения работают точно так же.

Это можно применить:

  • Система рекомендаций (в YouTube, Netflix, Amazon)
  • Распознавание лиц
  • Распознавание голоса
  • И многое другое

Популярные алгоритмы машинного обучения, о которых вы, возможно, слышали:

  • Нейронные сети
  • Глубокое обучение
  • Метод опорных векторов
  • Алгоритм «случайный лес»

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

Python для машинного обучения

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

Два самых популярных это scikit-learn и TensorFlow.

  • scikit-learn встроен в некоторые из наиболее популярных алгоритмов машинного обучения. Некоторые из них я упомянул выше.
  • TensorFlow — это библиотека более низкого уровня, которая позволяет создавать кастомные алгоритмы машинного обучения.

Если вы только начинаете работать с проектами по машинному обучению — вам пригодится scikit-learn. А в случае, если вам захочется увеличить эффективность программы или приложения — рекомендую TensorFlow.

Как мне следует начать изучать машинное обучение?

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

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

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

Анализ и визуализация данных

Чтобы помочь вам разобраться в том, о чем я говорю, позвольте мне привести небольшой пример:

Допустим, вы работаете в компании, которая продает свою продукцию в Интернете. Как аналитик, вы должны будете построить вот такой график:

Диаграмма № 1 — создана с помощью Python

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

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

Чтобы установить истинную причину, вы можете нарисовать другой график, подобный этому:

Линейный график №1 — создан с помощью Python

Вместо того, чтобы рассматривать данные только за воскресенье, мы рассматриваем данные за целую неделю. Как вы видите, разница довольно последовательна в различные дни.

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

А что, если вы увидите такой график?

Линейный график №2 — создан с помощью Python

Что тогда объясняет такую разницу в воскресенье?

Вы могли бы предположить, что мужчины более склонны к приобретению данного продукта именно в воскресенье по какой-то причине. Или это просто совпадение.

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

Работа по анализу данных, которой я занимался пока работал в Google и Microsoft, очень схожа с верхним примером — только данных было намного больше и анализ сложнее. Я использовал Python для анализа данных в Google, в Microsoft использовал JS.

В обоих компаниях я использовал SQL, чтобы вытащить данные из баз данных. Для визуализации данных я использовал Matplotlib (в Google) и D3.js (в Microsoft).

Анализ данных и визуализация в Python

Одной из самых популярных библиотек для визуализации данных является Matplotlib.

Эта библиотека станет отличным выбором для вас:

  • Вы сможете легко и достаточно быстро ее освоить
  • На ее основе построены многие другие библиотеки, например seaborn. Изучив Matplotlib, в будущем вам будет легче разобраться с другими библиотеками на его основе.

Как мне следует начать анализировать данные с помощью Python?

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

Также я создал свой собственный курс по этой теме на Pluralsight, который вы можете пройти бесплатно, подписавшись на их 10-дневную бесплатную пробную версию.

Я бы рекомендовал вам посмотреть и то и другое.

Изучив основы анализа и визуализации данных, вам будет полезно также изучить основы статистики с таких сайтов, как Coursera и Khan Academy.

Скриптинг

Что такое скриптинг?

Скриптинг обычно используется при написании небольших программ для автоматизации простых задач. Позвольте мне привести пример из личного опыта:

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

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

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

Что насчет встраиваемых систем?

Я не специалист по встраиваемым системам, но я точно знаю, что Python отлично работает с Rasberry Pi и пользуется популярность среди любителей подобного аппаратного обеспечения.

А как насчет разработки игр?

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

Скорее, я бы рекомендовал вам начать с Unity на языке C #. Движок Unityявляется одним из самых популярных игровых движков в мире — это позволяет вам создавать игры для всех основных платформ, включая Mac, Windows, iOS и Android.

Что насчет приложений для ПК?

Вы можете писать приложения на Python для ПК, используя библиотеку Tkinter, однако это не самый популярный способ.

На сегодняшний день, для написания приложений для ПК, гораздо чаще используют такие языки, как Java, C # и C ++ . Совсем недавно, некоторые компании начали использовать JavaScript в качестве основного языка разработки.

Например, настольное приложение Slack было создано с помощью фреймворка Electron — который позволяет разрабатывать нативные графические приложения для настольных операционных систем с помощью веб-технологий.

Если бы мне пришлось писать приложение для ПК, то лично я бы использовал JavaScript — это позволило бы мне повторно использовать код из веб-версии. Тем не менее, я не специалист в разработке настольных приложений.

Python 3 или Python 2?

Я бы порекомендовал вам использовать Python 3, поскольку на сегодняшний день он более современен и популярен.

Разница между back-end и front-end кодом (на тот случай, если вы не можете в этом разобраться):

Предположим, вы хотите создать свой собственный проект — что-то вроде Instagram.

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

  • Swift для iOS
  • Java для Android
  • JavaScript для веб-браузеров

Каждый из наборов кода будет использоваться в зависимости от используемого устройства или браузера. Он будет определять компоновку дизайна, как должны выглядеть кнопки при нажатии на них и т. д. То есть front-end код будет определять все, что касается графического интерфейса приложения.

Затем вам нужно позаботиться о возможности хранения информации и фотографий пользователей на своих серверах. Иначе пользователи просто не смогут просматривать фотографии и информацию других пользователей.

Вот здесь то нам и нужен back-end / server-side код. Вам нужно будет написать backend код, для возможности выполнения подобных операций:

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

Проще говоря, front-end код нужен для создания дизайна и интерфейса приложения или сайта. А back-end код обеспечивает взаимодействие с сервером. В этом и заключается разница между frontend и backend кодом.

Кстати, Python — не единственный хороший вариант для написания backend / server-side кода. Есть много других популярных и неплохих вариантов, которые вы можете использовать, включая Node.js, который основан на JavaScript.

Понравилась ли вам эта статья? Возможно, вам также понравится мой Youtube канал

У меня есть канал обучения программированию на YouTube, который называется CS Dojo с 440 000 + подписчиками, где я регулярно выпускаю качественный контент.

Например, вам могут понравиться эти видеоролики:

В любом случае, спасибо за прочтение!

Перевод статьи YK SugiWhat exactly can you do with Python? Here are Python’s 3 main applications