Что такое программирование?
Прежде чем писать код, полезно понять, что вообще происходит, когда компьютер «выполняет программу» — и почему для первого языка мы выбрали именно Python.
После этой главы вы сможете: различать программу, исходный код,
алгоритм, инструкцию и выражение; объяснить роль байт-кода в CPython; расположить основные
этапы истории Python; различать python.org, документацию, PyPI, PSF и PEP; назвать области
применения и границы Python; запустить print(...) и прочитать
сообщение об ошибке.
Что такое программирование?
Компьютер невероятно быстрый, но абсолютно несамостоятельный. Сам по себе он не умеет вообще ничего — ни открыть игру, ни показать фотографию, ни посчитать сдачу в магазине. Всё, что делает компьютер, он делает потому, что кто-то заранее написал для него точную последовательность команд. Эта последовательность и называется программой, а процесс её написания — программированием.
Текст программы называется исходным кодом (source code). Процессор не выполняет его напрямую: используемый в книге CPython подготавливает код и выполняет его. На первом уровне будем называть этот процесс работой интерпретатора; точная схема с байт-кодом приведена ниже.
Алгоритм, инструкция, выражение
Несколько слов, которые будут встречаться в каждой главе этой книги — полезно один раз договориться, что они означают:
- Алгоритм — конечная, однозначно заданная последовательность шагов, которая для допустимых входных данных приводит к результату или завершению. Результат может зависеть от входных данных или случайности — он не обязан всегда быть одинаковым.
- Инструкция (statement) — одна законченная команда программе, например «выведи текст на экран» или «сохрани число в память».
- Выражение (expression) — часть кода, у которой есть значение, например
2 + 2или"Привет" + "!". Выражения часто находятся внутри инструкций. - Программа — упорядоченный набор инструкций на языке программирования, реализующий один или несколько алгоритмов.
- Машинный код — последовательность чисел, которую напрямую выполняет процессор. Люди почти никогда не пишут его руками — именно для этого и нужны языки вроде Python и переводчики, которые превращают удобный для человека код в машинный.
Интерпретатор и компилятор
Уровень 1 (достаточно для начала). Реализация Python принимает исходный код и организует его выполнение согласно правилам управления потоком. Её обычно называют интерпретатором. Это намеренно упрощённая модель.
Для сравнения: у некоторых языков (например, C или Rust) есть отдельный шаг — компилятор заранее переводит весь исходный код целиком в машинный код, и только потом готовую программу запускают. При обычном запуске CPython пользователь не собирает заранее машинный файл, поэтому Python называют интерпретируемым. Это описание способа запуска, а не утверждение, что компиляции нет.
Уровень 2 (если интересно, что происходит на самом деле). Официальная («эталонная») реализация Python, CPython, на самом деле сначала незаметно компилирует ваш исходный код в промежуточную форму — байт-код (компактные инструкции, непонятные человеку, но быстрые для выполнения), а затем выполняет этот байт-код с помощью Python VM (виртуальной машины). Всё это происходит автоматически и незаметно для вас — просто теперь вы знаете, что «интерпретируемый» не значит «без единого шага компиляции».
Подробнее об устройстве CPython — в разделе «Сообщество и философия Python» этой же главы.
Почему вашим детям стоит научиться программировать?
Программирование — не заявка на профессию «программист», а способ мышления, который пригождается в любой области. Это касается и взрослых, которые садятся за первую программу сами. Три причины, почему этому стоит учиться в любом возрасте:
- Ошибка — это нормально. Программа почти никогда не работает с первого раза, и это не повод расстраиваться — это часть процесса. Программирование учит спокойно находить причину и пробовать снова, вместо того чтобы бояться ошибиться.
- Идея превращается в результат. Мысль «а что если сделать вот так» можно проверить за несколько минут, написав и запустив код, — не нужно ничьё разрешение.
- Это переносимый навык. Умение разложить сложную задачу на простые шаги пригождается далеко за пределами программирования — в учёбе, работе и повседневных задачах.
Почему Python?
Языков программирования — сотни. Python выбран для первого языка по трём практическим причинам:
- Читается почти как обычный текст. Строка
if age >= 18:понятна без перевода. Меньше отвлечённого синтаксиса — больше внимания на саму идею. - Один язык — очень разные результаты. На Python пишут игры, рисуют графику, собирают настольные и веб-приложения, обучают модели искусственного интеллекта. Всё, о чём вы прочитаете в этой книге, — на одном и том же языке.
- Огромное сообщество. Если у вас возникнет вопрос — скорее всего, кто-то уже задавал его и получил ответ. Готовых инструментов (их называют библиотеками или пакетами) для Python написано огромное количество — подробнее об этом чуть позже в этой же главе.