Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

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

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

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

С одной стороны, языком программирования называют правила (синтаксические и семантические), по которым записывается и работает исходный код. В отличие от естественных языков, эти правила достаточно строги. Любая мельчайшая ошибка и код либо не запустится, либо запустится, но не заработает, как ожидается. Например, в Python нельзя написать my name = 5 (с пробелом в имени переменной). Эти правила существуют не только в книгах, но и в головах конкретных программистов и разработчиков языка. Часто весь свод правил, называемый спецификацией, существует в виде отдельного специального документа.

С другой стороны, языком программирования называют программу, которая непосредственно запускает (или компилирует) наш код. В предыдущем уроке мы как раз установили такую. Обычно её называют средой выполнения, иногда "рантаймом" ("runtime"), если речь идёт про интерпретацию. Среда выполнения — конкретное воплощение спецификации, по-другому называемое реализацией (или implementation). Реализаций конкретного языка может существовать несколько, но часто существует так называемая эталонная реализация (или reference implementation), на которую могут равняться другие. Различные реализации могут разрабатываться разными людьми и компаниями.

У Python нет выделенной спецификации, но есть эталонная реализация, называемая CPython (интерпретатор Python, реализованный на языке C). Если вы слышите, что кто-то говорит Python, то скорее всего имеется в виду именно эталонная реализация. Прочие же реализации обычно имеют свои названия. Например, реализация языка, предназначенная для запуска программ на платформе .NET, называется IronPython.

Python

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

Интерпретируемый

У Python отсутствует стадия компиляции в машинный код, которая присутствует, скажем, у языков C, Rust, Go. Программа исполняется интерпретатором шаг за шагом, а не запускается напрямую на процессоре компьютера. Поэтому для запуска программы на Python всегда нужна среда исполнения (интерпретатор) — только она может выполнять Python-программы.

Строго говоря, у Python есть фаза компиляции, во время которой код из текста преобразуется в специальное представление, называемое "байткод" ("bytecode"), а затем уже этот байткод передаётся в интерпретатор. Но внешне Python ведёт себя именно как интерпретируемый язык программирования: интерпретатор при запуске вашей программы загружает из файлов её (программы) исходный код, преобразует для удобства в байткод (при этом проверяются ошибки синтаксиса), а дальше начинает исполнять по шагам.

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

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

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

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


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

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

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

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

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

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 декабря 8 месяцев

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

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

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

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»