Перейти к содержанию

О чём этот раздел?

О программировании. Паттерны, сниппеты, обзоры библиотек и так далее. Можно использовать для подготовки к собесам.

Ссылки

Базовые определения

Интроспекция

Интроспекция - это возможность запросить тип и данные о его внутренней структуре

Область видимости переменных

Область видимости переменных - это такое свойство, которое определяет, можно ли использовать какую-то переменную и как её можно использовать из разных частей программы.

Процесс

Процесс - это такая сущность, которая создается ОС для выполнения программы. Процесс имеет собственное адресное пространство, дескрипторы и так далее.
1. В Python процессы это копии интерпретатора.

Поток

Поток - это объект внутри процесса, который что-то выполняет. Поток использует все доступные процессу ресурсы (адресное пространство и т.д.)

Класс (в ООП)

Класс, это такая логическая структура которая содержит данные и функции, которые отражают какое либо поведение или моделируют какую либо сущность. Класс описывает устройство объекта.

Метакласс

Метакласс - это класс, который управляет созданием класса в рантайме.

Inversion of Control

IoC (Inversion of Control, Инверсия контроля) - это паттерн, предназначенный для передачи вызова какого либо компонента внешнему обработчику.

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

Dependency Injection

Dependency Injection (DI, инъекция зависимостей) - это одна из форм IoC. Обработчики должны передаваться в объект через конструкторы, параметры, сеттеры, а не создаваться напрямую в самом объекте, который использует их.

IO bound

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

Основная стратегия для улучшения производительности таких задач заключается в параллельной или асинхронной обработке I/O чтобы минимизировать время ожидания и максимально использовать доступные ресурсы.

CPU bound

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

Основная стратегия улучшения производительности - оптимизация вычислений, параллелизация (многопоточность, многопроцессорность), раскидывание задач на несколько серверов.