> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/kompiliruemye-i-interpretiruemye-yazyki-programmirovaniya.md).

# Компилируемые и интерпретируемые языки программирования

### **1. Компилируемые языки**

#### **Особенности**

* Исходный код сначала **компилируется в машинный код** (инструкции для процессора).
* Компиляция выполняется **до запуска программы**.
* После компиляции получается **исполняемый файл**, который можно запускать многократно без интерпретатора.
* Обычно быстрее, чем интерпретируемые языки, так как нет необходимости переводить код во время выполнения.

#### **Примеры**

* C, C++, Rust, Go

#### **Пример**

```c
#include <stdio.h>

int main() {
    printf("Hello World\n");
    return 0;
}
```

* Код компилируется в `.exe` (Windows) или бинарный файл (Linux) перед запуском.

***

### **2. Интерпретируемые языки**

#### **Особенности**

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

#### **Примеры**

* Python, JavaScript, Ruby, PHP

#### **Пример**

```python
print("Hello World")
```

* Python-интерпретатор выполняет этот код сразу.

***

### **3. Python: немного сложнее**

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

***

### **4. Сравнение компилируемых и интерпретируемых языков**

| Характеристика       | Компилируемые         | Интерпретируемые      |
| -------------------- | --------------------- | --------------------- |
| Время выполнения     | Быстро                | Медленнее             |
| Подготовка к запуску | Компиляция до запуска | Код выполняется сразу |
| Исполняемый файл     | Есть                  | Нет (исходный код)    |
| Отладка и изменения  | Сложнее               | Легче, интерактивно   |
| Примеры              | C, C++, Rust          | Python, JavaScript    |

***

### **5. Применение для QA и автотестов**

* **Python** — идеальный выбор для автотестов:
  * Быстро писать скрипты и тесты.
  * Легко изменять тестовые сценарии без перекомпиляции.
  * Можно использовать интерактивно через REPL или Jupyter Notebook.

***

💡 **Вывод:**

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