Глосарій
Словник веб-розробника
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
термінів
47
літер
К
Каррінг (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
// Пайплайн
$transform = 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. Враховуйте це при проєктуванні умов.