Зарегистрируйтесь, чтобы продолжить обучение

Подробнее о Python Python: Настройка окружения

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

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

Что такое язык программирования? За этим понятием скрываются две связанных, но независимых темы.

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

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

Например, в Python нельзя написать my name = 5 с пробелом в имени переменной. Эти правила существуют не только в книгах, но и в головах конкретных программистов и разработчиков языка.

Часто весь свод правил существует в виде отдельного специального документа и называется спецификацией.

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

Среда выполнения — это конкретное воплощение спецификации, поэтому ее иногда называют реализацией.

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

У Python нет выделенной спецификации, но есть эталонная реализация. Она называется CPython — это интерпретатор Python, реализованный на языке C. Если вы слышите разговоры про Python, то скорее всего имеется в виду именно эталонная реализация CPython.

Прочие варианты обычно имеют свои названия. Например, реализация языка для запуска программ на платформе .NET называется IronPython.

Python

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

Интерпретируемый язык программирования

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

Существует два основных подхода в переводе: компиляция и интерпретация.

При компиляции весь код программы считывается, анализируется и переводится в машинный код. Так как код обрабатывается целиком, то это позволяет избегать многих ошибок в программе - они будут отловлены на стадии анализа. Но как недостаток, компиляция может длиться довольно долго. Пока программа не "соберется", результатов ее мы так и не получим. Языки C, Rust, Go это компилируемые языки.

При интерпретации, специальная программа интерпретатор, считывает и переводит код построчно, а не целиком. Такой подход позволяет сразу запустить программу и получать ее результаты, но об ошибке в коде мы узнаем лишь когда интерпретатор дойдет до строчки с ней. Языки Python, JS, Ruby, PHP это интерпретируемые языки.

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

Процесс исполнения кода на Python выглядит так:

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

Сильная типизация

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

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

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

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

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

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

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


Дополнительные материалы

  1. Что такое компиляция
  2. Что такое интерпретация

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

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

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»