Читать книгу Из повара в программисты - - Страница 46
Глава 8. Профессиональный сленг программистов
ОглавлениеПрограммисты, как и представители любой другой профессии, используют свой сленг. Эти термины и аббревиатуры позволяют быстро и эффективно общаться между собой. Вот некоторые из наиболее распространенных слов и выражений, которые вы можете услышать в IT-сфере:
Баг (bug) – ошибка или дефект в программном обеспечении, которая приводит к неправильной работе системы или приложения.
Дебаг (debug) – процесс выявления и устранения ошибок в коде.
Коммит (commit) – фиксация изменений в системе контроля версий, такой как Git.
Пулл-реквест (pull request) – запрос на внесение изменений в основную ветку репозитория. Другие разработчики могут просмотреть, обсудить и одобрить эти изменения.
Рефакторинг (refactoring) – процесс изменения кода без влияния на его функциональность, направленный на улучшение его структуры и читаемости.
АПИ (API) – Application Programming Interface, набор определений и протоколов, используемых для разработки программного обеспечения и обеспечения взаимодействия между различными компонентами системы.
Скелетон (skeleton) – базовый каркас или структура приложения, на основе которого дальше будет происходить разработка.
Бойлерплейт (boilerplate) – фрагмент кода, который часто повторяется и может быть переиспользован в разных частях проекта.
Тестирование юнитами (unit testing) – метод тестирования, при котором отдельные модули программы проверяются на корректную работу независимо от остальных частей системы.
Код ревью (code review) – процесс проверки исходного кода другими разработчиками для выявления ошибок и улучшения качества кода.
Плюс-один (+1) – обозначение согласия или одобрения в обсуждении кода или других вопросов.
Технический долг (technical debt) – накопление проблем и неэффективных решений в коде, которые не были исправлены вовремя и могут привести к проблемам в долгосрочной перспективе.
Парсинг (parsing) – процесс анализа и преобразования текста или других данных в структурированный формат, который можно обрабатывать программными средствами.
REST (Representational State Transfer) – архитектурный стиль, используемый для разработки веб-сервисов и API, основанный на использовании стандартных методов HTTP для обмена данными между клиентом и сервером.
Тайм-боксинг (timeboxing) – техника управления временем, при которой задачи разбиваются на фиксированные временные интервалы, внутри которых они должны быть выполнены.
Фронтенд (frontend) – часть веб-приложения, ответственная за отображение информации и взаимодействие с пользователем.
Бэкенд (backend) – часть веб-приложения, ответственная за обработку данных, взаимодействие с базами данных и другими сервисами.
Фулл-стек (full-stack) – программист, способный работать сразу с фронтендом и бэкендом веб-приложений.
Патч (patch) – небольшое изменение или исправление кода, которое решает определенную проблему или добавляет новую функциональность.
Спагетти-код (spaghetti code) – сложный и запутанный код, трудный для понимания и поддержки.
Итерация – цикл в процессе разработки, включающий планирование, разработку, тестирование и оценку.
Рефакторинг – процесс переписывания кода для улучшения его читаемости и упрощения без изменения его функциональности.
Техдолг – концепция в программировании, которая отражает дополнительные усилия, которые придется затратить на исправление и улучшение плохо написанного кода.
Юнит-тестирование – процесс тестирования отдельных блоков кода для обнаружения и исправления ошибок на раннем этапе разработки.
Мок (Mock) – объект, который имитирует поведение реального объекта в контролируемом способе. Используется при тестировании для изоляции кода от внешних зависимостей.
Шаблон проектирования (Design pattern) – повторяемая архитектурная конструкция, которая решает определенную проблему в коде.
Синтаксический сахар – синтаксис в языке программирования, который делает код более понятным или приятным для чтения.
Эндпойнт (endpoint) – конкретный URL в веб-приложении, который обрабатывает определенный запрос. Black Box – Система, которую можно понять и оценить, основываясь только на ее входах и выходах, без понимания внутренних механизмов работы.
White Box – Напротив, система, которую можно понять и оценить, зная ее внутренние механизмы работы.
Bleeding Edge – Технология на переднем крае инноваций, которая еще не была протестирована на больших масштабах и может быть рискованной.
Бренч (Branch) – Версия проекта, созданная для разработки определенной функции или исправления.
Ад обратных вызовов (Callback Hell) – Ситуация, когда слишком много функций обратного вызова делает код трудночитаемым и поддерживаемым.
Пахнущий код (Code Smell) – Признаки в коде, которые указывают на более глубокие проблемы.
Зависимость (Coupling) – Степень, в которой один класс или модуль зависит от другого.
Мертвый код (Dead Code) – Части кода, которые никогда не выполняются в работающей программе.
Пробный прогон (Dry Run) – Процесс прогонки программы без ввода реальных данных.
Предварительная загрузка (Eager Loading) – Подход к загрузке данных, когда все необходимые данные загружаются заранее.
Быстрое завершение (Fail-Fast) – Принцип, согласно которому программа должна немедленно сообщать о любых ошибках, которые возникают.
Сборка мусора (Garbage Collection) – Процесс освобождения памяти, которую программа больше не использует.
Хайзенбаг (Heisenbug) – Ошибка, которая исчезает или изменяется, когда вы пытаетесь ее исследовать.
Идемпотентность (Idempotence) – Свойство операции, которое позволяет выполнять ее много раз с тем же результатом.
Неизменяемость (Immutable) – Неизменяемый объект или значение, которое не может быть изменено после создания.
Компиляция во время выполнения (Just-In-Time (JIT) Compilation) – Процесс компиляции программы в машинный код во время выполнения.
Простота (KISS – Keep It Simple, Stupid) – Принцип проектирования, согласно которому системы должны быть как можно проще. Ленивая загрузка (Lazy Loading) – Подход к загрузке данных, когда данные загружаются только при непосредственной необходимости.
Манки-патчинг (Monkey Patching) – Изменение или расширение поведения кода без изменения исходного кода.
Базы данных без SQL (NoSQL) – Категория баз данных, которая не использует структурированный язык запросов (SQL).
Сопоставление объектов и реляционных данных (ORM – Object-Relational Mapping) – Техника, которая связывает базы данных и объектно-ориентированное программирование, позволяя взаимодействовать с базой данных, как если бы это были объекты.
Парное программирование (Pair Programming) – Практика разработки, когда два программиста работают вместе на одном рабочем месте.
Запрос (Query) – Запрос на получение данных из базы данных.
Гонка (Race Condition) – Ситуация, при которой поведение системы зависит от того, в каком порядке выполняются операции.
Масштабируемость (Scalability) – Способность системы обрабатывать увеличивающееся количество работы или расширяться для обслуживания этой работы.
Разработка через тестирование (TDD – Test-Driven Development) – Метод разработки программного обеспечения, при котором сначала пишутся тесты, а затем код, который их проходит.
Система контроля версий (VCS – Version Control System) – Система для отслеживания изменений в коде и координации работы между разработчиками.
Вебхук (Webhook) – Механизм для уведомления одного веб-сервиса об изменениях на другом веб-сервисе.
Межсайтовый скриптинг (XSS – Cross-Site Scripting) – Вид атаки на веб-сайт, при которой злоумышленник вставляет вредоносный код в страницы этого сайта. YAGNI (You Aren't Gonna Need It) – Принцип в программировании, который гласит, что функциональность не следует добавлять до тех пор, пока она действительно не понадобится.
Уязвимость "нулевого дня" (Zero-Day Vulnerability) – Уязвимость, о которой известно злоумышленникам, но для которой еще не существует исправления.
ACID (Атомарность, Согласованность, Изолированность, Надежность) – Свойства, которые гарантируют надежные транзакции в базах данных.
Бэкэнд-как-сервис (Backend-as-a-Service – BaaS) – Облачная услуга, которая предоставляет разработчикам готовый бэкенд для их приложений.
Непрерывная интеграция (CI – Continuous Integration) – Практика разработки, которая требует от разработчиков регулярного слияния своего кода с общей кодовой базой.
Внедрение зависимостей (DI – Dependency Injection) – Техника, при которой один объект предоставляет зависимости другому объекту.
Event-Driven Programming – Парадигма программирования, в которой поток программы определяется событиями, такими как действия пользователя или сообщения от других программ.
Функциональное программирование (Functional Programming – FP) – Парадигма программирования, которая строится вокруг функций и избегает изменяемого состояния и изменяемых данные.
Git – Распределенная система контроля версий, которую часто используют разработчики программного обеспечения.
Протокол передачи гипертекста (HTTP) – Протокол, который используется для передачи данных в World Wide Web.
Инфраструктура как услуга (IaaS – Infrastructure-as-a-Service) – Облачная услуга, которая предоставляет виртуальные ресурсы для вычислений.
Компиляция Just-In-Time (JIT) – Техника компиляции, которая преобразует байт-код в машинный код непосредственно перед выполнением. Промежуточное ПО (Middleware) – Промежуточное ПО, которое обеспечивает связь и управление данными между другими приложениями и системами.
Паттерн Null Object (Null Object Pattern) – Паттерн проектирования, который использует полиморфизм для уменьшения количества проверок на null в коде.
Паттерн Наблюдатель (Observer Pattern) – Паттерн проектирования, который позволяет объектам уведомлять другие объекты об изменениях своего состояния.
Полифил (Polyfill) – Код, который реализует функциональность, которую среда выполнения может не поддерживать нативно.
Оптимизация запроса (Query Optimization) – Процесс выбора наиболее эффективного способа выполнения запроса в базе данных.
REST (Representational State Transfer) – Архитектурный стиль для проектирования сетевых приложений, особенно веб-сервисов.
SOAP (Simple Object Access Protocol) – Протокол обмена структурированной информацией в реализации веб-служб в компьютерных сетях.
Регулирование нагрузки (Throttling) – Техника управления ресурсами, когда количество запросов к серверу ограничивается.
Универсальный уникальный идентификатор (UUID – Universally Unique Identifier) – Уникальный идентификатор, который используется для идентификации информации в компьютерных системах.
Виртуальная частная сеть (VPN – Virtual Private Network) – Технология, которая создает безопасное соединение через небезопасную сеть, обычно Интернет.
Веб-сокеты (WebSockets) – Протокол связи, который обеспечивает полноценный двусторонний обмен данными между клиентом и сервером.
XML (eXtensible Markup Language) – Язык разметки для кодирования документов в формате, который может быть прочитан как машинами, так и людьми.
YAML (YAML Ain't Markup Language) – Человеко-читаемый язык сериализации данных, часто используется для конфигурационных файлов. Развертывание без простоев (Zero Downtime Deployment) – Техника развертывания обновлений приложений без перерывов в обслуживании пользователей.
Алгоритм (Algorithm) – Подробный набор инструкций для выполнения операции или решения проблемы.
Бинарный поиск (Binary Search) – Алгоритм поиска, который находит позицию элемента в отсортированном массиве.
Кэш (Cache) – Компонент, который временно хранит данные для ускорения доступа при последующих запросах.
Извлечение данных (Data Mining) – Процесс извлечения полезной информации из больших наборов данных.
Инкапсуляция (Encapsulation) – Концепция ООП, которая ограничивает доступ к составляющим компонентам объекта.
Функциональное разложение (Functional Decomposition) – Процесс разделения функции на более мелкие, управляемые функции или модули.
Жадный алгоритм (Greedy Algorithm) – Алгоритм, который стремится к наилучшему решению, делая оптимальный выбор на каждом шаге.
Куча (Heap) – Специальная структура данных, которая полностью упорядочена и обычно используется в компьютерной науке.
Наследование (Inheritance) – Концепция ООП, которая позволяет одному классу наследовать свойства и методы другого класса.
JIT-компилятор (Just-In-Time Compiler) – Специальный вид компилятора, который генерирует машинный код непосредственно перед выполнением программы.
Заглушка (Stub) – фиктивная реализация функции или метода, используемая в тестировании программного обеспечения. Заглушки помогают имитировать поведение зависимых компонентов и обеспечивают контролируемую среду для тестирования.
Демо (Demo) – презентация или демонстрация работы программного продукта или функционала перед заказчиком или командой разработчиков. Демо позволяет показать достигнутые результаты и получить обратную связь.
Скалирование (Scaling) – процесс увеличения масштабов системы или инфраструктуры для поддержки роста и увеличения нагрузки. Скалирование может быть горизонтальным (добавление новых серверов) или вертикальным (увеличение ресурсов на существующих серверах). Микросервисы (Microservices) – Архитектурный подход, при котором приложение разбивается на небольшие, независимые и легко масштабируемые сервисы.
Контейнеризация (Containerization) – Методология разработки и развертывания программного обеспечения, при которой приложения и их зависимости упаковываются в контейнеры для обеспечения единообразной и независимой среды выполнения.
Бессерверные вычисления (Serverless Computing) – Подход к разработке и развертыванию приложений, при котором разработчику не нужно управлять физическими или виртуальными серверами, так как код выполняется в управляемой облачной среде.
Совместная разработка и эксплуатация (DevOps) – Методология, объединяющая разработку (Development) и эксплуатацию (Operations) программного обеспечения для повышения скорости и надежности процессов разработки и доставки приложений.
Блокчейн (Blockchain) – Децентрализованная распределенная система, которая использует цепочку блоков для записи и проверки транзакций или другой информации.
Машинное обучение (Machine Learning) – Раздел искусственного интеллекта, который обучает компьютерные системы обнаруживать закономерности и делать предсказания на основе данных, без явного программирования.
Нейронные сети (Neural Networks) – Модели машинного обучения, которые имитируют работу нервной системы человека и используются для распознавания образов, классификации данных, обработки естественного языка и других задач.