Глоссарий
Словарь веб-разработчика
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
терминов
46
букв
К
Каррирование (Currying)
Каррирование — техника функционального программирования: преобразование функции с N аргументами в последовательность функций, каждая из которых принимает один аргумент. Позволяет частичное применение и создание специализированных функций.
Идея
// Обычная функция
add(2, 3) → 5
// Каррированная
add(2)(3) → 5
// Частично применённая
addTwo = add(2)
addTwo(3) → 5
addTwo(10) → 12
PHP пример
$multiply = fn($a) => fn($b) => $a * $b;
$double = $multiply(2);
$triple = $multiply(3);
echo $double(5); // 10
echo $triple(5); // 15
// Пайплайн
$result = array_map($double, [1, 2, 3, 4]);
// [2, 4, 6, 8]
Практическая ценность
Каррирование редко используется в PHP напрямую, но концепция частичного применения полезна для построения пайплайнов, конфигурирования функций и коллбеков. В JavaScript и Haskell — значительно распространённее.
Кеширование
Кеширование — сохранение результата дорогостоящей операции (SQL-запроса, HTTP-вызова, рендеринга) для повторного использования без повторного вычисления. Правильное кеширование — один из самых эффективных способов ускорить приложение без изменения алгоритмов.Уровни кешированияHTTP-кеш — браузер и прокси кешируют ответы по заголовкам Cache-ControlCDN — edge-узлы кешируют статику и даже динамические ответыКеш приложения — Redis или Memcached хранят результаты запросов и вычисленийOPcache — PHP кеширует скомпилированный байткодQuery cache БД — некоторые СУБД кешируют результаты запросов (в MySQL 8+ убрали)ИнвалидацияСамая сложная часть кеширования — решить, когда данные устарели. Две стратегии: TTL (время жизни) — проще, но данные могут быть устаревшими; event-based invalidation — точнее, но сложнее реализовать.
Кодирование (UTF-8, ASCII, Base64)
Кодирование — способ представления символов в виде байтов. ASCII (1963) — 128 символов, 7 бит. UTF-8 (1993) — кодирование Unicode: ASCII-символы занимают 1 байт, остальные — 2-4 байта. Стандарт де-факто для веба.
UTF-8 в PHP
PHP-строки — последовательности байт, а не символов. strlen('Привет') = 12 (байты), не 6. Для корректной работы с Unicode — mb_ функции: mb_strlen(), mb_substr(), mb_strtolower().
Base64
Кодирует бинарные данные в строку из 64 символов (A-Z, a-z, 0-9, +, /). Увеличивает размер на ~33%. Не шифрование — только кодирование. Использование:
Передача бинарных данных через текстовые протоколы (email, JSON)
Data URL: data:image/png;base64,iVBOR...
JWT (заголовок и payload — Base64URL)
base64_encode('Hello') // "SGVsbG8="
base64_decode('SGVsbG8=') // "Hello"
Конкурентность и параллелизм
Конкурентность (Concurrency) и параллелизм (Parallelism) — связанные, но разные концепции. Конкурентность — о структуре, параллелизм — о выполнении. Роб Пайк: «Конкурентность — о работе со многими вещами одновременно; параллелизм — о выполнении многих вещей одновременно».РазницаКонкурентность — несколько задач прогрессируют, переключаясь между собой. Одно ядро может быть конкурентным через time-slicingПараллелизм — задачи выполняются буквально одновременно на нескольких ядрах/CPUПотоки, процессы, корутиныProcess — изолированное пространство памяти. Дорог для запуска и переключенияThread — общая память, легче процесса. Race conditions!Coroutine / Fiber — кооперативное переключение без ОС. Очень лёгкие (PHP Fibers, Go goroutines, Python async)PHPPHP традиционно синхронный: один запрос = один процесс. Для настоящего параллелизма — Swoole, ReactPHP, или горизонтальное масштабирование через PHP-FPM.
Короткое замыкание (Short-Circuit)
Short-circuit evaluation — оптимизация вычисления логических выражений: если результат уже известен после первого операнда, второй не вычисляется. Распространённое поведение во всех языках программирования.
Правила
A && B — если A = false, B не вычисляется (результат уже false)
A || B — если A = true, B не вычисляется (результат уже true)
Практическое применение
// Безопасная проверка перед обращением
if ($user && $user->isAdmin()) { ... }
// Default value — если первое falsy, вернуть второе
$name = $input['name'] ?? 'Guest';
// Условное выполнение
$debug && error_log($message);
// Guard clause — остановить цепочку
$result = getData() || throw new NotFoundException();
Побочные эффекты
Если второй операнд имеет побочный эффект (запрос к БД, запись в лог) — он не выполнится при short-circuit. Учитывайте это при проектировании условий.