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

### **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** — интерпретируемый язык с промежуточной компиляцией в байт-код.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/kompiliruemye-i-interpretiruemye-yazyki-programmirovaniya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
