Глоссарий

Словарь веб-разработчика

Визначення технічних термінів з 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. Учитывайте это при проектировании условий.