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

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

В 2019 году 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 — простой язык

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

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

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

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

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

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

Пример кода:

def what_bigger(a, b):
    if a > b:
        print(a, "больше чем", b)
    else:
        print(b, "больше чем", a)
def max_arr(arr):
    max = 0
    for x in arr:
        if arr[x-1] > max:
            max = arr[x]
    return max
def arr_to_2arr(array):
   array = array * 2
   return array
print("Простая программа на языке Пайтон")
a = [1,2,3,6,1,6]
what_bigger(1,5)
r1 = max_arr(a)
r2 = arr_to_2arr(a)
print("Return функции max_arr - ", r1)
print("Return функции arr_to_2arr - ", r2)

Результаты выполнения:

Простая программа на языке Пайтон
5 больше чем 1
Return функции max_arr -  6
Return функции arr_to_2arr -  [1, 2, 3, 6, 1, 6, 1, 2, 3, 6, 1, 6]

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

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

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

Индекс TIOBE

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

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

PYPL

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

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

statista.com

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

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

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

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

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

Однако в современном IT важна не только скорость работы программ, но и скорость их разработки. Разработка, тестирование, отладка и поддержка — всё это стоит немалых денег. И если в скорости работы программ Python уступает, то в скорости разработки ему нет равных.

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

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

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

  • Встраивание кода на С. С помощью такого приёма можно заметно повысить производительность, обычно на С пишут те участки кода, которые обрабатывают много запросов в единицу времени. Например, функцию, которая получает данные из одной базы данных, обрабатывает их и отсылает в другую, лучше написать на языке С, если объем проходящей информации достаточно большой.
  • Использование лучших алгоритмов и инструментов. Одну и ту же задачу можно решить по-разному. Во-первых, программист должен выбрать наиболее эффективный алгоритм, обеспечивающий лучшую производительность, например, для поиска элемента в отсортированном массиве можно перебирать его от начала до конца, в лучшем случае (элемент в начале массива) поиск выполнится быстро, в худшем (элемент в конце массива) — медленно. Эффективнее использовать методом деления пополам (двоичный поиск), который найдёт нужный элемент за минимальное количество итерация в массиве любой длины. Во-вторых, для реализации задачи нужно подбирать правильные инструменты. Например, если последовательность элементов строго определена и не изменяется, лучше использовать кортеж, а не список. Он требует меньше места, обрабатывается быстрее и защищён от случайных изменений.
  • Оптимизация интерпретатора. Скорость программ на Python сильно зависит от работы интерпретатора, одни конструкции работают быстрее, другие медленнее.
    Быстрее Медленнее
    a, b = c, d a = c; b = d
    a < b < c a < b and b < c
    not not a bool(a)
    a = 5 a = 2 + 3
    код, встроенный в цикл вызов функции с кодом в цикле
  • Модули для тестирования. Чтобы определить какие участки кода сильно снижают общую производительность, программист может использовать специальные модули для тестирования. Таким образом, можно понять, какой код нужно оптимизировать или заменить на код на языке C.
  • Готовые инструменты. Для большинства задач уже разработаны эффективные решения. Лучше использовать готовый, отлаженный код какой-либо библиотеки, чем писать своё решение с нуля, которое 100% будет не таким эффективным.

Что можно написать на Python

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

Back-end сайта

Для разработки серверной части сайта используются фреймворки: Django и Flask. Они превращают Python в серверный язык программирования, возможности которого не уступают другим популярным инструментам.

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

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

Blockchain

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

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

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

Бот

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

Python позволяет быстро создавать многофункциональных и относительно умных ботов. Важно понимать, что боты — это не простая программа в 500 строк кода. Заказ на создание бота для бизнеса может стоить несколько миллионов. Цена обусловлена тем, что спроектировать бота, которого будет сложно отличить от человека, очень сложно. Необходимо предусмотреть множество вариантов диалогов, проанализировать поведенческие факторы человека и внедрить их в программу. Проще говоря, из машины, понимающей только нули и единицы, нужно сделать примитивный “мозг”.

База данных

База данных — это информация, систематизированная по общим признакам и специальным правилам. В любом большом проекте используются базы данных, в них хранится информацию о пользователях, изменениях в программе и т. д.

Систему управления базами данных можно написать на Python.

Дополненная реальность

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

Дополненную реальность можно наблюдать в фильмах, таких как Железный Человек. В реальном мире она используется, например, в боевых истребителях (система прицеливания).

Работа дополненной реальности основана на взаимодействии с метками. Электронное устройство получает информацию и анализирует окружающее пространство, с помощью компьютерного зрения он “понимает”, что человек видит перед собой. Затем устройство накладывает на реальный мир “виртуальный слой”.

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

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

BitTorrent клиент

BitTorrent — уникальная технология, позволяющая быстро обмениваться большими объёмами данных через интернет.

До 6 версии клиент BitTorrent был полностью написан на Python. И хотя позже он был полностью переписан на C++, это показывает, что Pyton можно использовать для реализации задач такого рода.

Нейронная сеть

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

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

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

Парсер

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

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

Калькулятор

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

Важно понимать, что от калькулятора требуется 100% точность расчёта. Поэтому все ошибки, связанные с округлением и двоичным представлением чисел могут быть критичными. Однако для Python написаны библиотеки, полностью решающие данную проблему.

Игра

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

Для написания небольшого проекта можно воспользоваться библиотекой Pygame, которая даёт все необходимые инструменты для создания небольшой 2D игры.

Текстовый редактор

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

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

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

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

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

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