# Установка программ: всё, что устанавливают на курсе<no value>

## В этом уроке

Урок состоит из нескольких коротких глав — в том же порядке, что и в презентации:

1. **Глава 1** — инструменты курса: что делает каждый инструмент
2. **Глава 2** — шаги установки, один за другим
3. **Глава 3** — проверка, что всё установлено, и что мы установим позже на курсе

## Глава 1: Инструменты курса

### Что мы изучим?

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

- **VS Code** — здесь пишут код.
- **Python** — программа, которая выполняет написанный нами код.
- **Git** — инструмент, который хранит историю кода.
- **Docker** — запускает готовые программы, например базу данных, внутри изолированной «коробки».
- **Терминал** — окно, в котором компьютеру дают письменные команды.

### Зачем это нужно?

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

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

#### Как устроен курс

- Курс разделён на **темы** — в том порядке, в котором их проходят, и точно в порядке презентаций: установка, компьютер и операционная система, сети, Python, Git, ООП, бэкенд и базы данных.
- Каждая тема разделена на **уроки**. Каждый урок самостоятелен и имеет одинаковую постоянную структуру: что мы изучим → зачем это нужно → объяснение с основ → синтаксис → пример → разбор построчно → ещё один пример → типичная ошибка → практика → итоги. В теоретических темах (компьютер и операционная система, сети) кода нет — практика там состоит из вопросов на понимание.
- В конце каждого урока есть **5 упражнений** — те же упражнения, что и в файле упражнений к презентации. Решения скрыты и открываются только по нажатию, чтобы вы сначала попробовали сами.
- Вверху и внизу каждого урока есть кнопка **Отметить как пройденный**, а на каждой странице виден ваш общий прогресс по курсу.

{{< box "tip" "Как получить от сайта максимум" >}}
Не просто читайте. Каждый раз, когда появляется пример кода, — наберите его сами (без копирования) и запустите. Набор заставляет мозг заметить каждый символ, и это самый быстрый способ выучить синтаксис.
{{< /box >}}

### Объяснение с основ

#### Что такое код и кто его понимает?

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

#### Python — интерпретатор

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

{{< box "analogy" "Аналогия" >}}
Представьте, что вы пишете рецепт на английском, а повар говорит только по-японски. Интерпретатор — это переводчик, который стоит рядом с поваром, читает рецепт строка за строкой и говорит ему, что делать. Без переводчика рецепт — просто лист бумаги.
{{< /box >}}

#### VS Code — редактор кода

**VS Code** (Visual Studio Code) — это **редактор кода**: программа для написания текста, специально приспособленная для кода. Код можно писать и в Блокноте, но VS Code даёт:

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

Важно понимать: **VS Code сам код не выполняет.** Когда вы нажимаете «Run», он просто просит Python выполнить файл. Поэтому нужно установить и то, и другое.

#### Git — машина времени для вашего кода

**Git** — инструмент **контроля версий**. Он сохраняет «снимки» кода во времени, чтобы можно было вернуться к прежней версии, увидеть, что и когда изменилось, и работать командой над одним и тем же кодом. Подробно мы изучим его в теме по Git. Сегодня мы только устанавливаем его.

#### Docker — готовые программы в коробке

Позже на курсе мы будем работать с **базой данных** — программой, которая управляет информацией и хранит её (MySQL). Установка её прямо на компьютер — долгий процесс, разный в каждой операционной системе. **Docker** решает эту проблему: он запускает готовые программы внутри **контейнера** — изолированной «коробки», в которой уже есть всё, что нужно программе. Одной командой и одинаково у всех. Сегодня мы только устанавливаем его, а использовать будем, когда дойдём до баз данных.

#### Терминал — разговор с компьютером в письменном виде

Чаще всего мы управляем компьютером мышью: щёлкаем по значкам, перетаскиваем файлы. **Терминал** (его ещё называют командной строкой) — другой способ: вы печатаете **команду** текстом, нажимаете Enter, и компьютер выполняет её и отвечает текстом.

Зачем так работать? Потому что многие инструменты разработчика (Python, Git, серверы) работают в основном через команды. В Windows в терминале обычно работает **PowerShell**, а в Mac/Linux — **Bash** или **Zsh**. Различия мы изучим в теме о компьютере и операционной системе.

{{< box "term" "Краткий словарь" >}}
- **Development Environment (среда разработки)** — все инструменты разработки вместе.
- **Interpreter (интерпретатор)** — программа, которая читает код и выполняет его строка за строкой.
- **Code Editor (редактор кода)** — текстовый редактор, приспособленный для написания кода.
- **Version Control (контроль версий)** — система, которая управляет версиями кода во времени.
- **Container (контейнер)** — изолированная «коробка», в которой работает готовая программа со всем, что ей нужно.
- **Terminal (терминал)** — окно, в котором дают письменные команды.
- **Command (команда)** — строка текста, которая просит компьютер что-то сделать.
{{< /box >}}

<!-- docs:start — generated by scripts/intro6/site_docs.py; edit the links there -->

### Официальная документация

- [Using Python on Windows](https://docs.python.org/3/using/windows.html)
- [VS Code — Getting Started with Python](https://code.visualstudio.com/docs/python/python-tutorial)
- [Pro Git — About Version Control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
- [Docker — What is a container?](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/)

<!-- docs:end -->

## Глава 2: Шаги установки

### Что мы изучим?

Устанавливаем четыре инструмента по порядку: **Python**, **VS Code**, **Git** и **Docker**. Каждый инструмент скачивайте только с официального сайта (ссылки ниже), а на большинстве экранов оставляйте параметры по умолчанию. После каждой установки проверьте, что инструмент работает, — и только потом переходите к следующему.

**1. Python**

1. Зайдите на [python.org/downloads](https://www.python.org/downloads/) и скачайте последнюю версию (3.12 или новее).
2. **В Windows — очень важно:** на первом экране установщика отметьте **Add python.exe to PATH**. Без этого терминал не найдёт Python (что такое PATH, объясним в теме о компьютере и операционной системе).
3. Нажмите Install Now и дождитесь окончания.

**2. VS Code**

1. Скачайте с [code.visualstudio.com](https://code.visualstudio.com/) и установите с параметрами по умолчанию.
2. В Windows во время установки также отметьте **Add to PATH** и **Open with Code**.
3. Откройте VS Code → вкладка **Extensions** (значок с квадратиками сбоку) → найдите **Python** (от Microsoft) → Install.
4. (Можно и сейчас, а в теме по базам данных — обязательно) расширение **Database Client** (от Weijan Chen) — интерфейс для просмотра базы данных и выполнения SQL.

**3. Git**

1. Скачайте с [git-scm.com/downloads](https://git-scm.com/downloads) и установите с параметрами по умолчанию.
2. На Mac можно также выполнить в терминале `xcode-select --install`.

**4. Docker**

1. Скачайте **Docker Desktop** с [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/) и установите с параметрами по умолчанию.
2. **В Windows:** Docker Desktop нужен **WSL 2** (слой Windows для запуска Linux). Если установщик просит установить или обновить его — соглашайтесь; иногда нужно перезагрузить компьютер.
3. Откройте **Docker Desktop** и дождитесь окончания запуска (в углу появится **Engine running**). Команды `docker` работают, только пока он открыт.

**5. Терминал**

- **Windows:** терминал уже установлен. Найдите в меню «Пуск» **Terminal** или **PowerShell**.
- **Mac:** приложение **Terminal** (поиск через `Cmd + Space`).
- **Внутри VS Code:** меню **Terminal → New Terminal** (или `` Ctrl + ` ``). Этим терминалом мы будем пользоваться большую часть курса.

{{< box "warn" "После установки — откройте новый терминал" >}}
Терминал, который был открыт ещё до установки, «не знает» о новом инструменте. Если вы получили ошибку, что команда не найдена, — закройте терминал (и VS Code) и откройте снова.
{{< /box >}}

<!-- docs:start — generated by scripts/intro6/site_docs.py; edit the links there -->

### Официальная документация

- [Python Downloads](https://www.python.org/downloads/)
- [Visual Studio Code on Windows](https://code.visualstudio.com/docs/setup/windows)
- [Pro Git — Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [Install Docker Desktop on Windows](https://docs.docker.com/desktop/setup/install/windows-install/)
- [Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install)

<!-- docs:end -->

## Глава 3: Проверка и то, что устанавливается позже

### Синтаксис

Сегодняшний «синтаксис» — команды проверки. После каждой установки проверьте, что инструмент установлен, с помощью флага `--version`, который просто выводит версию инструмента:

```powershell
python --version
git --version
code --version
docker --version
```

Структура каждой команды:

```text
<program name>  <flag>
     python     --version
```

- **Имя программы** — какую программу запустить.
- **Флаг** — слово, которое начинается с `--` (или `-`) и меняет то, что делает программа. `--version` говорит: «ничего не делай, только выведи свою версию».

### Первый пример кода

Откройте терминал и выполните первую команду проверки:

```powershell
python --version
```

**Ожидаемый вывод:**

```text
Python 3.12.4
```

Ваш номер может отличаться — важно, чтобы он начинался с `Python 3`.

### Разбор кода построчно

```powershell
python --version
```

| Часть | Что делает |
|---|---|
| `python` | Имя программы. Терминал ищет программу с таким именем на компьютере (в папках, перечисленных в PATH) и запускает её. |
| пробел | Отделяет имя программы от того, что ей передают. |
| `--version` | Флаг, который говорит Python: «выведи свою версию и выйди». В этом случае Python не выполняет никакого кода. |

А что появляется в выводе:

| Вывод | Значение |
|---|---|
| `Python` | Имя программы, которая ответила, — доказательство, что терминал её нашёл. |
| `3.12.4` | Номер версии: 3 = основная версия, 12 = второстепенная версия, 4 = выпуск с исправлениями ошибок. |

### Ещё один пример

Теперь проверьте всю среду сразу — четыре команды, одна за другой:

```powershell
python --version
git --version
code --version
docker --version
```

**Ожидаемый вывод:**

```text
Python 3.12.4
git version 2.45.1.windows.1
1.93.1
38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40
x64
Docker version 27.3.1, build ce12230
```

- `git version ...` — Git установлен.
- `Docker version ...` — Docker установлен. (Ваши номера могут отличаться.)
- `code --version` выводит три строки: версию VS Code, идентификатор сборки (длинная строка) и тип процессора (`x64` или `arm64`). Все три строки — в порядке.

### Типичная ошибка

**Ошибка:** установить Python в Windows, не отметив **Add python.exe to PATH**, а затем выполнить:

```powershell
python --version
```

и получить:

```text
python : The term 'python' is not recognized as the name of a cmdlet, function,
script file, or operable program.
```

или иногда вместо этого открывается Microsoft Store.

**Почему так происходит?** Терминал ищет программы только в папках, перечисленных в списке под названием **PATH**. Если Python туда не добавлен — для терминала его не существует, даже если он установлен на диске.

**Исправление:**

1. Запустите установщик Python снова → **Modify** → **Next** → отметьте **Add Python to environment variables** → Install.
2. Закройте терминал и откройте снова.
3. Альтернатива в Windows: команда `py --version` (Python Launcher) обычно работает даже без PATH.

{{< box "warn" "Docker: Docker Desktop не открыт" >}}
`docker --version` работает, даже когда Docker Desktop закрыт, — но другие команды (например, `docker ps`) завершатся ошибкой `failed to connect to the docker API`. Исправление: откройте Docker Desktop и дождитесь запуска.
{{< /box >}}

{{< box "warn" "Ещё одна классическая ошибка: Mac" >}}
На Mac команды `python` иногда нет, и работает только `python3`. Это нормально. На Mac используйте `python3` везде, где на сайте написано `python`.
{{< /box >}}

### Что мы установим позже на курсе

Четыре инструмента устанавливаются с первого дня. По ходу курса мы добавим ещё несколько вещей — каждую ровно в той теме, где она нужна. Устанавливать их сейчас не нужно; они перечислены здесь, чтобы у вас был **один полный список** всего, что устанавливается на курсе:

| Что | Когда | Как |
|---|---|---|
| **Аккаунт GitHub** | Тема Git | Регистрация на [github.com](https://github.com) (бесплатно) |
| **Имя и почта для Git** | Тема Git | `git config --global user.name` и `user.email` — один раз на компьютер |
| **Виртуальное окружение** (venv) | Тема бэкенда | `python -m venv .venv` в папке проекта |
| **FastAPI** | Тема бэкенда | `pip install "fastapi[standard]"` внутри venv |
| **База данных MySQL** | Тема баз данных | Контейнер в Docker: `docker run ... mysql:8.4` |
| **Расширение Database Client** | Тема баз данных | В VS Code: Extensions → **Database Client** (от Weijan Chen) |
| **Драйвер mysql-connector-python** | Тема баз данных | `pip install mysql-connector-python` внутри venv |

Сами команды — просто чтобы вы их узнавали. Мы выполним их, когда дойдём до каждой темы, с полным объяснением:

```powershell
# Git topic: one-time identity
git config --global user.name "Dana Cohen"
git config --global user.email "dana@example.com"

# Backend topic: inside a venv
pip install "fastapi[standard]"

# Databases topic: driver + MySQL image
pip install mysql-connector-python
docker pull mysql:8.4
```

- **`pip`** — менеджер пакетов Python. Он скачивает библиотеки из интернета и устанавливает их, как магазин приложений для кода.
- **`docker pull`** — заранее скачивает **образ** (image) MySQL — шаблон, из которого Docker создаёт контейнер. В теме по базам данных `docker run` сам скачает его, если его нет, — но если у вас есть время и хорошее соединение, можно скачать его уже сейчас.

{{< box "tip" "Чек-лист в конце урока" >}}
- `python --version` выводит `Python 3.x`
- `git --version` выводит `git version ...`
- `code --version` выводит версию VS Code
- `docker --version` выводит `Docker version ...`, а Docker Desktop открывается и показывает **Engine running**
- В VS Code установлено расширение **Python** от Microsoft
{{< /box >}}

### Итоги

- **Среда разработки** = пять инструментов: VS Code (писать), Python (выполнять), Git (хранить историю), Docker (запускает готовые программы, например базу данных), терминал (давать команды).
- **Python — интерпретатор**: он читает наш код и выполняет его строка за строкой. VS Code только просит его запустить код.
- **В Windows отметьте Add python.exe to PATH** при установке Python, а Docker Desktop нужен WSL 2.
- Установку каждого инструмента проверяйте с `--version`.
- Ошибка «not recognized» обычно значит, что инструмент не указан в **PATH** или терминал был открыт до установки.
- **Позже на курсе** мы добавим: аккаунт GitHub и `git config` (Git), venv и FastAPI (бэкенд), MySQL в Docker, Database Client и драйвер (базы данных).

<!-- docs:start — generated by scripts/intro6/site_docs.py; edit the links there -->

### Официальная документация

- [Python — Installing Python Modules](https://docs.python.org/3/installing/index.html)
- [Pro Git — First-Time Git Setup](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
- [Docker Hub — MySQL official image](https://hub.docker.com/_/mysql)
- [FastAPI — Virtual Environments](https://fastapi.tiangolo.com/virtual-environments/)

<!-- docs:end -->

<!-- exercises:start — generated by scripts/intro6/sync_site_exercises.py; edit scripts/intro6/exercises/ -->
## Практика

Вопросы на понимание материала урока — без кода.

### Упражнение 1: Пять инструментов — пять задач

Сопоставьте каждый инструмент с его задачей:

| Инструмент | Задача |
|---|---|
| Python | ? |
| VS Code | ? |
| Git | ? |
| Терминал | ? |
| Docker | ? |

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

{{< solution >}}
| Инструмент | Задача |
|---|---|
| Python | (б) — интерпретатор: читает код и выполняет его |
| VS Code | (г) — редактор кода: писать, запускать и отлаживать |
| Git | (а) — машина времени: история каждого изменения в коде |
| Терминал | (в) — разговор с компьютером письменными командами |
| Docker | (д) — запускает готовые программы, например MySQL, в изолированном контейнере |
{{< /solution >}}

### Упражнение 2: «The term 'python' is not recognized»

Студент установил Python, открыл терминал, который был открыт ещё раньше, набрал `python --version` и получил сообщение:

```text
python : The term 'python' is not recognized as the name of a cmdlet...
```

1. О чём говорит это сообщение?
2. Назовите две возможные причины проблемы и что делать в каждом случае.

{{< solution >}}
1. Терминал не нашёл программу с именем `python` ни в одной из папок, перечисленных в **PATH**.
2. Две возможные причины:
   - **Терминал был открыт до установки** — он «не знает» об изменении PATH. Закройте его и откройте новый терминал.
   - **При установке не отметили галочку Add python.exe to PATH** — запустите установщик снова (Modify) и отметьте её или используйте `py --version`.

(На Mac команда обычно `python3`.)
{{< /solution >}}

### Упражнение 3: «failed to connect to the docker API»

Студент установил Docker Desktop. Команда `docker --version` работает и выводит версию, но команда `docker ps` завершается ошибкой:

```text
failed to connect to the docker API
```

1. Как может одна команда Docker работать, а другая — нет?
2. Что нужно сделать, чтобы это исправить?
3. Какой дополнительный компонент должен быть установлен в Windows, чтобы Docker Desktop работал?

{{< solution >}}
1. `docker --version` только выводит версию инструмента командной строки — ему не нужен движок Docker. `docker ps` должен обращаться к **движку**, а движок работает только пока **открыт Docker Desktop**.
2. Откройте Docker Desktop и дождитесь окончания запуска (появится **Engine running**), затем выполните команду снова.
3. **WSL 2** — слой Windows для запуска Linux. Если установщик просит установить или обновить его — соглашайтесь; иногда нужно перезагрузить компьютер.
{{< /solution >}}

### Упражнение 4: Что устанавливают и когда?

Для каждого пункта списка напишите, **когда** он устанавливается на курсе: (а) в первый день, (б) в теме Git, (в) в теме бэкенда, (г) в теме баз данных.

| Пункт | Когда? |
|---|---|
| Python | ? |
| Аккаунт GitHub | ? |
| FastAPI | ? |
| Docker Desktop | ? |
| mysql-connector-python | ? |
| VS Code | ? |

{{< solution >}}
| Пункт | Когда? |
|---|---|
| Python | (а) в первый день |
| Аккаунт GitHub | (б) в теме Git — там же задают имя и почту командой `git config` |
| FastAPI | (в) в теме бэкенда — устанавливается через `pip` внутри виртуального окружения |
| Docker Desktop | (а) в первый день — но используется только в базах данных |
| mysql-connector-python | (г) в теме баз данных — драйвер, который соединяет Python с MySQL |
| VS Code | (а) в первый день |

Правило: **четыре инструмента** (Python, VS Code, Git, Docker) устанавливаются в первый день. **Библиотеки и аккаунты** добавляются, когда вы доходите до темы, где они нужны.
{{< /solution >}}

### Упражнение 5: Чтение вывода проверки

Студент выполнил четыре команды проверки и получил:

```text
Python 3.12.4
git version 2.45.1.windows.1
1.93.1
38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40
x64
docker : The term 'docker' is not recognized as the name of a cmdlet...
```

1. Какие инструменты установлены и работают?
2. `code --version` вывел три строки. Что означает каждая строка?
3. В чём проблема в последней строке и что делать?

{{< solution >}}
1. Установлены **Python**, **Git** и **VS Code** — каждый вывел свою версию.
2. Три строки VS Code:
   - `1.93.1` — версия VS Code.
   - Длинная строка — идентификатор сборки (commit).
   - `x64` — тип процессора, для которого собрана версия.
3. Терминал не находит `docker` — Docker не установлен или терминал был открыт **до** установки. Установите Docker Desktop (если нужно), закройте терминал и откройте новый, затем снова проверьте командой `docker --version`.
{{< /solution >}}

<!-- exercises:end -->
