# Software Dictionary

> Clear, plain-English definitions of the software terms developers hear every day — from APIs and Docker to closures and LLMs.

Each term page starts with a one-sentence definition, followed by an explanation, key takeaways, a code example and FAQs. Content is written in plain English and may be quoted with a link to the term page. Every term and comparison page is also available as Markdown: add .md to its address, as in /terms/api.md.

## Programming Fundamentals

Core concepts you meet in every language: variables, functions, asynchronous code and programming paradigms. [All Programming Fundamentals terms](https://softwaredictionary.org/categories/programming)

- [Abstraction](https://softwaredictionary.org/terms/abstraction): Abstraction is hiding the complicated details of how something works behind a simpler interface, so code can use it by knowing only what it does.
- [Algorithm](https://softwaredictionary.org/terms/algorithm): An algorithm is a finite, step-by-step set of instructions for solving a problem or completing a task, such as sorting a list or finding the shortest route.
- [Array](https://softwaredictionary.org/terms/array): An array is an ordered collection of values stored under one name, where each item is accessed by its numeric position, called an index, usually starting at 0.
- [Async/Await](https://softwaredictionary.org/terms/async-await): Async/await is a syntax for writing asynchronous code that reads like ordinary step-by-step code, pausing at each await until a promise or task finishes.
- [Base64](https://softwaredictionary.org/terms/base64): Base64 is a way to write any binary data, such as an image or a key, using only 64 safe text characters, so it can pass through systems built for text.
- [Big O Notation](https://softwaredictionary.org/terms/big-o-notation): Big O notation describes how an algorithm's running time or memory use grows as its input gets larger, focusing on the growth rate rather than exact speed.
- [Callback](https://softwaredictionary.org/terms/callback): A callback is a function passed as an argument to another function, which then calls it later, for example when a task finishes or an event happens.
- [Character Encoding](https://softwaredictionary.org/terms/character-encoding): Character encoding is the set of rules that turns text into bytes and back again, so any letter can be stored and sent; today the standard is UTF-8.
- [Class](https://softwaredictionary.org/terms/class): A class is a blueprint in object-oriented programming that defines the data and behavior shared by a group of objects, which are created from it as instances.
- [Closure](https://softwaredictionary.org/terms/closure): A closure is a function that remembers the variables from the scope where it was created, so it can keep using them even after the outer function has returned.
- [Compiler](https://softwaredictionary.org/terms/compiler): A compiler is a program that translates source code written in a programming language into a lower-level form, such as machine code, that a computer can run.
- [Concurrency](https://softwaredictionary.org/terms/concurrency): Concurrency is a program's ability to make progress on several tasks in overlapping time periods, such as serving many users at once rather than one at a time.
- [Constructor](https://softwaredictionary.org/terms/constructor): A constructor is a special method that runs when a new object is created from a class, setting up its starting values so it is ready to use.
- [Data Type](https://softwaredictionary.org/terms/data-type): A data type is a classification that tells a program what kind of value a piece of data holds, such as a number or text, and which operations work on it.
- [Debugging](https://softwaredictionary.org/terms/debugging): Debugging is the process of finding out why a program misbehaves, locating the faulty code and fixing it, often with the help of a tool called a debugger.
- [Dynamic Typing](https://softwaredictionary.org/terms/dynamic-typing): Dynamic typing means types belong to values, not variables, and are checked while the program runs, so a variable can hold a number now and a string later.
- [Encapsulation](https://softwaredictionary.org/terms/encapsulation): Encapsulation is the practice of bundling data with the methods that use it and hiding internal details, so outside code works only through a public interface.
- [Enum](https://softwaredictionary.org/terms/enum): An enum is a data type that defines a fixed set of named values, such as an order's possible statuses, so code can't use a value outside that set.
- [Exception](https://softwaredictionary.org/terms/exception): An exception is an event that interrupts a program's normal flow when an error occurs, which code can catch and handle instead of letting the program crash.
- [Framework](https://softwaredictionary.org/terms/framework): A framework is a reusable foundation of code, tools, and conventions that provides the structure of an application, so developers only fill in their own logic.
- [Function](https://softwaredictionary.org/terms/function): A function is a named, reusable block of code that performs a specific task, optionally taking inputs called parameters and returning a result.
- [Functional Programming](https://softwaredictionary.org/terms/functional-programming): Functional programming is a style of building software from pure functions that avoid changing shared data, making code more predictable and easier to test.
- [Garbage Collection](https://softwaredictionary.org/terms/garbage-collection): Garbage collection is automatic memory management in which the language runtime finds data a program can no longer use and frees that memory for reuse.
- [Generics](https://softwaredictionary.org/terms/generics): Generics are a language feature that lets you write functions, classes, and types that work with many data types while still keeping full type safety.
- [Higher-Order Function](https://softwaredictionary.org/terms/higher-order-function): A higher-order function is a function that takes another function as an argument, returns a function, or both, so behavior can be passed around like data.
- [IDE](https://softwaredictionary.org/terms/ide): An IDE (integrated development environment) is an application that combines a code editor, a debugger, build commands and other developer tools in one place.
- [Immutability](https://softwaredictionary.org/terms/immutability): Immutability means a value cannot be changed after it is created, so every update produces a new value instead of modifying the original in place.
- [Inheritance](https://softwaredictionary.org/terms/inheritance): Inheritance is an object-oriented programming feature that lets a new class reuse, extend, and override the fields and methods of an existing class.
- [Interface](https://softwaredictionary.org/terms/interface): An interface is a named set of method and property signatures that a type promises to provide, without saying how those members are implemented.
- [Interpreter](https://softwaredictionary.org/terms/interpreter): An interpreter is a program that runs source code directly, step by step, instead of first translating the whole program into a separate executable file.
- [Iterator](https://softwaredictionary.org/terms/iterator): An iterator is an object that lets code step through the items of a collection one at a time, remembering its position, without exposing how the data is stored.
- [JIT Compilation](https://softwaredictionary.org/terms/jit-compilation): JIT compilation turns the busiest parts of a program into machine code while it runs, combining an interpreter's quick start with compiled speed.
- [Lambda Function](https://softwaredictionary.org/terms/lambda-function): A lambda function is a small function written inline without a name, usually passed straight to another function such as a sorting or filtering helper.
- [Library](https://softwaredictionary.org/terms/library): A library is a collection of ready-made code, such as functions and classes, that a program calls to do common jobs without writing that code itself.
- [Loop](https://softwaredictionary.org/terms/loop): A loop is a control structure that repeats a block of code, either a set number of times, once for each item in a collection, or while a condition stays true.
- [Memoization](https://softwaredictionary.org/terms/memoization): Memoization is an optimization technique that stores the results of function calls and returns the saved result when the same inputs occur again.
- [Method](https://softwaredictionary.org/terms/method): A method is a function that belongs to an object or class and is called on it, so it can read and change that object's data, as in `user.rename("Ada")`.
- [Null](https://softwaredictionary.org/terms/null): Null is a special value that means "no value here", used when a variable deliberately refers to no object or data at all instead of holding something real.
- [Object](https://softwaredictionary.org/terms/object): An object is a bundle of related data and behavior: values in named fields, often called properties, and functions that work on them, called methods.
- [OOP](https://softwaredictionary.org/terms/oop): OOP, or object-oriented programming, is a way of structuring code around objects that bundle related data together with the functions that act on that data.
- [Package Manager](https://softwaredictionary.org/terms/package-manager): A package manager is a tool that installs, updates and removes software packages and their dependencies, resolving versions automatically.
- [Parallelism](https://softwaredictionary.org/terms/parallelism): Parallelism is running several computations at literally the same time, on multiple CPU cores, GPUs or machines, so a large job finishes faster.
- [Parameter](https://softwaredictionary.org/terms/parameter): A parameter is a named input in a function's definition, and an argument is the actual value passed in that place when the function is called.
- [Pointer](https://softwaredictionary.org/terms/pointer): A pointer is a variable that stores the memory address of another value instead of the value itself, letting code read or change that data indirectly.
- [Polymorphism](https://softwaredictionary.org/terms/polymorphism): Polymorphism is the ability of code to work with values of different types through one shared interface, with each type supplying its own behavior.
- [Promise](https://softwaredictionary.org/terms/promise): A promise is an object that represents the eventual result of an asynchronous operation, letting code react to success or failure once the work completes.
- [Pure Function](https://softwaredictionary.org/terms/pure-function): A pure function always returns the same output for the same input and has no side effects, meaning it does not change anything outside itself.
- [Recursion](https://softwaredictionary.org/terms/recursion): Recursion is a technique in which a function solves a problem by calling itself on smaller versions of the same problem until it reaches a simple base case.
- [Regular Expression](https://softwaredictionary.org/terms/regular-expression): A regular expression, or regex, is a pattern written in a compact syntax that describes text to search for, validate, extract or replace within strings.
- [Scope](https://softwaredictionary.org/terms/scope): Scope is the region of a program where a name, such as a variable or function, is visible and can be used, which decides what each line of code can reach.
- [SDK](https://softwaredictionary.org/terms/sdk): An SDK (software development kit) is a package of tools, libraries, documentation and examples for building software for a particular platform or service.
- [Stack Trace](https://softwaredictionary.org/terms/stack-trace): A stack trace is the list of function calls in progress when an error happened, from the line that failed back to where the program started.
- [Static Typing](https://softwaredictionary.org/terms/static-typing): Static typing means the types of variables and expressions are checked before the program runs, usually by the compiler, so many type errors are caught early.
- [String](https://softwaredictionary.org/terms/string): A string is a data type that represents text as an ordered sequence of characters, such as a name, a sentence, a URL, or the contents of a file.
- [Type Inference](https://softwaredictionary.org/terms/type-inference): Type inference is a compiler feature that works out the type of a variable or expression automatically, so you don't have to write every type annotation.
- [Variable](https://softwaredictionary.org/terms/variable): A variable is a named storage location in a program that holds a value, such as a number or a piece of text, which the code can read and change as it runs.

## Web Development

The languages, protocols and rendering strategies behind applications that run in the browser. [All Web Development terms](https://softwaredictionary.org/categories/web)

- [AJAX](https://softwaredictionary.org/terms/ajax): AJAX (Asynchronous JavaScript and XML) is a technique for loading server data in the background with JavaScript and updating part of a page without a reload.
- [Angular](https://softwaredictionary.org/terms/angular): Angular is a complete, TypeScript-based web framework from Google with components, routing, forms, an HTTP client and dependency injection built in.
- [Bundler](https://softwaredictionary.org/terms/bundler): A bundler is a build tool that combines JavaScript modules and their dependencies into a few optimized files that browsers can download and run quickly.
- [CMS](https://softwaredictionary.org/terms/cms): A CMS (content management system) is software that lets people create, edit and publish website content through an editor instead of writing code.
- [Code Splitting](https://softwaredictionary.org/terms/code-splitting): Code splitting is a technique that breaks a web app's JavaScript into smaller chunks loaded on demand, so the first page load downloads only the code it needs.
- [Cookie](https://softwaredictionary.org/terms/cookie): A cookie is a small piece of data a website asks the browser to store and send back with later requests, often used to keep users logged in.
- [Core Web Vitals](https://softwaredictionary.org/terms/core-web-vitals): Core Web Vitals are three metrics that measure a page's real-user experience: loading speed (LCP), responsiveness (INP), and visual stability (CLS).
- [CORS](https://softwaredictionary.org/terms/cors): CORS is a browser security mechanism that lets a server declare which other websites may read its responses when they make requests from JavaScript.
- [CSR](https://softwaredictionary.org/terms/csr): CSR is a rendering approach where the browser downloads a mostly empty HTML page plus JavaScript, then builds the page content on the user's device.
- [CSS](https://softwaredictionary.org/terms/css): CSS is the style sheet language that controls how HTML content looks on screen, including colors, fonts, spacing, layout, and animations.
- [CSS Grid](https://softwaredictionary.org/terms/css-grid): CSS Grid is a two-dimensional CSS layout system that arranges elements into rows and columns at the same time, making complex page layouts simple to build.
- [Debounce](https://softwaredictionary.org/terms/debounce): Debouncing delays a function until a burst of events has paused for a set time, so a search box sends one request after typing stops, not one per keystroke.
- [DOM](https://softwaredictionary.org/terms/dom): The DOM is the browser's in-memory tree of objects representing a web page, which JavaScript can read and change to update what the user sees.
- [Domain Name](https://softwaredictionary.org/terms/domain-name): A domain name is the human-readable address of a website, such as example.com, which the DNS system translates into the IP address of the server that hosts it.
- [ES Modules](https://softwaredictionary.org/terms/es-modules): ES modules are JavaScript's built-in module system: each file keeps its own scope and shares code with other files through import and export.
- [Flexbox](https://softwaredictionary.org/terms/flexbox): Flexbox is a CSS layout model that arranges items in a single row or column and controls how they grow, shrink, align, and share the available space.
- [Frontend](https://softwaredictionary.org/terms/frontend): The frontend is the part of an application that runs in front of the user, usually in the browser, drawing the interface and responding to clicks and typing.
- [HTML](https://softwaredictionary.org/terms/html): HTML is the markup language that defines the structure and content of web pages, such as headings, paragraphs, links, images, and forms.
- [HTTP](https://softwaredictionary.org/terms/http): HTTP is the protocol that browsers, apps, and servers use to exchange web pages and data through a simple cycle of requests and responses.
- [HTTP Header](https://softwaredictionary.org/terms/http-header): An HTTP header is a name-and-value line sent with an HTTP request or response, carrying details such as the content type, caching rules or credentials.
- [HTTP Status Code](https://softwaredictionary.org/terms/http-status-code): An HTTP status code is a three-digit number a server sends with every response to tell the client whether the request succeeded, failed, or needs more action.
- [Hydration](https://softwaredictionary.org/terms/hydration): Hydration is the step where JavaScript in the browser takes over server-rendered HTML, attaching event handlers and state so the page becomes interactive.
- [iframe](https://softwaredictionary.org/terms/iframe): An iframe is an HTML element that embeds another web page inside the current page, commonly used for videos, maps, payment forms and third-party widgets.
- [JavaScript](https://softwaredictionary.org/terms/javascript): JavaScript is the programming language that runs in web browsers to make pages interactive, and it also runs on servers through runtimes like Node.js.
- [jQuery](https://softwaredictionary.org/terms/jquery): jQuery is a JavaScript library that made selecting elements, handling events, animating and making AJAX requests easy with one short, cross-browser syntax.
- [JSX](https://softwaredictionary.org/terms/jsx): JSX is a JavaScript syntax extension for writing HTML-like markup inside code, used mainly with React to describe what the user interface should look like.
- [Lazy Loading](https://softwaredictionary.org/terms/lazy-loading): Lazy loading is a technique that delays loading images, videos, scripts or other resources until they are actually needed, usually when they scroll into view.
- [Local Storage](https://softwaredictionary.org/terms/local-storage): Local storage is a browser feature that lets a website save text as key-value pairs on the user's device, where it stays even after the browser is closed.
- [Media Query](https://softwaredictionary.org/terms/media-query): A media query is a CSS rule that applies styles only when the device or browser matches conditions such as screen width, orientation, or a dark color scheme.
- [Minification](https://softwaredictionary.org/terms/minification): Minification is the process of shrinking code files by removing whitespace, comments and long names without changing behavior, so web pages download faster.
- [Next.js](https://softwaredictionary.org/terms/nextjs): Next.js is a React framework that adds routing, server-side rendering, static generation and server code, so a whole web app can be built as one project.
- [npm](https://softwaredictionary.org/terms/npm): npm is Node.js's default package manager and the world's largest software registry; it downloads a project's dependencies and tracks their versions.
- [Polyfill](https://softwaredictionary.org/terms/polyfill): A polyfill is code that adds a modern web feature to older browsers that lack it, so developers can use the standard API everywhere without special cases.
- [Progressive Enhancement](https://softwaredictionary.org/terms/progressive-enhancement): Progressive enhancement is a web design strategy that starts with a basic page that works for everyone, then adds richer features where browsers support them.
- [PWA](https://softwaredictionary.org/terms/pwa): A PWA is a website built with modern web APIs so it can be installed on a device, work offline, and behave much like a native app from a single codebase.
- [React](https://softwaredictionary.org/terms/react): React is an open-source JavaScript library for building user interfaces from reusable components that update automatically when their data changes.
- [React Hooks](https://softwaredictionary.org/terms/react-hooks): React hooks are functions such as useState and useEffect that let a function component keep state, run side effects and share logic with others.
- [Responsive Design](https://softwaredictionary.org/terms/responsive-design): Responsive design is an approach to building web pages whose layout, images, and text adapt automatically to any screen size, from phones to large monitors.
- [SEO](https://softwaredictionary.org/terms/seo): SEO is the practice of improving a website's content and technical setup so that search engines can find, understand, and rank its pages for relevant searches.
- [Service Worker](https://softwaredictionary.org/terms/service-worker): A service worker is a script the browser runs in the background, apart from the page, to intercept network requests and enable offline use and push messages.
- [SPA](https://softwaredictionary.org/terms/spa): An SPA is a web application that loads a single HTML page and then updates content with JavaScript, so moving between views does not reload the page.
- [SSG](https://softwaredictionary.org/terms/ssg): SSG is a technique that renders a website's pages to plain HTML files at build time, so servers or CDNs can deliver them instantly without extra work.
- [SSR](https://softwaredictionary.org/terms/ssr): SSR is a technique where the server builds the full HTML for a page on each request, so users and search engines receive ready-to-read content immediately.
- [State Management](https://softwaredictionary.org/terms/state-management): State management is how an application stores, updates and shares the data that changes while it runs, and keeps the interface in sync with it.
- [Svelte](https://softwaredictionary.org/terms/svelte): Svelte is a front-end framework that compiles components into small, efficient JavaScript at build time instead of running a large framework in the browser.
- [Tailwind CSS](https://softwaredictionary.org/terms/tailwind-css): Tailwind CSS is a utility-first CSS framework: instead of custom stylesheets, you style elements with small, single-purpose classes right in your HTML.
- [Throttling](https://softwaredictionary.org/terms/throttling): Throttling makes a function run at most once per interval, however often it is called, so scroll and resize handlers update steadily without running every time.
- [Transpiler](https://softwaredictionary.org/terms/transpiler): A transpiler is a tool that translates source code from one language or language version into another at a similar level, such as TypeScript into JavaScript.
- [Tree Shaking](https://softwaredictionary.org/terms/tree-shaking): Tree shaking is a build optimization that removes code a program never uses from the final bundle, based on which ES module exports are actually imported.
- [TypeScript](https://softwaredictionary.org/terms/typescript): TypeScript is a programming language built on JavaScript that adds static types, catching many bugs before the code runs, and compiles to plain JavaScript.
- [UI Component](https://softwaredictionary.org/terms/ui-component): A UI component is a self-contained, reusable piece of an interface, such as a button, a form or a card, that bundles its markup, style and behavior.
- [URL](https://softwaredictionary.org/terms/url): A URL is the address of a resource on the web, made of parts such as a scheme, a host, a path and a query string that tell a browser where and how to fetch it.
- [Virtual DOM](https://softwaredictionary.org/terms/virtual-dom): The virtual DOM is a lightweight copy of a page's element tree kept in JavaScript memory, which UI libraries compare to update the real DOM efficiently.
- [Vite](https://softwaredictionary.org/terms/vite): Vite is a fast build tool for web projects: it serves code to the browser almost instantly in development and bundles it into optimized files for production.
- [Vue](https://softwaredictionary.org/terms/vue): Vue is an open-source JavaScript framework for building user interfaces from components, known for its gentle learning curve and reactive data.
- [Web Accessibility](https://softwaredictionary.org/terms/web-accessibility): Web accessibility is the practice of building websites that everyone can use, including people who rely on screen readers, keyboards, captions, or zoom.
- [Web Browser](https://softwaredictionary.org/terms/browser): A web browser is an application that fetches web pages from servers and turns their HTML, CSS, and JavaScript into the interactive pages you see on screen.
- [Web Worker](https://softwaredictionary.org/terms/web-worker): A web worker is a browser feature that runs JavaScript on a background thread, so heavy computations don't freeze the page's user interface while they run.
- [WebAssembly](https://softwaredictionary.org/terms/webassembly): WebAssembly is a compact binary code format that runs in web browsers at near-native speed, letting languages like C++, Rust, and Go power fast web code.
- [Webpack](https://softwaredictionary.org/terms/webpack): Webpack is a module bundler that follows an app's imports and combines its JavaScript, CSS, images and other files into optimized bundles for the browser.
- [WebSocket](https://softwaredictionary.org/terms/websocket): WebSocket is a protocol that keeps a single connection open between a browser and a server so both sides can send each other messages instantly at any time.

## Backend & APIs

Server-side services, API design and the ways software systems talk to each other. [All Backend & APIs terms](https://softwaredictionary.org/categories/backend)

- [.NET](https://softwaredictionary.org/terms/dotnet): .NET is Microsoft's free, open-source developer platform for building web, desktop, mobile, cloud and game applications, mainly in C#.
- [API](https://softwaredictionary.org/terms/api): An API is a set of rules that lets one piece of software request data or actions from another in a predictable, documented way.
- [API Gateway](https://softwaredictionary.org/terms/api-gateway): An API gateway is a server that sits in front of a group of backend services and acts as the single entry point that receives, checks, and routes API requests.
- [API Versioning](https://softwaredictionary.org/terms/api-versioning): API versioning is the practice of labeling and managing changes to an API so existing clients keep working while new versions add or change features.
- [Backend](https://softwaredictionary.org/terms/backend): The backend is the server side of an application: the code, databases and services that store data, apply business rules and answer the frontend's requests.
- [Background Job](https://softwaredictionary.org/terms/background-job): A background job is a task that a server runs outside the normal request-response cycle, so slow work like sending emails doesn't make users wait.
- [Backpressure](https://softwaredictionary.org/terms/backpressure): Backpressure is a mechanism that lets a slow consumer signal a fast producer to slow down, so data doesn't pile up faster than it can be processed.
- [Cache](https://softwaredictionary.org/terms/cache): A cache is a fast, temporary storage layer that keeps copies of frequently used data so later requests can be served quickly without repeating slow work.
- [Cron Job](https://softwaredictionary.org/terms/cron-job): A cron job is a command or script that runs automatically on a repeating schedule, such as every night at 2 a.m., defined by a five-field cron expression.
- [CRUD](https://softwaredictionary.org/terms/crud): CRUD stands for create, read, update and delete, the four basic operations for working with stored data in databases, APIs and most business applications.
- [Django](https://softwaredictionary.org/terms/django): Django is an open-source Python web framework that comes with an ORM, an admin panel, authentication and security protections, so teams can build quickly.
- [Endpoint](https://softwaredictionary.org/terms/endpoint): An endpoint is a specific URL, combined with an HTTP method, where an API receives requests and returns responses for one particular resource or action.
- [Event Loop](https://softwaredictionary.org/terms/event-loop): The event loop is a mechanism that lets a single thread handle many tasks by running callbacks one at a time as events and I/O results become ready.
- [Event Streaming](https://softwaredictionary.org/terms/event-streaming): Event streaming is the practice of recording events as a continuous, ordered and durable log that many applications can read, replay and process in real time.
- [Exponential Backoff](https://softwaredictionary.org/terms/exponential-backoff): Exponential backoff is a retry strategy that waits longer after each failed attempt, such as 1, 2, 4 and 8 seconds, so a struggling service can recover.
- [Express](https://softwaredictionary.org/terms/express): Express is the most widely used Node.js web framework: a minimal layer that handles routing, requests and responses through a chain of middleware functions.
- [FastAPI](https://softwaredictionary.org/terms/fastapi): FastAPI is a modern Python API framework that uses standard type hints to validate requests, convert data and generate OpenAPI documentation automatically.
- [Flask](https://softwaredictionary.org/terms/flask): Flask is a lightweight Python web framework offering routing, request handling and templates, leaving the database and project structure to the developer.
- [GraphQL](https://softwaredictionary.org/terms/graphql): GraphQL is a query language and runtime for APIs that lets clients request exactly the data they need, often from a single endpoint in a single request.
- [gRPC](https://softwaredictionary.org/terms/grpc): gRPC is an open-source framework for calling functions on a remote server as if they were local, using Protocol Buffers and HTTP/2 for fast, typed messages.
- [Health Check](https://softwaredictionary.org/terms/health-check): A health check is a small automated test, usually an HTTP endpoint, that reports whether a service is up and able to handle requests, so failures show fast.
- [HTTP Caching](https://softwaredictionary.org/terms/http-caching): HTTP caching is the reuse of stored HTTP responses by browsers, CDNs and proxies, controlled by headers like Cache-Control and ETag, to avoid repeat downloads.
- [HTTP Method](https://softwaredictionary.org/terms/http-method): An HTTP method is the verb in an HTTP request, such as GET, POST, PUT, PATCH or DELETE, that tells the server what action to perform on the requested resource.
- [Idempotency](https://softwaredictionary.org/terms/idempotency): Idempotency is the property of an operation that produces the same result whether it runs once or many times, so accidentally repeating a request is safe.
- [JSON](https://softwaredictionary.org/terms/json): JSON is a lightweight, text-based format for storing and exchanging structured data as key-value pairs and lists, readable by both humans and machines.
- [Kafka](https://softwaredictionary.org/terms/kafka): Apache Kafka is a distributed event streaming platform that stores events in durable, ordered logs for many services to publish, read in real time or replay.
- [Laravel](https://softwaredictionary.org/terms/laravel): Laravel is a PHP framework for full web applications, with an elegant syntax and built-in routing, the Eloquent ORM, authentication, queues and migrations.
- [Long Polling](https://softwaredictionary.org/terms/long-polling): Long polling is a technique where a client sends a request that the server holds open until new data is ready, imitating real-time push over plain HTTP.
- [Message Queue](https://softwaredictionary.org/terms/message-queue): A message queue is a component that stores messages from one service until another is ready to process them, so parts of a system can work asynchronously.
- [Middleware](https://softwaredictionary.org/terms/middleware): Middleware is software that sits between two layers of a system, most often code that runs between an incoming request and the final response in a web server.
- [Nginx](https://softwaredictionary.org/terms/nginx): Nginx is a fast, open-source web server that is also widely used as a reverse proxy, load balancer and HTTP cache in front of application servers.
- [Node.js](https://softwaredictionary.org/terms/nodejs): Node.js is an open-source JavaScript runtime that runs JavaScript outside the browser, most often to build web servers, APIs, and command-line tools.
- [OpenAPI](https://softwaredictionary.org/terms/openapi): OpenAPI is an open standard for describing HTTP APIs in a YAML or JSON file, so people and tools can understand every endpoint, parameter, and response.
- [Pagination](https://softwaredictionary.org/terms/pagination): Pagination is the practice of splitting a large set of results into smaller pages, so an API or website returns a manageable number of items per request.
- [Pub/Sub](https://softwaredictionary.org/terms/pub-sub): Pub/sub is a messaging pattern where publishers send messages to topics and every subscriber to a topic gets a copy, without either side knowing the other.
- [RabbitMQ](https://softwaredictionary.org/terms/rabbitmq): RabbitMQ is an open-source message broker that routes producers' messages through exchanges into queues, where consumers take them and confirm when done.
- [Rate Limiting](https://softwaredictionary.org/terms/rate-limiting): Rate limiting is a technique that caps how many requests a client can make to a server or API within a time window, protecting it from abuse and overload.
- [REST API](https://softwaredictionary.org/terms/rest-api): A REST API is a web API that exposes data as resources identified by URLs and lets clients read or change them using standard HTTP methods.
- [RPC](https://softwaredictionary.org/terms/rpc): RPC is a communication style in which a program calls a function that runs on another machine as if it were a local function, hiding the network in between.
- [Ruby on Rails](https://softwaredictionary.org/terms/ruby-on-rails): Ruby on Rails is a full-stack web framework for Ruby that favors convention over configuration, so database-backed web apps can be built quickly.
- [Serialization](https://softwaredictionary.org/terms/serialization): Serialization is the process of converting in-memory data structures into a format such as JSON or bytes, so they can be stored or sent over a network.
- [Server-Sent Events](https://softwaredictionary.org/terms/server-sent-events): Server-Sent Events is a web standard that lets a server push a continuous stream of text updates to the browser over one long-lived HTTP connection.
- [Session](https://softwaredictionary.org/terms/session): A session is a way for a server to remember a user across many requests, usually by keeping their data on the server and giving the browser a session ID.
- [SOAP](https://softwaredictionary.org/terms/soap): SOAP is an XML-based messaging protocol for web services that wraps each request and response in a strict envelope, usually defined by a formal WSDL contract.
- [Spring Boot](https://softwaredictionary.org/terms/spring-boot): Spring Boot is a Java framework for quickly building production-ready services on top of Spring, with auto-configuration and an embedded web server.
- [Web Server](https://softwaredictionary.org/terms/web-server): A web server is software, or the machine running it, that accepts HTTP requests from browsers and other clients and responds with pages, files, or data.
- [Webhook](https://softwaredictionary.org/terms/webhook): A webhook is an automated HTTP request that one application sends to a URL you provide as soon as a specific event happens, such as a completed payment.
- [XML](https://softwaredictionary.org/terms/xml): XML (Extensible Markup Language) is a text format for structured data that uses nested tags you define yourself, readable by both people and machines.

## Databases

How data is stored, queried and kept consistent: SQL, NoSQL, indexes and transactions. [All Databases terms](https://softwaredictionary.org/categories/databases)

- [ACID](https://softwaredictionary.org/terms/acid): ACID is a set of four guarantees, atomicity, consistency, isolation, and durability, that keep database transactions reliable even when errors or crashes occur.
- [CAP Theorem](https://softwaredictionary.org/terms/cap-theorem): The CAP theorem says that if a network failure splits a distributed database, the system must choose between consistency and availability; it can't have both.
- [Connection Pool](https://softwaredictionary.org/terms/connection-pool): A connection pool is a cache of open database connections that an application reuses across requests, avoiding the cost of opening a new connection every time.
- [Data Lake](https://softwaredictionary.org/terms/data-lake): A data lake is a central storage repository that holds large amounts of raw data in its original format, structured or not, until someone needs to analyze it.
- [Data Warehouse](https://softwaredictionary.org/terms/data-warehouse): A data warehouse is a central database built for analytics that collects historical data from many sources so teams can run large reporting queries quickly.
- [Database](https://softwaredictionary.org/terms/database): A database is an organized collection of data stored on a computer, managed by software that lets applications save, search, and update it efficiently.
- [Database Index](https://softwaredictionary.org/terms/database-index): A database index is a data structure that helps a database find rows quickly without scanning a whole table, much like the index at the back of a book.
- [Database Migration](https://softwaredictionary.org/terms/database-migration): A database migration is a versioned script that changes a database's schema, such as adding a column, so every environment applies the same changes in order.
- [Database Normalization](https://softwaredictionary.org/terms/normalization): Database normalization is the process of organizing tables so each fact is stored only once, reducing duplicate data and preventing inconsistent updates.
- [Database Replication](https://softwaredictionary.org/terms/replication): Database replication is the continuous copying of data from one database server to others, so several servers hold the same data for reliability and scale.
- [Database Schema](https://softwaredictionary.org/terms/schema): A database schema is the blueprint of a database that defines its tables, columns, data types, relationships, and the rules that stored data must follow.
- [Database Trigger](https://softwaredictionary.org/terms/database-trigger): A database trigger is code stored in the database that runs automatically when a chosen event, such as an insert, update, or delete, happens on a table.
- [Database View](https://softwaredictionary.org/terms/database-view): A database view is a saved SQL query that behaves like a virtual table, so you can select from it by name instead of repeating the underlying query each time.
- [Denormalization](https://softwaredictionary.org/terms/denormalization): Denormalization is the deliberate duplication of data across tables or documents so that frequent reads need fewer joins, at the cost of more complex writes.
- [Document Database](https://softwaredictionary.org/terms/document-database): A document database is a NoSQL database that stores each record as a self-contained document, usually JSON-like, whose fields can differ from record to record.
- [DynamoDB](https://softwaredictionary.org/terms/dynamodb): Amazon DynamoDB is a fully managed NoSQL database on AWS that stores items by key, scales automatically and answers lookups in single-digit milliseconds.
- [Elasticsearch](https://softwaredictionary.org/terms/elasticsearch): Elasticsearch is a distributed search and analytics engine that indexes JSON documents for fast full-text search, filtering and aggregations over large data.
- [ETL](https://softwaredictionary.org/terms/etl): ETL is a data integration process that extracts data from source systems, transforms it into a clean, consistent shape, and loads it into a target store.
- [Eventual Consistency](https://softwaredictionary.org/terms/eventual-consistency): Eventual consistency is a guarantee that, if no new updates are made, all copies of a piece of data in a distributed system will become identical over time.
- [Firebase](https://softwaredictionary.org/terms/firebase): Firebase is Google's platform that gives web and mobile apps a hosted database, authentication, storage, hosting and functions without managing a backend.
- [Foreign Key](https://softwaredictionary.org/terms/foreign-key): A foreign key is a column in one database table that refers to the primary key of another table, linking related rows and keeping those references valid.
- [Full-Text Search](https://softwaredictionary.org/terms/full-text-search): Full-text search is a technique that finds documents containing given words or phrases by looking them up in a text index, then ranks the results by relevance.
- [Graph Database](https://softwaredictionary.org/terms/graph-database): A graph database stores data as nodes connected by relationships, which makes it fast to follow links such as friends of friends or dependencies between items.
- [Isolation Level](https://softwaredictionary.org/terms/isolation-level): An isolation level is a database setting that controls how much concurrent transactions can see of each other's changes, trading strictness for speed.
- [Key-Value Store](https://softwaredictionary.org/terms/key-value-store): A key-value store is a NoSQL database that saves each piece of data under a unique key, so an application can read or write it by that key very quickly.
- [MongoDB](https://softwaredictionary.org/terms/mongodb): MongoDB is a document database that stores data as flexible JSON-like documents instead of table rows, so records in one collection can have different fields.
- [MySQL](https://softwaredictionary.org/terms/mysql): MySQL is a popular open-source relational database queried with SQL, long known as the database behind WordPress and the classic LAMP web stack.
- [N+1 Query Problem](https://softwaredictionary.org/terms/n-plus-one-query): The N+1 query problem is a performance bug where code runs one query to load a list and then one extra query per item, instead of fetching it all at once.
- [NoSQL](https://softwaredictionary.org/terms/nosql): NoSQL is a family of databases that store data in models other than relational tables, such as documents, key-value pairs, wide columns, or graphs.
- [OLAP](https://softwaredictionary.org/terms/olap): OLAP (online analytical processing) describes systems built to answer complex analytical questions over large amounts of historical data quickly.
- [OLTP](https://softwaredictionary.org/terms/oltp): OLTP (online transaction processing) describes databases built for many small, fast reads and writes from everyday operations, such as placing orders.
- [Optimistic Locking](https://softwaredictionary.org/terms/optimistic-locking): Optimistic locking is a concurrency technique that lets transactions proceed without holding locks and checks a version number at save time to detect conflicts.
- [ORM](https://softwaredictionary.org/terms/orm): An ORM is a library that maps database tables to objects in your programming language, letting you read and write data with code instead of raw SQL.
- [Partitioning](https://softwaredictionary.org/terms/partitioning): Partitioning splits a large table into smaller partitions by a rule such as date ranges, so queries can skip irrelevant data and old data is easy to remove.
- [PostgreSQL](https://softwaredictionary.org/terms/postgresql): PostgreSQL is a free, open-source relational database known for reliability, strict standards support and extensions, and widely used for web applications.
- [Primary Key](https://softwaredictionary.org/terms/primary-key): A primary key is a column, or set of columns, whose value uniquely identifies each row in a database table and can never be empty or duplicated.
- [Redis](https://softwaredictionary.org/terms/redis): Redis is an in-memory key-value store that reads and writes in well under a millisecond, which makes it a popular cache, session store and message broker.
- [Relational Database](https://softwaredictionary.org/terms/relational-database): A relational database stores data in tables of rows and columns, links those tables through keys, and lets you query and combine the data with SQL.
- [Sharding](https://softwaredictionary.org/terms/sharding): Sharding is a way of scaling a database by splitting its data across several servers, called shards, so each one stores and handles only part of the total.
- [SQL](https://softwaredictionary.org/terms/sql): SQL is the standard language for working with relational databases, used to create tables and to insert, query, update, and delete the data stored in them.
- [SQL JOIN](https://softwaredictionary.org/terms/sql-join): A SQL JOIN is a query operation that combines rows from two or more tables into one result, matching them on related columns such as a foreign key.
- [SQL Server](https://softwaredictionary.org/terms/sql-server): Microsoft SQL Server is Microsoft's relational database, queried with the T-SQL dialect of SQL and widely used for business apps alongside .NET and Windows.
- [SQLite](https://softwaredictionary.org/terms/sqlite): SQLite is a small SQL database engine that runs inside your application and stores a whole database in a single file, with no separate server to manage.
- [Stored Procedure](https://softwaredictionary.org/terms/stored-procedure): A stored procedure is a named set of SQL statements saved inside the database, which applications can run with a single call instead of sending each query.
- [Supabase](https://softwaredictionary.org/terms/supabase): Supabase is an open-source backend platform built on PostgreSQL that gives an app a database, authentication, storage, real-time updates and instant APIs.
- [Time-Series Database](https://softwaredictionary.org/terms/time-series-database): A time-series database is a database optimized for storing and querying timestamped measurements, such as sensor readings or server metrics, in time order.
- [Transaction](https://softwaredictionary.org/terms/transaction): A transaction is a group of database operations that succeed or fail as a single unit, so the data is never left in a half-finished, inconsistent state.

## DevOps & Cloud

Tools and practices for building, testing, packaging and shipping software to production. [All DevOps & Cloud terms](https://softwaredictionary.org/categories/devops)

- [Ansible](https://softwaredictionary.org/terms/ansible): Ansible is an open-source automation tool that configures servers and deploys applications by running YAML playbooks over SSH, with no agent on the machines.
- [Autoscaling](https://softwaredictionary.org/terms/autoscaling): Autoscaling is the automatic adding or removing of computing resources, such as servers or containers, based on demand to keep performance steady and costs low.
- [AWS](https://softwaredictionary.org/terms/aws): AWS (Amazon Web Services) is Amazon's cloud platform: more than 200 pay-as-you-go services for servers, storage, databases and much more.
- [Azure](https://softwaredictionary.org/terms/azure): Microsoft Azure is Microsoft's cloud computing platform, offering hundreds of on-demand services such as virtual machines, databases and AI models worldwide.
- [Blue-Green Deployment](https://softwaredictionary.org/terms/blue-green-deployment): Blue-green deployment is a release strategy that uses two identical production environments and moves all traffic from the old version to the new one at once.
- [Canary Deployment](https://softwaredictionary.org/terms/canary-deployment): A canary deployment releases a new software version to a small share of users first, checks its health, and then gradually rolls it out to everyone.
- [CDN](https://softwaredictionary.org/terms/cdn): A CDN is a network of servers spread around the world that stores copies of website content and delivers it to each user from the nearest location.
- [Chaos Engineering](https://softwaredictionary.org/terms/chaos-engineering): Chaos engineering is the practice of deliberately injecting failures into a system, such as crashing servers, to confirm that it keeps working as expected.
- [CI/CD](https://softwaredictionary.org/terms/ci-cd): CI/CD is a set of automated practices that build, test, and release code changes frequently, so software can be delivered to users quickly and safely.
- [Cloud Computing](https://softwaredictionary.org/terms/cloud-computing): Cloud computing is the on-demand delivery of computing resources, such as servers, storage, and databases, over the internet with pay-as-you-go pricing.
- [Configuration Management](https://softwaredictionary.org/terms/configuration-management): Configuration management is the practice of defining the desired state of servers and software in code and using tools to apply and keep it automatically.
- [Container](https://softwaredictionary.org/terms/container): A container is a lightweight, isolated package that bundles an application with its dependencies and runs it on the host's shared operating system kernel.
- [Container Registry](https://softwaredictionary.org/terms/container-registry): A container registry is a storage and distribution service for container images, letting teams push built images and pull them onto any server that runs them.
- [DevOps](https://softwaredictionary.org/terms/devops): DevOps is a set of practices and a culture that brings software development and IT operations together to deliver software faster and more reliably.
- [Distributed Tracing](https://softwaredictionary.org/terms/distributed-tracing): Distributed tracing is a technique that follows a single request as it travels through many services, recording how long each step took and where it failed.
- [DNS](https://softwaredictionary.org/terms/dns): DNS is the internet's naming system that translates human-readable domain names like example.com into the numeric IP addresses computers use to connect.
- [Docker](https://softwaredictionary.org/terms/docker): Docker is an open-source platform for packaging an application and everything it needs into a container that runs the same way on any machine.
- [Docker Compose](https://softwaredictionary.org/terms/docker-compose): Docker Compose is a tool for defining and running multi-container applications, such as a web server plus a database, from one YAML file with one command.
- [Edge Computing](https://softwaredictionary.org/terms/edge-computing): Edge computing runs code and processes data close to where users or devices are, instead of in a distant central data center, to reduce latency.
- [Environment Variable](https://softwaredictionary.org/terms/environment-variable): An environment variable is a named value set outside a program, by the operating system or runtime, that the program reads to configure its behavior.
- [Feature Flag](https://softwaredictionary.org/terms/feature-flag): A feature flag is a switch in code that turns a feature on or off at runtime, letting teams deploy code without releasing it to every user at once.
- [GitHub Actions](https://softwaredictionary.org/terms/github-actions): GitHub Actions is GitHub's built-in automation platform: YAML workflows in a repo run tests, builds and deployments on events like a push or pull request.
- [GitOps](https://softwaredictionary.org/terms/gitops): GitOps is a way of managing infrastructure and deployments where Git holds the desired state of a system and an automated agent keeps the live system in sync.
- [Google Cloud](https://softwaredictionary.org/terms/google-cloud): Google Cloud is Google's public cloud platform, offering compute, storage, data and AI services on the global infrastructure behind Google's own products.
- [Grafana](https://softwaredictionary.org/terms/grafana): Grafana is an open-source tool for building dashboards that turn metrics, logs and traces from many data sources into live charts and alerts in one place.
- [Helm](https://softwaredictionary.org/terms/helm): Helm is the package manager for Kubernetes: it bundles an app's configuration files into a chart you can install, upgrade and roll back with one command.
- [IaaS](https://softwaredictionary.org/terms/iaas): IaaS (infrastructure as a service) is a cloud model where you rent virtual machines, storage and networks on demand and manage the OS and above yourself.
- [Immutable Infrastructure](https://softwaredictionary.org/terms/immutable-infrastructure): Immutable infrastructure is an approach where servers are never changed after deployment; every update replaces them with new, freshly built ones.
- [Infrastructure as Code](https://softwaredictionary.org/terms/infrastructure-as-code): Infrastructure as code is the practice of defining servers, networks, and other infrastructure in version-controlled files that tools apply automatically.
- [Jenkins](https://softwaredictionary.org/terms/jenkins): Jenkins is an open-source automation server that builds, tests and deploys software through pipelines, and one of the oldest and most widely used CI/CD tools.
- [kubectl](https://softwaredictionary.org/terms/kubectl): kubectl is the command-line tool for Kubernetes: it sends requests to a cluster's API server to deploy applications, inspect them and change them.
- [Kubernetes](https://softwaredictionary.org/terms/kubernetes): Kubernetes is an open-source system that automates deploying, scaling, and managing containerized applications across a cluster of machines.
- [Linux](https://softwaredictionary.org/terms/linux): Linux is an open-source operating system kernel that powers most servers, cloud platforms, containers, and Android phones, usually packaged as a distribution.
- [Load Balancer](https://softwaredictionary.org/terms/load-balancer): A load balancer is a server or service that spreads incoming traffic across several backend servers so no single one is overloaded and the app stays available.
- [Logging](https://softwaredictionary.org/terms/logging): Logging is the practice of recording timestamped messages about events in a running program, such as errors and requests, so people can investigate them later.
- [Metrics](https://softwaredictionary.org/terms/metrics): Metrics are numeric measurements of a system collected over time, such as request rate, error rate and CPU usage, used for dashboards, alerts and planning.
- [Object Storage](https://softwaredictionary.org/terms/object-storage): Object storage is a way of storing data as whole objects, each with a unique key and metadata, in flat buckets that scale to huge numbers of files over HTTP.
- [Observability](https://softwaredictionary.org/terms/observability): Observability is the ability to understand what is happening inside a running software system by collecting and analyzing its logs, metrics, and traces.
- [OpenTelemetry](https://softwaredictionary.org/terms/opentelemetry): OpenTelemetry is an open standard and set of tools for collecting traces, metrics and logs from software and sending them to any monitoring backend.
- [PaaS](https://softwaredictionary.org/terms/paas): PaaS (platform as a service) is a cloud model where you deploy your code and the provider runs everything under it: servers, operating systems and scaling.
- [Pod](https://softwaredictionary.org/terms/kubernetes-pod): A pod is the smallest deployable unit in Kubernetes: one or more containers that share a network address and storage and are scheduled together on one node.
- [Postmortem](https://softwaredictionary.org/terms/postmortem): A postmortem is a written review after an incident that explains what happened, why it happened, and what the team will change so it doesn't happen again.
- [Prometheus](https://softwaredictionary.org/terms/prometheus): Prometheus is an open-source monitoring system that collects metrics from apps and servers, stores them as time series and alerts when values cross a limit.
- [Reverse Proxy](https://softwaredictionary.org/terms/reverse-proxy): A reverse proxy is a server that sits in front of web servers, accepts client requests on their behalf, and forwards each request to the right backend server.
- [Rollback](https://softwaredictionary.org/terms/rollback): A rollback is the process of returning software to a previous, known-good version after a new deployment causes errors, outages, or other unexpected problems.
- [SaaS](https://softwaredictionary.org/terms/saas): SaaS (software as a service) is software delivered over the internet as a subscription; users sign in while the provider runs, updates and secures it.
- [Serverless](https://softwaredictionary.org/terms/serverless): Serverless is a cloud model in which the provider runs your code on demand, manages all the servers, scales automatically, and bills only for actual use.
- [Service Mesh](https://softwaredictionary.org/terms/service-mesh): A service mesh is an infrastructure layer that manages traffic between microservices, adding encryption, retries, routing, and monitoring without code changes.
- [Site Reliability Engineering](https://softwaredictionary.org/terms/site-reliability-engineering): Site reliability engineering is a discipline that applies software engineering to operations, keeping services reliable with automation and measurable targets.
- [SLA](https://softwaredictionary.org/terms/sla): An SLA (service level agreement) is a provider's commitment to customers about the level of service, such as 99.9% uptime, and what happens if it isn't met.
- [SLO](https://softwaredictionary.org/terms/slo): An SLO is a measurable reliability target for a service, such as 99.9% of requests succeeding over 30 days, that tells a team how reliable is reliable enough.
- [Terraform](https://softwaredictionary.org/terms/terraform): Terraform is an infrastructure-as-code tool: you describe cloud resources in configuration files, and one command creates or updates them to match.
- [Virtual Machine](https://softwaredictionary.org/terms/virtual-machine): A virtual machine is a software-based computer that runs its own operating system on shared physical hardware, isolated from other machines on the same host.
- [YAML](https://softwaredictionary.org/terms/yaml): YAML is a human-readable data format that uses indentation instead of brackets, widely used for configuration files in DevOps tools and CI/CD pipelines.

## Version Control

Git concepts for tracking code changes and collaborating as a team. [All Version Control terms](https://softwaredictionary.org/categories/version-control)

- [.gitignore](https://softwaredictionary.org/terms/gitignore): A .gitignore file is a plain-text file listing patterns for files and folders Git should not track, such as dependencies, build output, logs, and secrets.
- [Branch](https://softwaredictionary.org/terms/branch): A branch in Git is an independent line of development that lets you work on a feature or fix in isolation, without affecting the main code until you merge it.
- [Cherry-pick](https://softwaredictionary.org/terms/cherry-pick): A cherry-pick in Git copies the changes from one specific commit onto your current branch as a new commit, without merging the rest of the branch it came from.
- [Code Review](https://softwaredictionary.org/terms/code-review): A code review is the practice of having other developers check code changes before they are merged, to catch bugs, improve quality, and share knowledge.
- [Commit](https://softwaredictionary.org/terms/commit): A commit is a saved snapshot of a project's files in Git, recorded with a unique ID, an author, a timestamp, and a message describing what changed.
- [Conventional Commits](https://softwaredictionary.org/terms/conventional-commits): Conventional Commits is a specification for structured commit messages like feat: add search, so tools can write changelogs and pick versions automatically.
- [Detached HEAD](https://softwaredictionary.org/terms/detached-head): A detached HEAD is a Git state in which you have checked out a specific commit instead of a branch, so any new commits you make don't belong to any branch.
- [Fast-Forward Merge](https://softwaredictionary.org/terms/fast-forward-merge): A fast-forward merge happens when the target has no new commits since the other branch split off, so Git just moves its pointer ahead with no merge commit.
- [Fork](https://softwaredictionary.org/terms/fork): A fork is a personal copy of someone else's repository on a hosting platform, letting you experiment freely and propose changes back to the original project.
- [Git](https://softwaredictionary.org/terms/git): Git is a free, open-source distributed version control system that tracks changes to files over time, so developers can collaborate and undo mistakes.
- [Git Bisect](https://softwaredictionary.org/terms/git-bisect): Git bisect is a Git command that uses binary search through commit history to find the exact commit that introduced a bug, testing only a few commits.
- [Git Checkout](https://softwaredictionary.org/terms/git-checkout): git checkout switches to another branch or commit, or restores files to an earlier version; newer Git splits these jobs into git switch and git restore.
- [Git Clone](https://softwaredictionary.org/terms/git-clone): Git clone is a Git command that downloads a complete copy of an existing repository, including its full history, and sets it up on your computer for work.
- [Git Diff](https://softwaredictionary.org/terms/git-diff): Git diff is a Git command that shows the exact line-by-line differences between two versions of your code, such as working files, staged changes, or commits.
- [Git Fetch](https://softwaredictionary.org/terms/git-fetch): git fetch downloads new commits, branches and tags from a remote and updates remote-tracking branches like origin/main but not your own branches or files.
- [Git Hooks](https://softwaredictionary.org/terms/git-hooks): Git hooks are scripts that Git runs automatically at certain points, such as before a commit or a push, to check code, enforce rules, or automate tasks.
- [Git Pull](https://softwaredictionary.org/terms/git-pull): Git pull is a Git command that downloads new commits from a remote repository and immediately integrates them into your current local branch.
- [Git Push](https://softwaredictionary.org/terms/git-push): Git push is a Git command that uploads your local commits to a remote repository, updating the matching branch there so others can see and use your work.
- [Git Remote](https://softwaredictionary.org/terms/git-remote): A Git remote is a named shortcut, such as origin, to another copy of your repository, usually on a server, that you push commits to and pull commits from.
- [Git Reset](https://softwaredictionary.org/terms/git-reset): Git reset is a Git command that moves the current branch back to an earlier commit and, depending on its mode, also resets the staging area and your files.
- [Git Revert](https://softwaredictionary.org/terms/git-revert): Git revert is a Git command that undoes an earlier commit by creating a new commit with the opposite changes, leaving the existing project history intact.
- [Git Stash](https://softwaredictionary.org/terms/git-stash): Git stash is a command that temporarily saves uncommitted changes and cleans the working directory, so you can switch tasks and restore the work later.
- [Git Tag](https://softwaredictionary.org/terms/git-tag): A Git tag is a named, permanent pointer to a specific commit, most often used to mark release versions such as v1.0.0 in a repository's history.
- [Gitflow](https://softwaredictionary.org/terms/gitflow): Gitflow is a Git branching model that uses long-lived main and develop branches plus feature, release, and hotfix branches to manage scheduled releases.
- [GitHub](https://softwaredictionary.org/terms/github): GitHub is a platform for hosting Git repositories and working on code together, with pull requests, code review, issues and the largest open-source community.
- [GitLab](https://softwaredictionary.org/terms/gitlab): GitLab is a Git hosting platform combining code review, issue tracking, CI/CD pipelines and security scanning in one application, in the cloud or self-hosted.
- [HEAD](https://softwaredictionary.org/terms/git-head): HEAD is Git's pointer to what you have checked out, normally the current branch, which points to its latest commit; new commits are added where HEAD points.
- [Hotfix](https://softwaredictionary.org/terms/hotfix): A hotfix is an urgent fix for a serious problem in production, such as a crash or security hole, released quickly and outside the normal release schedule.
- [Merge](https://softwaredictionary.org/terms/merge): A merge in Git combines the changes from one branch into another, joining separate lines of development back together into a single, shared history.
- [Merge Conflict](https://softwaredictionary.org/terms/merge-conflict): A merge conflict happens when Git can't automatically combine two branches because both changed the same lines of a file, so a person must decide the result.
- [Monorepo](https://softwaredictionary.org/terms/monorepo): A monorepo is a single version control repository that holds the code for many projects, such as several apps, services, and shared libraries, managed together.
- [Pull Request](https://softwaredictionary.org/terms/pull-request): A pull request is a proposal to merge changes from one branch into another, giving teammates a place to review, discuss, and test the code before it is merged.
- [Rebase](https://softwaredictionary.org/terms/rebase): A rebase in Git replays a branch's commits on top of another commit, rewriting history to produce a cleaner, linear sequence of changes without merge commits.
- [Repository](https://softwaredictionary.org/terms/repository): A repository is the storage location for a project, holding all of its files plus the complete history of every change recorded by a version control system.
- [Semantic Versioning](https://softwaredictionary.org/terms/semantic-versioning): Semantic versioning is a MAJOR.MINOR.PATCH numbering scheme in which each part signals whether a release breaks compatibility, adds features, or fixes bugs.
- [Squash Merge](https://softwaredictionary.org/terms/squash-merge): A squash merge combines all the commits from a branch into one new commit on the target branch, keeping the main history short and easy to read.
- [Staging Area](https://softwaredictionary.org/terms/staging-area): The staging area in Git is a holding zone between your files and the next commit, where you place exactly the changes you want that commit to include.
- [Trunk-Based Development](https://softwaredictionary.org/terms/trunk-based-development): Trunk-based development is a branching strategy where developers merge small changes into one shared main branch at least daily, keeping it always releasable.
- [Version Control](https://softwaredictionary.org/terms/version-control): Version control is a system that records every change to a set of files, so you can see who changed what, return to earlier versions and work in parallel.

## Security

Common attacks on web applications and the defenses against them, from authentication to encryption. [All Security terms](https://softwaredictionary.org/categories/security)

- [API Key](https://softwaredictionary.org/terms/api-key): An API key is a unique secret string that identifies an application or project when it calls an API, used to control access, track usage, and apply rate limits.
- [Authentication](https://softwaredictionary.org/terms/authentication): Authentication is the process of verifying that a user, device, or service really is who it claims to be, for example by checking a password or passkey.
- [Authorization](https://softwaredictionary.org/terms/authorization): Authorization is the process of deciding what an authenticated user or service is allowed to do, such as which data it can read, change, or delete.
- [Brute-Force Attack](https://softwaredictionary.org/terms/brute-force-attack): A brute-force attack is an attempt to break into an account or decrypt data by systematically trying huge numbers of possible passwords or keys until one works.
- [Certificate Authority](https://softwaredictionary.org/terms/certificate-authority): A certificate authority is a trusted organization that issues digital certificates confirming a public key belongs to a specific website, company, or person.
- [Clickjacking](https://softwaredictionary.org/terms/clickjacking): Clickjacking is an attack that hides a legitimate website inside an invisible frame on a malicious page, tricking users into clicking buttons they cannot see.
- [Content Security Policy](https://softwaredictionary.org/terms/content-security-policy): A Content Security Policy is an HTTP response header that tells the browser which scripts, styles, and other resources a page may load, blocking injected code.
- [CSRF](https://softwaredictionary.org/terms/csrf): CSRF is an attack that tricks a logged-in user's browser into sending an unwanted request to a trusted site, which treats it as a genuine user action.
- [CVE](https://softwaredictionary.org/terms/cve): A CVE is a unique public identifier, such as CVE-2021-44228, given to one known security vulnerability so everyone can refer to the same flaw by one name.
- [DDoS](https://softwaredictionary.org/terms/ddos): A DDoS attack is an attempt to make a website or online service unavailable by flooding it with traffic from many compromised devices at the same time.
- [Digital Signature](https://softwaredictionary.org/terms/digital-signature): A digital signature is a cryptographic value made with a private key that proves who produced a message or file and that it hasn't changed since it was signed.
- [Encryption](https://softwaredictionary.org/terms/encryption): Encryption is the process of scrambling data with a key so that only someone holding the correct key can turn it back into its original, readable form.
- [End-to-End Encryption](https://softwaredictionary.org/terms/end-to-end-encryption): End-to-end encryption (E2EE) encrypts messages on the sender's device so only the intended recipients can decrypt them, not even the service carrying them.
- [Hashing](https://softwaredictionary.org/terms/hashing): Hashing is the process of turning any input into a fixed-length value with a one-way function, used to verify data integrity and store passwords safely.
- [HMAC](https://softwaredictionary.org/terms/hmac): HMAC combines a secret key with a hash function to produce a tag that proves a message came from someone who knows the key and wasn't changed on the way.
- [HSTS](https://softwaredictionary.org/terms/hsts): HSTS is a security header that tells browsers to connect to a site only over HTTPS for a set period, blocking insecure HTTP connections and downgrade attacks.
- [HTTPS](https://softwaredictionary.org/terms/https): HTTPS is the secure version of HTTP that encrypts traffic between a browser and a website with TLS, protecting data from eavesdropping and tampering.
- [Input Validation](https://softwaredictionary.org/terms/input-validation): Input validation is the practice of checking that data entering a program has the expected type, format and range before it is used, and rejecting the rest.
- [JWT](https://softwaredictionary.org/terms/jwt): A JWT is a compact, signed token that carries claims like a user ID and expiry time, letting a server verify requests without looking up a session.
- [Malware](https://softwaredictionary.org/terms/malware): Malware (malicious software) is any program designed to harm a computer or its user by stealing data, spying, damaging files or taking control of the system.
- [Man-in-the-Middle Attack](https://softwaredictionary.org/terms/man-in-the-middle): A man-in-the-middle attack happens when an attacker secretly relays, and may alter, messages between two parties who think they are talking directly.
- [OAuth](https://softwaredictionary.org/terms/oauth): OAuth is an open standard for authorization that lets an app access a user's data on another service without ever seeing the user's password.
- [OpenID Connect](https://softwaredictionary.org/terms/openid-connect): OpenID Connect (OIDC) is an identity layer on OAuth 2.0 that lets an app sign users in via an identity provider and get a signed token saying who they are.
- [OWASP Top 10](https://softwaredictionary.org/terms/owasp-top-10): The OWASP Top 10 is a widely used list of the ten most critical security risks to web applications, published by the nonprofit OWASP and updated regularly.
- [Passkey](https://softwaredictionary.org/terms/passkey): A passkey is a passwordless sign-in credential based on public-key cryptography, unlocked with a fingerprint, face scan, or device PIN, that resists phishing.
- [Penetration Testing](https://softwaredictionary.org/terms/penetration-testing): Penetration testing is an authorized, simulated attack on a system that helps an organization find and fix security weaknesses before real attackers do.
- [Phishing](https://softwaredictionary.org/terms/phishing): Phishing is a social engineering attack in which criminals pose as a trusted company or person to trick people into revealing passwords, codes, or money.
- [Principle of Least Privilege](https://softwaredictionary.org/terms/principle-of-least-privilege): The principle of least privilege is a security rule that every user, program, and service gets only the minimum access it needs to do its job, and no more.
- [Prompt Injection](https://softwaredictionary.org/terms/prompt-injection): Prompt injection is an attack on LLM apps where attacker-written text is treated as instructions, so the model ignores its rules, leaks data or misuses tools.
- [Public-Key Cryptography](https://softwaredictionary.org/terms/public-key-cryptography): Public-key cryptography is a method that uses a pair of linked keys, a public key anyone can see and a private key kept secret, to encrypt and sign data.
- [Ransomware](https://softwaredictionary.org/terms/ransomware): Ransomware is malware that encrypts an organization's files or systems and demands a ransom for the key, often also threatening to leak stolen data.
- [RBAC](https://softwaredictionary.org/terms/rbac): RBAC is an authorization model that grants permissions to roles, such as admin or editor, and then gives users access by assigning them those roles.
- [Refresh Token](https://softwaredictionary.org/terms/refresh-token): A refresh token is a long-lived credential an app uses to get new short-lived access tokens, so the user stays signed in without logging in again.
- [Salting](https://softwaredictionary.org/terms/salting): Salting is the practice of adding a unique random value to each password before hashing it, so identical passwords produce different hashes and resist cracking.
- [Same-Origin Policy](https://softwaredictionary.org/terms/same-origin-policy): The same-origin policy is a browser security rule that stops scripts on one website from reading data from another site unless that site explicitly allows it.
- [SAML](https://softwaredictionary.org/terms/saml): SAML is an XML-based single sign-on standard: an identity provider authenticates the user and sends the application a signed assertion that logs them in.
- [Secrets Management](https://softwaredictionary.org/terms/secrets-management): Secrets management is the practice of securely storing, distributing, rotating, and auditing sensitive credentials such as passwords, API keys, and tokens.
- [Session Hijacking](https://softwaredictionary.org/terms/session-hijacking): Session hijacking is an attack in which someone steals or guesses a user's session ID or token and uses it to act as that user without knowing their password.
- [Social Engineering](https://softwaredictionary.org/terms/social-engineering): Social engineering is manipulating people, not breaking technology, to get information, access or money, often by posing as someone the victim trusts.
- [SQL Injection](https://softwaredictionary.org/terms/sql-injection): SQL injection is an attack where user input is treated as part of a database query, letting an attacker read, change, or delete data they should not reach.
- [SSO](https://softwaredictionary.org/terms/sso): SSO lets a user sign in once with a central identity provider and then access many separate applications without entering credentials again.
- [SSRF](https://softwaredictionary.org/terms/ssrf): SSRF is a vulnerability where an attacker makes a server send requests to a destination of their choice, often reaching internal systems they can't access.
- [Supply Chain Attack](https://softwaredictionary.org/terms/supply-chain-attack): A supply chain attack compromises software through something it relies on, like an open-source package, a build tool or an update server, not the app itself.
- [Symmetric Encryption](https://softwaredictionary.org/terms/symmetric-encryption): Symmetric encryption uses the same secret key to encrypt and decrypt data; it is fast, so it protects most stored and transmitted data, usually with AES.
- [TLS](https://softwaredictionary.org/terms/tls): TLS is the cryptographic protocol that encrypts data sent over a network and verifies the server's identity, securing HTTPS, email, and many other connections.
- [Two-Factor Authentication](https://softwaredictionary.org/terms/two-factor-authentication): Two-factor authentication is a login method that requires two different kinds of proof, such as a password plus a code or security key, to confirm identity.
- [Web Application Firewall](https://softwaredictionary.org/terms/web-application-firewall): A web application firewall (WAF) inspects HTTP requests before they reach a web application and blocks malicious ones, such as SQL injection, based on rules.
- [XSS](https://softwaredictionary.org/terms/xss): XSS is a vulnerability that lets an attacker inject malicious JavaScript into a trusted website so that it runs in other users' browsers.
- [Zero Trust](https://softwaredictionary.org/terms/zero-trust): Zero trust is a security model that trusts no user, device, or network by default and verifies every request based on identity, device health, and context.
- [Zero-Day](https://softwaredictionary.org/terms/zero-day): A zero-day is a software vulnerability that the vendor doesn't know about or hasn't fixed yet, so attackers can exploit it before any patch exists.

## AI & Machine Learning

Essential vocabulary for machine learning, large language models and AI-powered applications. [All AI & Machine Learning terms](https://softwaredictionary.org/categories/ai)

- [AGI](https://softwaredictionary.org/terms/artificial-general-intelligence): AGI (artificial general intelligence) is a hypothetical AI system that could learn and do any intellectual task a person can, not just a narrow set of tasks.
- [AI Agent](https://softwaredictionary.org/terms/ai-agent): An AI agent is a system that uses an LLM to plan and carry out multi-step tasks by deciding which tools to call, observing the results, and acting again.
- [AI Alignment](https://softwaredictionary.org/terms/ai-alignment): AI alignment is the field of making AI systems pursue the goals and values their designers intend, so they behave helpfully, honestly, and safely.
- [Artificial Intelligence](https://softwaredictionary.org/terms/artificial-intelligence): Artificial intelligence (AI) is the field of computer science that builds systems able to do tasks that normally require human intelligence.
- [Attention Mechanism](https://softwaredictionary.org/terms/attention-mechanism): The attention mechanism is a neural network technique that lets a model decide, for each token, which other parts of the input matter most and focus on them.
- [Backpropagation](https://softwaredictionary.org/terms/backpropagation): Backpropagation is the algorithm that trains neural networks by measuring how much each weight added to the error and nudging every weight to reduce it.
- [Chain-of-Thought Prompting](https://softwaredictionary.org/terms/chain-of-thought): Chain-of-thought prompting is a technique that asks an LLM to reason through intermediate steps before its final answer, improving accuracy on complex tasks.
- [Chatbot](https://softwaredictionary.org/terms/chatbot): A chatbot is a program that converses with people in text or speech, answering questions or helping with tasks, using scripted rules or a language model.
- [Chunking](https://softwaredictionary.org/terms/chunking): Chunking splits long documents into smaller passages before they are embedded and stored, so a RAG system can find and pass on just the relevant parts.
- [Computer Vision](https://softwaredictionary.org/terms/computer-vision): Computer vision is the field of AI that enables computers to interpret images and video, such as recognizing objects, reading text, or detecting faces.
- [Context Engineering](https://softwaredictionary.org/terms/context-engineering): Context engineering is the practice of choosing what an LLM sees on each call (instructions, documents, tool results, history) so it can do the task reliably.
- [Context Window](https://softwaredictionary.org/terms/context-window): A context window is the maximum amount of text, measured in tokens, that an LLM can consider at once, including the prompt, conversation history, and its reply.
- [Cosine Similarity](https://softwaredictionary.org/terms/cosine-similarity): Cosine similarity measures how alike two vectors are by the angle between them, from -1 to 1; it is the usual way to compare embeddings in semantic search.
- [Deep Learning](https://softwaredictionary.org/terms/deep-learning): Deep learning is a subset of machine learning that uses neural networks with many layers to learn complex patterns from raw data such as images and text.
- [Diffusion Model](https://softwaredictionary.org/terms/diffusion-model): A diffusion model is a generative AI model that makes images, audio, or video by starting from random noise and removing it step by step until content appears.
- [Embedding](https://softwaredictionary.org/terms/embedding): An embedding is a list of numbers, called a vector, that represents the meaning of text, images, or other data so that similar items end up close together.
- [Evals](https://softwaredictionary.org/terms/evals): Evals are tests for AI systems: a set of inputs with expected results or grading rules, run after every change to measure how well a model or prompt performs.
- [Few-Shot Learning](https://softwaredictionary.org/terms/few-shot-learning): Few-shot learning is getting an AI model to perform a task from just a handful of examples, most often by placing a few sample inputs and outputs in the prompt.
- [Fine-tuning](https://softwaredictionary.org/terms/fine-tuning): Fine-tuning is the process of taking a pretrained machine learning model and training it further on a smaller, specific dataset to adapt it to one task.
- [Generative AI](https://softwaredictionary.org/terms/generative-ai): Generative AI is artificial intelligence that creates new content, such as text, images, code, or audio, based on patterns learned from existing data.
- [GPT](https://softwaredictionary.org/terms/gpt): GPT (Generative Pre-trained Transformer) is OpenAI's family of large language models that generate text by predicting the next token.
- [Gradient Descent](https://softwaredictionary.org/terms/gradient-descent): Gradient descent is an optimization algorithm that trains machine learning models by repeatedly nudging their parameters in the direction that reduces error.
- [Hallucination](https://softwaredictionary.org/terms/hallucination): A hallucination is when an AI model, such as an LLM, confidently produces information that sounds plausible but is false, invented, or unsupported by sources.
- [Inference](https://softwaredictionary.org/terms/inference): Inference is the stage where a trained machine learning model is used to make predictions or generate output from new data, without changing what it learned.
- [LLM](https://softwaredictionary.org/terms/llm): An LLM is a machine learning model trained on huge amounts of text that generates language by repeatedly predicting the next most likely piece of text.
- [LoRA](https://softwaredictionary.org/terms/lora): LoRA is a cheap way to fine-tune a large model: its weights stay frozen and only small added matrices are trained, so a new skill fits in a few megabytes.
- [Machine Learning](https://softwaredictionary.org/terms/machine-learning): Machine learning is a branch of artificial intelligence in which computers learn patterns from data to make predictions instead of following hand-written rules.
- [Mixture of Experts](https://softwaredictionary.org/terms/mixture-of-experts): A mixture of experts (MoE) is a neural network design that sends each input to only a few of many small experts, so a huge model costs far less to run.
- [Model Context Protocol](https://softwaredictionary.org/terms/model-context-protocol): The Model Context Protocol is an open standard that defines how AI applications connect to external tools, data sources, and prompts through a shared interface.
- [Model Parameters](https://softwaredictionary.org/terms/model-parameters): Model parameters are the internal numbers, such as weights and biases, that a machine learning model learns in training and uses to turn inputs into outputs.
- [Multimodal AI](https://softwaredictionary.org/terms/multimodal-ai): Multimodal AI is artificial intelligence that can understand or generate several types of data, such as text, images, audio, and video, in a single model.
- [Natural Language Processing](https://softwaredictionary.org/terms/natural-language-processing): Natural language processing is the field of AI that teaches computers to read, understand, and generate human language in the form of text or speech.
- [Neural Network](https://softwaredictionary.org/terms/neural-network): A neural network is a machine learning model made of layers of connected artificial neurons that learn patterns from data by adjusting numeric weights.
- [Overfitting](https://softwaredictionary.org/terms/overfitting): Overfitting happens when a machine learning model learns its training data so closely, including its noise, that it performs poorly on new, unseen data.
- [Prompt](https://softwaredictionary.org/terms/prompt): A prompt is the input text or instructions you give an AI model, such as an LLM, to tell it what task to perform and what kind of answer you want.
- [Prompt Engineering](https://softwaredictionary.org/terms/prompt-engineering): Prompt engineering is the practice of designing, testing, and refining the instructions given to an AI model so it produces accurate, consistent, useful output.
- [Quantization](https://softwaredictionary.org/terms/quantization): Quantization is a technique that shrinks an AI model by storing its parameters in fewer bits, such as 8 or 4 instead of 16, so inference is faster and cheaper.
- [RAG](https://softwaredictionary.org/terms/rag): RAG is a technique that makes an LLM answer using relevant documents retrieved at question time, so its responses are grounded in current, specific data.
- [Reasoning Model](https://softwaredictionary.org/terms/reasoning-model): A reasoning model is a language model trained to work through a problem step by step before answering, spending extra computation to do better on hard tasks.
- [Reinforcement Learning](https://softwaredictionary.org/terms/reinforcement-learning): Reinforcement learning is a type of machine learning in which an agent learns to make decisions by trial and error, earning rewards for good actions.
- [RLHF](https://softwaredictionary.org/terms/rlhf): RLHF (reinforcement learning from human feedback) trains a language model to be more helpful and safe using people's judgments of which answers are better.
- [Semantic Search](https://softwaredictionary.org/terms/semantic-search): Semantic search is a search technique that finds results by meaning rather than exact keywords, usually by comparing embeddings of the query and the documents.
- [Supervised Learning](https://softwaredictionary.org/terms/supervised-learning): Supervised learning is machine learning where a model learns from labeled examples, inputs paired with correct answers, to predict outputs for new data.
- [System Prompt](https://softwaredictionary.org/terms/system-prompt): A system prompt is the instructions an app gives a language model before the conversation starts, setting its role, rules, tone and what it should know.
- [Temperature](https://softwaredictionary.org/terms/llm-temperature): Temperature is a setting that controls how random an LLM's output is, from focused and predictable at low values to more varied and creative at high values.
- [Token](https://softwaredictionary.org/terms/llm-token): A token is the basic unit of text that an LLM reads and generates, usually a whole word, part of a word, or a punctuation mark, mapped to a numeric ID.
- [Tool Calling](https://softwaredictionary.org/terms/tool-calling): Tool calling is an LLM feature in which the model asks the application to run a specific function with structured arguments, then uses the result in its answer.
- [Training Data](https://softwaredictionary.org/terms/training-data): Training data is the set of examples a machine learning model learns from, and its quality, size, and coverage largely determine how well the model performs.
- [Transformer](https://softwaredictionary.org/terms/transformer): A transformer is a neural network architecture that uses attention to weigh how each token in a sequence relates to the others, and it powers most modern LLMs.
- [Unsupervised Learning](https://softwaredictionary.org/terms/unsupervised-learning): Unsupervised learning is machine learning in which a model finds patterns, groups, or structure in unlabeled data, without being given the correct answers.
- [Vector Database](https://softwaredictionary.org/terms/vector-database): A vector database is a database designed to store embeddings and quickly find the vectors most similar to a query, which powers semantic search and RAG.
- [Vibe Coding](https://softwaredictionary.org/terms/vibe-coding): Vibe coding is building software by describing what you want to an AI and accepting the code it writes, mostly judging the result by whether it seems to work.

## Software Architecture

Design principles and architectural styles that keep large codebases organized and maintainable. [All Software Architecture terms](https://softwaredictionary.org/categories/architecture)

- [Adapter Pattern](https://softwaredictionary.org/terms/adapter-pattern): The adapter pattern is a structural design pattern that wraps an existing class in a new interface, so code expecting one interface can use an incompatible one.
- [Backend for Frontend](https://softwaredictionary.org/terms/backend-for-frontend): Backend for frontend is an architecture pattern in which each kind of client, such as a web or mobile app, gets its own small backend tailored to its needs.
- [Builder Pattern](https://softwaredictionary.org/terms/builder-pattern): The builder pattern builds a complex object step by step through a separate builder object, with named steps instead of a long constructor full of arguments.
- [Circuit Breaker Pattern](https://softwaredictionary.org/terms/circuit-breaker): The circuit breaker pattern protects a system by stopping calls to a failing dependency for a while and failing fast instead of waiting on timeouts.
- [Clean Architecture](https://softwaredictionary.org/terms/clean-architecture): Clean architecture is a way of structuring software in layers so that the core business rules never depend on frameworks, databases, or user interfaces.
- [Client-Server Architecture](https://softwaredictionary.org/terms/client-server-architecture): Client-server architecture splits a system into clients, which request data or actions, and servers, which provide them, as when a browser requests a page.
- [Cohesion](https://softwaredictionary.org/terms/cohesion): Cohesion is a measure of how closely the responsibilities inside a module, class, or service belong together, and high cohesion is a sign of good design.
- [Consensus Algorithm](https://softwaredictionary.org/terms/consensus-algorithm): A consensus algorithm lets a group of machines agree on a single value or an ordered log of decisions, even when some of them crash or messages are lost.
- [Consistent Hashing](https://softwaredictionary.org/terms/consistent-hashing): Consistent hashing spreads keys across a changing set of servers so that adding or removing a server moves only a small share of the keys.
- [CQRS](https://softwaredictionary.org/terms/cqrs): CQRS is an architectural pattern that separates the code that changes data, called commands, from the code that reads data, called queries, into two models.
- [Decorator Pattern](https://softwaredictionary.org/terms/decorator-pattern): The decorator pattern adds behavior like logging or caching to an object by wrapping it in another with the same interface, without changing the original.
- [Dependency Injection](https://softwaredictionary.org/terms/dependency-injection): Dependency injection is a design technique in which an object receives the other objects it needs from the outside instead of creating them itself.
- [Design Pattern](https://softwaredictionary.org/terms/design-pattern): A design pattern is a proven, reusable solution to a common problem in software design, described as a general template rather than as finished code.
- [Distributed System](https://softwaredictionary.org/terms/distributed-system): A distributed system is a set of computers that work together over a network and appear to their users as a single system.
- [Domain-Driven Design](https://softwaredictionary.org/terms/domain-driven-design): Domain-driven design is an approach to building software that models the code closely on the business domain, using the same language as the domain experts.
- [DRY](https://softwaredictionary.org/terms/dry-principle): DRY is a software design principle stating that every piece of knowledge or logic should have one authoritative representation instead of being duplicated.
- [Event Sourcing](https://softwaredictionary.org/terms/event-sourcing): Event sourcing is a design pattern that stores every change to an application's state as an immutable event and rebuilds current state by replaying them.
- [Event-Driven Architecture](https://softwaredictionary.org/terms/event-driven-architecture): Event-driven architecture is a software design style in which services communicate by producing and reacting to events, such as an order being placed.
- [Factory Pattern](https://softwaredictionary.org/terms/factory-pattern): The factory pattern is a creational design pattern that moves object creation into a dedicated function or class, so callers never name the concrete class.
- [Fault Tolerance](https://softwaredictionary.org/terms/fault-tolerance): Fault tolerance is the ability of a system to keep working correctly, perhaps at reduced capacity, when some of its hardware or software components fail.
- [Hexagonal Architecture](https://softwaredictionary.org/terms/hexagonal-architecture): Hexagonal architecture is a way of structuring software so the core business logic talks to the outside world only through ports and swappable adapters.
- [High Availability](https://softwaredictionary.org/terms/high-availability): High availability is the ability of a system to stay operational nearly all the time, mainly by removing single points of failure through redundancy.
- [Horizontal Scaling](https://softwaredictionary.org/terms/horizontal-scaling): Horizontal scaling (scaling out) increases a system's capacity by adding machines and spreading the work across them, rather than making one machine bigger.
- [KISS Principle](https://softwaredictionary.org/terms/kiss-principle): The KISS principle is a design guideline stating that systems work best when kept as simple as possible, so developers should avoid unnecessary complexity.
- [Layered Architecture](https://softwaredictionary.org/terms/layered-architecture): Layered architecture splits an application into horizontal layers, such as presentation, business logic, and data access, each calling only the layer below it.
- [Loose Coupling](https://softwaredictionary.org/terms/loose-coupling): Loose coupling is a design principle in which components depend on each other as little as possible, so one can change without breaking the others.
- [Microservices](https://softwaredictionary.org/terms/microservices): Microservices are an architectural style where an application is split into small, independently deployable services that communicate over a network.
- [Monolith](https://softwaredictionary.org/terms/monolith): A monolith is a software application built and deployed as a single unit, where all features share one codebase, one process, and usually one database.
- [MVC](https://softwaredictionary.org/terms/mvc): MVC is an architectural pattern that splits an application into a Model for data and logic, a View for display, and a Controller that handles user input.
- [MVVM](https://softwaredictionary.org/terms/mvvm): MVVM (Model-View-ViewModel) is a UI pattern where a ViewModel holds a screen's state and actions and the View binds to it, so the UI follows state changes.
- [Observer Pattern](https://softwaredictionary.org/terms/observer-pattern): The observer pattern is a behavioral design pattern in which an object, the subject, automatically notifies a list of subscribers whenever its state changes.
- [Peer-to-Peer](https://softwaredictionary.org/terms/peer-to-peer): Peer-to-peer (P2P) is a network design in which peers connect and share resources directly, each acting as both client and server, with no central server.
- [Refactoring](https://softwaredictionary.org/terms/refactoring): Refactoring is the process of restructuring existing code to make it cleaner and easier to maintain without changing what the code does from the outside.
- [Repository Pattern](https://softwaredictionary.org/terms/repository-pattern): The repository pattern hides data access behind a collection-like interface, so business code can load and save objects without knowing where they are stored.
- [Saga Pattern](https://softwaredictionary.org/terms/saga-pattern): The saga pattern runs a transaction spanning several services as a sequence of local steps, undoing completed steps with compensating actions if one fails.
- [Scalability](https://softwaredictionary.org/terms/scalability): Scalability is a system's ability to handle growing amounts of work, such as more users or data, by adding resources without a drop in performance.
- [Separation of Concerns](https://softwaredictionary.org/terms/separation-of-concerns): Separation of concerns is a design principle that divides a program into distinct parts, each responsible for one clearly defined aspect of its behavior.
- [Service Discovery](https://softwaredictionary.org/terms/service-discovery): Service discovery is how services in a distributed system find the current addresses of other services, which change as instances start, stop and move.
- [Service-Oriented Architecture](https://softwaredictionary.org/terms/service-oriented-architecture): Service-oriented architecture builds enterprise software from reusable, network-accessible services that communicate with each other through standard contracts.
- [Sidecar Pattern](https://softwaredictionary.org/terms/sidecar-pattern): The sidecar pattern runs a helper process next to an application, sharing its lifecycle and network, to add features such as logging, proxying or security.
- [Singleton Pattern](https://softwaredictionary.org/terms/singleton-pattern): The singleton pattern is a creational design pattern that ensures a class has only one instance and provides a single, global point of access to it.
- [SOLID](https://softwaredictionary.org/terms/solid): SOLID is a set of five object-oriented design principles that help developers write code that is easier to understand, extend, test, and maintain.
- [Strangler Fig Pattern](https://softwaredictionary.org/terms/strangler-fig-pattern): The strangler fig pattern is a way to replace a legacy system gradually by routing features to new code one at a time until the old system can be retired.
- [Strategy Pattern](https://softwaredictionary.org/terms/strategy-pattern): The strategy pattern is a behavioral design pattern that puts interchangeable algorithms behind one interface, so code can switch between them at run time.
- [Technical Debt](https://softwaredictionary.org/terms/technical-debt): Technical debt is the future cost of extra work created when developers choose a quick or limited solution now instead of a better approach that takes longer.
- [Twelve-Factor App](https://softwaredictionary.org/terms/twelve-factor-app): A twelve-factor app is a web application built according to twelve practices that make it portable, easy to deploy, and simple to scale in the cloud.
- [Vertical Scaling](https://softwaredictionary.org/terms/vertical-scaling): Vertical scaling (scaling up) increases a system's capacity by giving a single machine more CPU, memory or faster storage, instead of adding more machines.
- [YAGNI](https://softwaredictionary.org/terms/yagni): YAGNI is a principle from extreme programming that says not to build a feature or abstraction until you actually need it, rather than because you might later.

## Testing & Quality

How teams check that code works and keeps working: kinds of tests, test doubles and the tools that catch mistakes early. [All Testing & Quality terms](https://softwaredictionary.org/categories/testing)

- [A/B Testing](https://softwaredictionary.org/terms/ab-testing): A/B testing is an experiment that shows two versions of a feature to random groups of real users and measures which one performs better on a chosen metric.
- [Acceptance Testing](https://softwaredictionary.org/terms/acceptance-testing): Acceptance testing checks whether software meets the requirements agreed with its users or customers, so the team can decide if it is ready to release.
- [Assertion](https://softwaredictionary.org/terms/assertion): An assertion is a statement in code declaring that a condition must be true at that point, stopping the test or program with an error if it is false.
- [Behavior-Driven Development](https://softwaredictionary.org/terms/behavior-driven-development): Behavior-driven development is a practice where developers, testers, and business people agree on plain-language examples that become automated tests.
- [Black-Box Testing](https://softwaredictionary.org/terms/black-box-testing): Black-box testing checks software only through its inputs and outputs, against what it is supposed to do, without looking at or relying on the code inside.
- [Contract Testing](https://softwaredictionary.org/terms/contract-testing): Contract testing is a technique that checks whether two services agree on the requests and responses they exchange, without running both of them together.
- [Cypress](https://softwaredictionary.org/terms/cypress): Cypress is a JavaScript framework that runs end-to-end and component tests for web apps inside the browser, with automatic waiting and an interactive runner.
- [End-to-End Test](https://softwaredictionary.org/terms/end-to-end-test): An end-to-end test is an automated test that runs a complete user journey through the whole application, from the user interface to the database and back.
- [Exploratory Testing](https://softwaredictionary.org/terms/exploratory-testing): Exploratory testing is a hands-on approach in which a tester learns about the software, designs tests, and runs them at once, guided by what they discover.
- [Flaky Test](https://softwaredictionary.org/terms/flaky-test): A flaky test is an automated test that sometimes passes and sometimes fails without any change to the code, which makes its results hard to trust.
- [Fuzz Testing](https://softwaredictionary.org/terms/fuzz-testing): Fuzz testing is an automated technique that feeds a program huge numbers of unexpected or malformed inputs to find crashes, hangs, and security vulnerabilities.
- [Integration Test](https://softwaredictionary.org/terms/integration-test): An integration test is an automated test that checks whether several parts of a system, such as code, a database, and an API, work correctly together.
- [Jest](https://softwaredictionary.org/terms/jest): Jest is a popular JavaScript testing framework that bundles a test runner, assertions, mocking, snapshots and code coverage in one package with little setup.
- [Linting](https://softwaredictionary.org/terms/linting): Linting is the automated analysis of source code, without running it, to flag likely bugs, style problems, and suspicious patterns before the code ships.
- [Load Testing](https://softwaredictionary.org/terms/load-testing): Load testing is a type of performance testing that simulates many users or requests at once to measure how a system behaves under expected traffic.
- [Mocking](https://softwaredictionary.org/terms/mocking): Mocking is a testing technique that replaces a real dependency, such as a database or API, with a fake you control so that code can be tested in isolation.
- [Mutation Testing](https://softwaredictionary.org/terms/mutation-testing): Mutation testing measures the quality of a test suite by inserting small deliberate bugs into the code and checking whether the tests fail and catch each one.
- [Performance Testing](https://softwaredictionary.org/terms/performance-testing): Performance testing measures how fast, stable and scalable a system is under expected and extreme load, from response times to its breaking point.
- [Playwright](https://softwaredictionary.org/terms/playwright): Playwright is Microsoft's open-source framework for end-to-end testing and browser automation, driving Chromium, Firefox and WebKit through one API.
- [Property-Based Testing](https://softwaredictionary.org/terms/property-based-testing): Property-based testing checks that a rule holds for many automatically generated inputs, instead of only for a handful of examples written by hand.
- [Quality Assurance](https://softwaredictionary.org/terms/quality-assurance): Quality assurance (QA) is the set of practices that ensure software meets its requirements and works reliably, aiming to prevent defects, not just find them.
- [Regression Testing](https://softwaredictionary.org/terms/regression-testing): Regression testing is the practice of re-running existing tests after a code change to make sure that features which used to work have not broken.
- [Selenium](https://softwaredictionary.org/terms/selenium): Selenium is an open-source suite of tools for automating web browsers, used mainly for end-to-end testing, with its WebDriver API available in many languages.
- [Smoke Test](https://softwaredictionary.org/terms/smoke-test): A smoke test is a quick, shallow check that the most important features of a build work at all, run before any time is spent on deeper testing.
- [Snapshot Testing](https://softwaredictionary.org/terms/snapshot-testing): Snapshot testing is a technique that saves the output of code to a file on the first run and fails later runs if the output no longer matches that copy.
- [Static Analysis](https://softwaredictionary.org/terms/static-analysis): Static analysis is the automated examination of source code without running it, to find bugs, security vulnerabilities, and quality problems early.
- [Stress Testing](https://softwaredictionary.org/terms/stress-testing): Stress testing pushes a system beyond its expected workload on purpose to find its breaking point and to check that it fails gracefully and recovers afterward.
- [Test Automation](https://softwaredictionary.org/terms/test-automation): Test automation is using code to run tests and check their results, so the same checks repeat quickly and consistently on every change instead of by hand.
- [Test Case](https://softwaredictionary.org/terms/test-case): A test case is a check of one specific behavior: starting conditions, input or steps, and the expected result that shows if the software behaves correctly.
- [Test Coverage](https://softwaredictionary.org/terms/test-coverage): Test coverage is a metric that measures how much of a program's source code is executed when its automated tests run, usually shown as a percentage.
- [Test Fixture](https://softwaredictionary.org/terms/test-fixture): A test fixture is the known state a test needs before it runs, such as sample data or a configured object, plus the code that sets it up and tears it down.
- [Test Pyramid](https://softwaredictionary.org/terms/test-pyramid): The test pyramid is a model for balancing automated tests: many fast unit tests, fewer integration tests, and only a few slow end-to-end tests at the top.
- [Test Runner](https://softwaredictionary.org/terms/test-runner): A test runner is a tool that finds a project's automated tests, executes them, and reports which ones passed or failed, usually from a single command.
- [Test-Driven Development](https://softwaredictionary.org/terms/test-driven-development): Test-driven development is a coding practice in which you write a failing test first, then write just enough code to pass it, and then clean up the design.
- [Unit Test](https://softwaredictionary.org/terms/unit-test): A unit test is a small, automated check that verifies one function, method, or class behaves correctly in isolation from the rest of the program.
- [White-Box Testing](https://softwaredictionary.org/terms/white-box-testing): White-box testing designs tests from knowledge of the code's internal structure, so that its statements, branches and paths are exercised and checked directly.

## Networking

How data travels between machines: addresses, ports, protocols and the things that make connections fast, slow or safe. [All Networking terms](https://softwaredictionary.org/categories/networking)

- [ARP](https://softwaredictionary.org/terms/arp): ARP is a network protocol that finds the MAC address belonging to an IPv4 address on the local network, so a device knows where to deliver each Ethernet frame.
- [Bandwidth](https://softwaredictionary.org/terms/bandwidth): Bandwidth is the maximum amount of data a network connection can carry per second, usually measured in megabits or gigabits per second (Mbps or Gbps).
- [BGP](https://softwaredictionary.org/terms/bgp): BGP (Border Gateway Protocol) is the routing protocol that links the internet's autonomous systems by letting them announce which IP ranges they can reach.
- [CIDR](https://softwaredictionary.org/terms/cidr): CIDR (Classless Inter-Domain Routing) writes an IP range as an address and prefix length, like 10.0.0.0/16; the prefix counts the leading network bits.
- [Default Gateway](https://softwaredictionary.org/terms/default-gateway): A default gateway is the router a device sends traffic to whenever the destination lies outside its own subnet, acting as the network's exit to other networks.
- [DHCP](https://softwaredictionary.org/terms/dhcp): DHCP is a network protocol that automatically gives devices an IP address and other settings, such as the router and DNS server, when they join a network.
- [DNS Record](https://softwaredictionary.org/terms/dns-record): A DNS record is an entry in a domain's DNS zone that maps a name to information, such as an IP address (A, AAAA), another name (CNAME) or mail servers (MX).
- [Firewall](https://softwaredictionary.org/terms/firewall): A firewall is a security system that checks network traffic and allows or blocks it based on rules, acting as a barrier between trusted and untrusted networks.
- [HTTP/2](https://softwaredictionary.org/terms/http-2): HTTP/2 is the second major version of HTTP, sending many requests and responses at once over one connection in a compact binary format so pages load faster.
- [IP Address](https://softwaredictionary.org/terms/ip-address): An IP address is a numeric label assigned to each device on a network so that data can be routed to it, much like a postal address for a house.
- [IPv4](https://softwaredictionary.org/terms/ipv4): IPv4 is the internet's original addressing system, using 32-bit addresses written as four numbers such as 192.168.1.10, allowing about 4.3 billion addresses.
- [IPv6](https://softwaredictionary.org/terms/ipv6): IPv6 is the newest version of the Internet Protocol, using 128-bit addresses that give every device a unique address and replace the exhausted IPv4 pool.
- [LAN](https://softwaredictionary.org/terms/lan): A LAN is a network that connects devices within a small area such as a home, office or school, letting them reach each other directly and share resources fast.
- [Latency](https://softwaredictionary.org/terms/latency): Latency is the delay between sending a request and the start of a response, usually measured in milliseconds, and it shapes how responsive an app feels.
- [Localhost](https://softwaredictionary.org/terms/localhost): Localhost is the hostname for the computer you are using; it resolves to the loopback address 127.0.0.1 (::1 in IPv6), so its traffic stays on the machine.
- [MAC Address](https://softwaredictionary.org/terms/mac-address): A MAC address is a 48-bit hardware identifier assigned to a network interface and used to deliver data between devices on the same local network.
- [NAT](https://softwaredictionary.org/terms/nat): NAT is a technique in which a router rewrites the IP addresses in passing packets, letting many devices on a private network share one public IP address.
- [Network Switch](https://softwaredictionary.org/terms/network-switch): A network switch is a device that connects devices on the same local network and forwards each frame only to the port where its destination MAC address lives.
- [OSI Model](https://softwaredictionary.org/terms/osi-model): The OSI model is a conceptual framework that splits network communication into seven layers, from physical cables up to the applications people use.
- [Packet](https://softwaredictionary.org/terms/packet): A packet is a small, formatted unit of data sent across a network, made of a header with addressing information and a payload that carries the actual data.
- [Ping](https://softwaredictionary.org/terms/ping): Ping is a network utility that checks whether a host is reachable by sending it small ICMP echo requests and measuring how long each reply takes to return.
- [Port](https://softwaredictionary.org/terms/network-port): A port is a number from 0 to 65535 that identifies a specific program or service on a device, so traffic reaching an IP address gets to the right application.
- [Proxy Server](https://softwaredictionary.org/terms/proxy-server): A proxy server is an intermediary that receives network requests on behalf of clients or servers and passes them on, adding control, caching, or privacy.
- [QUIC](https://softwaredictionary.org/terms/quic): QUIC is a modern transport protocol built on UDP that provides encrypted, reliable, multiplexed connections with fast setup, and it is the foundation of HTTP/3.
- [Router](https://softwaredictionary.org/terms/router): A router is a networking device that forwards packets between different networks, choosing the next hop for each one based on its destination IP address.
- [SMTP](https://softwaredictionary.org/terms/smtp): SMTP is the internet's standard protocol for sending email, used by apps to submit messages and by mail servers to relay them to the recipient's mail server.
- [Socket](https://softwaredictionary.org/terms/socket): A socket is a software endpoint that a program opens to send and receive data over a network, identified by an IP address, a port number, and a protocol.
- [SSH](https://softwaredictionary.org/terms/ssh): SSH is a cryptographic network protocol for securely logging in to and running commands on remote computers, encrypting all traffic between the two machines.
- [Subnet](https://softwaredictionary.org/terms/subnet): A subnet is a smaller network carved out of a larger one by splitting its range of IP addresses, which keeps traffic organized, contained, and easier to secure.
- [TCP](https://softwaredictionary.org/terms/tcp): TCP is a core internet protocol that delivers data between two programs reliably and in order, by opening a connection and resending anything that gets lost.
- [TCP Handshake](https://softwaredictionary.org/terms/tcp-handshake): The TCP handshake is the SYN, SYN-ACK, ACK exchange a client and server use to open a connection and agree on starting sequence numbers before sending data.
- [Throughput](https://softwaredictionary.org/terms/throughput): Throughput is the amount of data or work a system actually handles per unit of time, like megabits per second on a network or requests per second on a server.
- [Traceroute](https://softwaredictionary.org/terms/traceroute): Traceroute is a network diagnostic tool that lists every router a packet passes through on its way to a destination, along with the delay to reach each one.
- [TTL](https://softwaredictionary.org/terms/time-to-live): TTL (time to live) is a limit on how long data stays valid: router hops left for an IP packet, or seconds a DNS or cached answer may be reused.
- [UDP](https://softwaredictionary.org/terms/udp): UDP is a lightweight internet protocol that sends small, independent messages called datagrams without a connection, favoring speed over guaranteed delivery.
- [VPN](https://softwaredictionary.org/terms/vpn): A VPN is a technology that creates an encrypted tunnel between a device and another network, so traffic can travel privately across the public internet.
- [WAN](https://softwaredictionary.org/terms/wan): A WAN is a network that connects devices and local networks across large distances, such as cities or countries, often over links rented from telecom providers.

## Data Structures

The shapes programs use to organize data, from lists and stacks to trees and graphs, and the classic ways to search and sort them. [All Data Structures terms](https://softwaredictionary.org/categories/data-structures)

- [Adjacency List](https://softwaredictionary.org/terms/adjacency-list): An adjacency list is a way of storing a graph in which each node keeps a list of the nodes it connects to, using memory in proportion to its nodes and edges.
- [B-Tree](https://softwaredictionary.org/terms/b-tree): A B-tree is a self-balancing search tree whose nodes hold many sorted keys and children, which keeps it shallow so lookups need very few disk or page reads.
- [Backtracking](https://softwaredictionary.org/terms/backtracking): Backtracking is a search technique that builds a solution one choice at a time and undoes the latest choice when it hits a dead end, then tries another option.
- [Balanced Tree](https://softwaredictionary.org/terms/balanced-tree): A balanced tree is a tree that keeps its height close to log n by rebalancing after changes, so search, insert, and delete stay O(log n) even in the worst case.
- [Binary Search](https://softwaredictionary.org/terms/binary-search): Binary search is an algorithm that finds a value in a sorted list by repeatedly halving the search range, taking O(log n) time instead of checking every item.
- [Binary Search Tree](https://softwaredictionary.org/terms/binary-search-tree): A binary search tree is a binary tree in which each node's left subtree holds smaller values and its right subtree larger ones, enabling fast ordered lookups.
- [Bloom Filter](https://softwaredictionary.org/terms/bloom-filter): A Bloom filter is a compact probabilistic data structure that tells you an item is definitely not in a set or probably is, while using very little memory.
- [Breadth-First Search](https://softwaredictionary.org/terms/breadth-first-search): Breadth-first search is a graph traversal algorithm that visits nodes in order of their distance from the start, exploring all neighbors before going deeper.
- [Bubble Sort](https://softwaredictionary.org/terms/bubble-sort): Bubble sort is a simple sorting algorithm that keeps swapping out-of-order neighbors, so each pass carries the largest remaining value to the end.
- [Depth-First Search](https://softwaredictionary.org/terms/depth-first-search): Depth-first search is a graph traversal algorithm that follows one path as far as it can go before backtracking to explore the next unvisited branch.
- [Deque](https://softwaredictionary.org/terms/deque): A deque is a double-ended queue that lets you add and remove items at both the front and the back in constant time, so it can act as both a stack and a queue.
- [Dijkstra's Algorithm](https://softwaredictionary.org/terms/dijkstras-algorithm): Dijkstra's algorithm is a graph algorithm that finds the shortest paths from a starting node to every other node when all edge weights are zero or positive.
- [Divide and Conquer](https://softwaredictionary.org/terms/divide-and-conquer): Divide and conquer is an algorithm design technique that splits a problem into smaller independent parts, solves each recursively, and combines the results.
- [Dynamic Programming](https://softwaredictionary.org/terms/dynamic-programming): Dynamic programming is a technique for solving problems by breaking them into overlapping subproblems and storing each answer so none is solved twice.
- [Graph](https://softwaredictionary.org/terms/graph): A graph is a data structure made of nodes, called vertices, connected by edges, and is used to model relationships such as roads, friendships, and dependencies.
- [Greedy Algorithm](https://softwaredictionary.org/terms/greedy-algorithm): A greedy algorithm builds a solution step by step, always taking the choice that looks best right now, without going back to reconsider earlier decisions.
- [Hash Collision](https://softwaredictionary.org/terms/hash-collision): A hash collision is two different inputs sharing a hash value or bucket, which hash tables must handle and cryptographic hashes must make infeasible to find.
- [Hash Table](https://softwaredictionary.org/terms/hash-table): A hash table is a data structure that stores key-value pairs and uses a hash function to find the value for any key in constant time on average.
- [Heap](https://softwaredictionary.org/terms/heap): A heap is a tree-based data structure that keeps the smallest or largest item at its root, so you can read it in O(1) and remove it in O(log n) time.
- [Insertion Sort](https://softwaredictionary.org/terms/insertion-sort): Insertion sort builds a sorted list one element at a time, putting each new one in its place among those already sorted, like sorting cards in your hand.
- [Linear Search](https://softwaredictionary.org/terms/linear-search): Linear search finds a value by checking each element of a list one by one from the start until it finds a match or reaches the end, taking O(n) time.
- [Linked List](https://softwaredictionary.org/terms/linked-list): A linked list is a data structure that stores items in separate nodes, where each node holds a value and a reference to the next node in the chain.
- [LRU Cache](https://softwaredictionary.org/terms/lru-cache): An LRU (least recently used) cache holds a fixed number of items and, when full, evicts the one unused the longest, betting that recent data will be reused.
- [Merge Sort](https://softwaredictionary.org/terms/merge-sort): Merge sort is a divide and conquer sorting algorithm that splits a list in half, sorts each half recursively, and merges the sorted halves in O(n log n) time.
- [Priority Queue](https://softwaredictionary.org/terms/priority-queue): A priority queue is a collection in which every item has a priority, and the highest-priority item is always removed first, no matter when it was added.
- [Queue](https://softwaredictionary.org/terms/queue): A queue is a data structure that stores items in first in, first out (FIFO) order, so the item that has waited longest is always the next one removed.
- [Quicksort](https://softwaredictionary.org/terms/quicksort): Quicksort is a divide and conquer sorting algorithm that partitions items around a chosen pivot, then sorts the smaller and larger groups the same way.
- [Set](https://softwaredictionary.org/terms/set-data-structure): A Set is a collection that stores each distinct value at most once and can check whether a value is present very quickly, usually in constant time.
- [Sliding Window](https://softwaredictionary.org/terms/sliding-window): The sliding window technique solves problems on contiguous parts of an array or string by updating a window as it slides instead of recomputing each subarray.
- [Sorting Algorithm](https://softwaredictionary.org/terms/sorting-algorithm): A sorting algorithm is a step-by-step method for arranging items in a defined order, such as numbers from smallest to largest or names alphabetically.
- [Stack](https://softwaredictionary.org/terms/stack): A stack is a data structure that stores items in last in, first out (LIFO) order, so the most recently added item is always the first one removed.
- [Topological Sort](https://softwaredictionary.org/terms/topological-sort): Topological sort is an algorithm that orders the nodes of a directed acyclic graph so that for every edge from A to B, A comes before B in the resulting list.
- [Tree](https://softwaredictionary.org/terms/tree): A tree is a hierarchical data structure made of nodes connected by edges, with a single root node at the top and child nodes branching out below it.
- [Trie](https://softwaredictionary.org/terms/trie): A trie is a tree-shaped data structure that stores strings character by character, so all words that share a prefix also share the same path from the root.
- [Two Pointers](https://softwaredictionary.org/terms/two-pointers): The two pointers technique walks an array or list with two indexes moved by simple rules, turning many problems that seem to need nested loops into one pass.
- [Union-Find](https://softwaredictionary.org/terms/union-find): Union-find, or disjoint set union, is a data structure that tracks which elements share a group and can merge groups or check connectivity almost instantly.

## Operating Systems

What happens underneath every program: processes and threads, memory, files, the shell and the kernel that runs it all. [All Operating Systems terms](https://softwaredictionary.org/categories/operating-systems)

- [Bootloader](https://softwaredictionary.org/terms/bootloader): A bootloader is a small program that runs after the computer's firmware starts, loads the operating system kernel into memory, and hands control over to it.
- [Command Line Interface](https://softwaredictionary.org/terms/command-line-interface): A command line interface (CLI) is a text-based way of using a computer: you type a command with options and arguments, press Enter, and read its output.
- [Context Switch](https://softwaredictionary.org/terms/context-switch): A context switch is when the operating system saves the state of the running thread or process and restores another one's state so it can use the CPU.
- [CPU](https://softwaredictionary.org/terms/cpu): A CPU (central processing unit) is the processor that executes a program's instructions, doing the arithmetic, logic and control work all software runs on.
- [CPU Cache](https://softwaredictionary.org/terms/cpu-cache): A CPU cache is a small, very fast memory on the processor that keeps copies of recently used data from RAM, so the CPU spends less time waiting for memory.
- [CPU Scheduling](https://softwaredictionary.org/terms/cpu-scheduling): CPU scheduling is how an operating system decides which ready process or thread runs on each CPU core next, and for how long, so the processor is shared fairly.
- [Daemon](https://softwaredictionary.org/terms/daemon): A daemon is a program that runs in the background without a user interface, usually started at boot, to provide a service such as logging, scheduling, or SSH.
- [Deadlock](https://softwaredictionary.org/terms/deadlock): A deadlock is a situation where two or more threads or processes wait forever for each other to release resources, so none of them can make progress.
- [Device Driver](https://softwaredictionary.org/terms/device-driver): A device driver is software that lets the operating system control a specific piece of hardware, translating generic OS requests into device-specific commands.
- [File Descriptor](https://softwaredictionary.org/terms/file-descriptor): A file descriptor is a small integer that a Unix-like operating system gives a process to refer to an open file, socket, pipe, or other input/output resource.
- [File Permissions](https://softwaredictionary.org/terms/file-permissions): File permissions are rules stored with each file that decide which users may read it, change it, or run it, enforced by the operating system on every access.
- [File System](https://softwaredictionary.org/terms/file-system): A file system is the part of an operating system that organizes data on a storage device into files and folders and tracks where each piece is stored.
- [GPU](https://softwaredictionary.org/terms/gpu): A GPU (graphics processing unit) is a processor whose thousands of small cores run the same calculation on lots of data at once, for graphics and AI.
- [Heap Memory](https://softwaredictionary.org/terms/heap-memory): Heap memory is the region for data a program allocates at runtime, whose size or lifetime isn't known in advance and can outlive the function that made it.
- [Hypervisor](https://softwaredictionary.org/terms/hypervisor): A hypervisor is software that creates and runs virtual machines, sharing one physical computer's CPU, memory, and devices among several isolated guest systems.
- [Interrupt](https://softwaredictionary.org/terms/interrupt): An interrupt is a signal to the CPU that an event needs immediate attention, making it pause its current work and run a special handler in the kernel.
- [Kernel](https://softwaredictionary.org/terms/kernel): A kernel is the core part of an operating system that manages the CPU, memory, and hardware devices and controls how programs get access to those resources.
- [Kernel Mode](https://softwaredictionary.org/terms/kernel-mode): Kernel mode is the privileged CPU state in which the OS kernel has full access to hardware and memory, while ordinary programs run in restricted user mode.
- [Memory Leak](https://softwaredictionary.org/terms/memory-leak): A memory leak is a bug where a program keeps holding memory it no longer needs, so its memory usage grows over time and can slow down or crash the system.
- [Mutex](https://softwaredictionary.org/terms/mutex): A mutex is a lock that lets only one thread at a time enter a critical section of code, so threads can't corrupt shared data by changing it at the same time.
- [Operating System](https://softwaredictionary.org/terms/operating-system): An operating system (OS) is the core software that manages a computer's hardware, shares it out among programs and gives them a common way to use it.
- [Paging](https://softwaredictionary.org/terms/paging): Paging is a memory management scheme that splits memory into fixed-size pages and uses page tables to map each process's virtual pages to physical RAM.
- [Process](https://softwaredictionary.org/terms/process): A process is a running instance of a program, with its own memory space, resources, and at least one thread of execution managed by the operating system.
- [Race Condition](https://softwaredictionary.org/terms/race-condition): A race condition is a bug where a program's result depends on the unpredictable timing of threads, processes, or requests that use shared data at the same time.
- [RAM](https://softwaredictionary.org/terms/ram): RAM (random access memory) is a computer's fast, temporary working memory, holding the programs and data in use; its contents are lost when power goes off.
- [Semaphore](https://softwaredictionary.org/terms/semaphore): A semaphore is a synchronization tool that keeps a counter of available permits, letting up to a fixed number of threads use a resource at the same time.
- [Shell](https://softwaredictionary.org/terms/shell): A shell is a program that reads commands typed by a user or written in a script and asks the operating system to run them, usually through a text interface.
- [Stack Memory](https://softwaredictionary.org/terms/stack-memory): Stack memory is where a thread keeps its functions' local variables and return addresses, growing with each call and shrinking automatically on return.
- [sudo](https://softwaredictionary.org/terms/sudo): sudo lets a permitted user run a single command with root's or another user's privileges, after confirming their own password, and logs what was run.
- [Swap Space](https://softwaredictionary.org/terms/swap-space): Swap space is an area on disk that the operating system uses as overflow for RAM, moving rarely used memory pages there when physical memory runs low.
- [System Call](https://softwaredictionary.org/terms/system-call): A system call is a request from a program to the operating system kernel to perform a privileged action, such as reading a file or starting a process.
- [Terminal](https://softwaredictionary.org/terms/terminal): A terminal is the program that shows a text interface, passing your keystrokes to a shell or command-line program and displaying the text it sends back.
- [Thread](https://softwaredictionary.org/terms/thread): A thread is the smallest unit of execution an operating system can schedule, running inside a process and sharing that process's memory with other threads.
- [Unix](https://softwaredictionary.org/terms/unix): Unix is a family of operating systems that began at Bell Labs in 1969 and whose design, with small tools, files and a shell, lives on in Linux and macOS.
- [Unix Signal](https://softwaredictionary.org/terms/unix-signal): A Unix signal is a short asynchronous notification the kernel delivers to a process to report an event, such as a stop request, an error, or an expired timer.
- [User Space](https://softwaredictionary.org/terms/user-space): User space is the restricted area where ordinary programs run, kept separate from kernel space so a buggy or malicious app cannot take down the whole system.
- [Virtual Memory](https://softwaredictionary.org/terms/virtual-memory): Virtual memory is an operating system technique that gives each process its own private address space and maps it to physical RAM or disk behind the scenes.

## Programming Languages

The languages developers write in, what each one is known for, and where you are most likely to meet it. [All Programming Languages terms](https://softwaredictionary.org/categories/languages)

- [Assembly Language](https://softwaredictionary.org/terms/assembly-language): Assembly language is a low-level language whose instructions map almost one-to-one onto a processor's machine code, written as short mnemonics like mov and add.
- [Bash](https://softwaredictionary.org/terms/bash): Bash is a Unix shell and scripting language, the default on most Linux systems, used both to type commands interactively and to automate tasks with scripts.
- [C](https://softwaredictionary.org/terms/c-language): C is a compiled, low-level programming language that gives direct control over memory and is used to build operating systems, drivers, and embedded software.
- [C#](https://softwaredictionary.org/terms/csharp): C# is a statically typed, object-oriented language that runs on the .NET runtime with garbage collection and is used for web backends, desktop apps, and games.
- [C++](https://softwaredictionary.org/terms/cpp): C++ is a compiled, statically typed language that extends C with classes and templates while keeping low-level control over memory and performance.
- [Clojure](https://softwaredictionary.org/terms/clojure): Clojure is a modern, dynamic dialect of Lisp that runs on the JVM, emphasizing immutable data, functional programming and interactive, REPL-driven development.
- [COBOL](https://softwaredictionary.org/terms/cobol): COBOL (Common Business-Oriented Language) is a language from 1959 for business data processing that still runs critical banking and government systems.
- [Dart](https://softwaredictionary.org/terms/dart): Dart is a statically typed, garbage-collected language from Google that compiles to native code and JavaScript, best known as the language of Flutter apps.
- [Elixir](https://softwaredictionary.org/terms/elixir): Elixir is a dynamic, functional language that runs on the Erlang virtual machine and is known for building fault-tolerant, highly concurrent systems.
- [Erlang](https://softwaredictionary.org/terms/erlang): Erlang is a functional language created at Ericsson for telecom switches, designed for massive concurrency, fault tolerance and systems that must keep running.
- [F#](https://softwaredictionary.org/terms/fsharp): F# is a functional-first, statically typed language for .NET that pairs concise, type-inferred code with full access to the .NET ecosystem and C# libraries.
- [Fortran](https://softwaredictionary.org/terms/fortran): Fortran is the first widely used high-level language, created at IBM in 1957 for science and engineering and still used in high-performance computing.
- [Go](https://softwaredictionary.org/terms/go-language): Go is a compiled, statically typed language built for simplicity and fast builds, with garbage collection and built-in concurrency through goroutines.
- [Haskell](https://softwaredictionary.org/terms/haskell): Haskell is a purely functional, statically typed language with lazy evaluation, known for its expressive type system and mathematically precise code.
- [Java](https://softwaredictionary.org/terms/java): Java is a statically typed, object-oriented programming language that compiles to bytecode for the Java Virtual Machine, so programs run on many platforms.
- [Julia](https://softwaredictionary.org/terms/julia): Julia is a high-level, dynamically typed language for scientific and numerical computing, designed to be as easy to write as Python and as fast as C.
- [JVM](https://softwaredictionary.org/terms/jvm): The JVM runs Java bytecode, so the same compiled program works on any operating system; Kotlin, Scala and Clojure compile to that bytecode too.
- [Kotlin](https://softwaredictionary.org/terms/kotlin): Kotlin is a concise, statically typed language that runs on the JVM, works seamlessly with Java, and is widely used for Android and server-side development.
- [Lua](https://softwaredictionary.org/terms/lua): Lua is a small, fast scripting language designed to be embedded in other applications, making it popular for game scripting, plugins and configuration.
- [MATLAB](https://softwaredictionary.org/terms/matlab): MATLAB is a matrix-based language and environment from MathWorks for numerical computing, used by engineers and scientists for data analysis and simulation.
- [Objective-C](https://softwaredictionary.org/terms/objective-c): Objective-C is an object-oriented superset of C with Smalltalk-style messaging, and it was the main language for macOS and iOS apps before Swift arrived.
- [Perl](https://softwaredictionary.org/terms/perl): Perl is a mature, dynamic scripting language famous for text processing and built-in regular expressions, long used for system administration and web scripts.
- [PHP](https://softwaredictionary.org/terms/php): PHP is a dynamically typed scripting language designed for web development that runs on the server to generate HTML pages and respond to browser requests.
- [PowerShell](https://softwaredictionary.org/terms/powershell): PowerShell is Microsoft's command-line shell and scripting language for automating administration, passing objects rather than plain text between commands.
- [Programming Language](https://softwaredictionary.org/terms/programming-language): A programming language is a formal language with exact rules for writing instructions a computer can carry out, such as Python, JavaScript, Java or C.
- [Python](https://softwaredictionary.org/terms/python): Python is a general-purpose, dynamically typed programming language known for readable syntax and wide use in data science, automation, and web backends.
- [R](https://softwaredictionary.org/terms/r-language): R is a programming language and environment for statistics and data analysis, widely used in research for data visualization, statistical models and reports.
- [Ruby](https://softwaredictionary.org/terms/ruby): Ruby is a dynamic, object-oriented programming language designed for developer happiness, best known for readable syntax and the Ruby on Rails web framework.
- [Rust](https://softwaredictionary.org/terms/rust): Rust is a compiled, statically typed systems language that provides memory safety without a garbage collector by checking ownership rules at compile time.
- [Scala](https://softwaredictionary.org/terms/scala): Scala is a statically typed JVM language that combines object-oriented and functional programming and is widely used for data engineering and backend systems.
- [Swift](https://softwaredictionary.org/terms/swift): Swift is a compiled, statically typed language designed for safety and speed, used mainly to build apps for iPhone, iPad, Mac, and other Apple platforms.
- [Visual Basic](https://softwaredictionary.org/terms/visual-basic): Visual Basic is Microsoft's family of beginner-friendly languages, including classic Visual Basic, VB.NET and VBA, which automates Office apps with macros.
- [Zig](https://softwaredictionary.org/terms/zig): Zig is a low-level systems programming language that aims to be a simpler, safer successor to C, with manual memory management and no hidden control flow.

## Teams & Process

How software teams plan and ship work together: Agile, Scrum, Kanban, sprints, user stories and the rituals around them. [All Teams & Process terms](https://softwaredictionary.org/categories/software-process)

- [Acceptance Criteria](https://softwaredictionary.org/terms/acceptance-criteria): Acceptance criteria are the specific, testable conditions a single user story or backlog item must meet before the Product Owner accepts it as complete.
- [Agile](https://softwaredictionary.org/terms/agile): Agile is an approach to software development that delivers working software in small, frequent increments and adjusts plans based on regular feedback.
- [Burndown Chart](https://softwaredictionary.org/terms/burndown-chart): A burndown chart is a graph that shows how much work remains in a sprint or release over time, so a team can see at a glance whether it is on track to finish.
- [Bus Factor](https://softwaredictionary.org/terms/bus-factor): The bus factor is the smallest number of people who would have to leave a project suddenly before it stalls because nobody left knows its critical parts.
- [Code Smell](https://softwaredictionary.org/terms/code-smell): A code smell is a surface sign in code that often points to a deeper design problem, even though the code still works.
- [Daily Standup](https://softwaredictionary.org/terms/daily-standup): A daily standup is a short daily meeting, usually 15 minutes or less, where a team checks progress toward its goal, plans the day, and raises blockers.
- [Definition of Done](https://softwaredictionary.org/terms/definition-of-done): The Definition of Done is a shared checklist of quality standards that every piece of work must meet before a team can consider it complete.
- [Epic](https://softwaredictionary.org/terms/epic): An epic is a large body of work in Agile that is too big to finish in one sprint, so the team breaks it down into smaller user stories delivered over time.
- [Extreme Programming](https://softwaredictionary.org/terms/extreme-programming): Extreme Programming is an Agile method built on engineering practices such as pair programming, test-driven development, and continuous integration.
- [Kanban](https://softwaredictionary.org/terms/kanban): Kanban is an Agile method that visualizes work on a board of columns and limits how many items can be in progress at once to keep work flowing smoothly.
- [Lean Software Development](https://softwaredictionary.org/terms/lean-software-development): Lean software development applies lean manufacturing ideas to software, aiming to deliver customer value quickly by removing waste and improving flow.
- [Mob Programming](https://softwaredictionary.org/terms/mob-programming): Mob programming is a practice in which a whole team works on the same task, at the same time, on one shared computer, taking turns at the keyboard.
- [MVP](https://softwaredictionary.org/terms/mvp): An MVP is the simplest version of a product that real users can use, built to test a key assumption and learn as much as possible with the least effort.
- [Open Source](https://softwaredictionary.org/terms/open-source): Open source software is software whose source code is published under a license that lets anyone use, study, modify and share it.
- [Pair Programming](https://softwaredictionary.org/terms/pair-programming): Pair programming is an Agile technique in which two developers work together on the same code, with one typing while the other reviews and guides the work.
- [Planning Poker](https://softwaredictionary.org/terms/planning-poker): Planning poker is a team estimation technique in which members privately pick estimate cards for a task, reveal them at once, then discuss the differences.
- [Product Backlog](https://softwaredictionary.org/terms/product-backlog): The product backlog is a single ordered list of everything a team might do to improve a product, such as features, fixes, and technical work.
- [Product Owner](https://softwaredictionary.org/terms/product-owner): The Product Owner is the Scrum accountability responsible for maximizing a product's value by deciding what to build next and ordering the product backlog.
- [Proof of Concept](https://softwaredictionary.org/terms/proof-of-concept): A proof of concept (PoC) is a small, quick experiment built to show that an idea or technology can work in practice before investing in building it properly.
- [Retrospective](https://softwaredictionary.org/terms/retrospective): A retrospective is a team meeting held at the end of each sprint to reflect on how the team worked and agree on concrete ways to improve next time.
- [Scrum](https://softwaredictionary.org/terms/scrum): Scrum is an Agile framework in which a small team delivers a product in fixed-length cycles called sprints, using defined roles, events, and artifacts.
- [Scrum Master](https://softwaredictionary.org/terms/scrum-master): The Scrum Master is the Scrum accountability that helps a team and its organization use Scrum well by coaching, facilitating events, and removing impediments.
- [SDLC](https://softwaredictionary.org/terms/software-development-life-cycle): The software development life cycle (SDLC) is the sequence of stages software goes through: planning, design, building, testing, release and maintenance.
- [Software License](https://softwaredictionary.org/terms/software-license): A software license is the legal permission that says how software may be used, modified and distributed; open source licenses can be permissive or copyleft.
- [Spike](https://softwaredictionary.org/terms/spike): A spike is a short, timeboxed investigation an Agile team does to answer a question or reduce uncertainty before committing to build a feature.
- [Sprint](https://softwaredictionary.org/terms/sprint): A sprint is a fixed-length period of one month or less, often two weeks, in which a Scrum team works toward one goal and produces a usable product increment.
- [Sprint Planning](https://softwaredictionary.org/terms/sprint-planning): Sprint planning is the Scrum event that starts each sprint, where the team agrees on a sprint goal, selects backlog items it can finish and plans the work.
- [Story Points](https://softwaredictionary.org/terms/story-points): Story points are a unit Agile teams use to estimate the relative size of work items, combining complexity, amount of work, and uncertainty rather than hours.
- [Timeboxing](https://softwaredictionary.org/terms/timeboxing): Timeboxing is setting a fixed maximum time for an activity in advance and stopping when it runs out, keeping work focused and forcing decisions about scope.
- [User Story](https://softwaredictionary.org/terms/user-story): A user story is a short, plain-language description of a feature told from the user's point of view, explaining who wants it, what they want, and why.
- [Velocity](https://softwaredictionary.org/terms/velocity): Velocity is the amount of work an Agile team completes in one sprint, usually the total story points of finished items, used to forecast future sprints.
- [Waterfall](https://softwaredictionary.org/terms/waterfall): Waterfall is a sequential approach to software development in which requirements, design, building, testing, and release happen one after another.

## Comparisons

Side-by-side answers to "X vs Y" questions, each with a comparison table.

- [JavaScript vs TypeScript](https://softwaredictionary.org/compare/javascript-vs-typescript): JavaScript is the dynamically typed language that browsers and Node.js run, while TypeScript is a superset that adds static types and compiles to JavaScript.
- [SSR vs CSR](https://softwaredictionary.org/compare/ssr-vs-csr): Server-side rendering (SSR) builds full HTML on the server for each request, so content shows fast, while CSR builds the page in the browser with JavaScript.
- [SSG vs SSR](https://softwaredictionary.org/compare/ssg-vs-ssr): SSG builds each page into HTML once, at build time, and serves the same file to everyone, while SSR builds the HTML on every request, so it can show fresh data.
- [Cookies vs Local Storage](https://softwaredictionary.org/compare/cookie-vs-local-storage): Cookies are small data the browser sends to the server with every matching request, while local storage keeps larger data in the browser and never sends it.
- [DOM vs Virtual DOM](https://softwaredictionary.org/compare/dom-vs-virtual-dom): The DOM is the browser's live tree of page elements, while the virtual DOM is a light JavaScript copy that frameworks compare to decide what to change.
- [CSS Grid vs Flexbox](https://softwaredictionary.org/compare/css-grid-vs-flexbox): CSS Grid places items in rows and columns at once, in two dimensions, while Flexbox lines them up along one row or column, ideal inside components.
- [Compiler vs Interpreter](https://softwaredictionary.org/compare/compiler-vs-interpreter): A compiler translates a whole program before it runs, while an interpreter executes source code step by step at runtime, trading raw speed for faster feedback.
- [OOP vs Functional Programming](https://softwaredictionary.org/compare/oop-vs-functional-programming): OOP bundles data and the methods that change it into objects, while functional programming transforms immutable data with pure functions.
- [Array vs Linked List](https://softwaredictionary.org/compare/array-vs-linked-list): An array keeps elements side by side in memory, so any item is read instantly by index; a linked list chains nodes with pointers: cheap inserts, slow lookups.
- [Stack vs Queue](https://softwaredictionary.org/compare/stack-vs-queue): A stack removes the newest item first (last in, first out, LIFO), while a queue removes the oldest first (first in, first out, FIFO), like plates versus a line.
- [BFS vs DFS](https://softwaredictionary.org/compare/bfs-vs-dfs): BFS explores a graph level by level with a queue, finding shortest paths in unweighted graphs, while DFS goes deep down one branch, then backtracks.
- [Merge Sort vs Quicksort](https://softwaredictionary.org/compare/merge-sort-vs-quicksort): Merge sort guarantees O(n log n) time but uses extra memory, while quicksort partitions around a pivot in place and is usually faster, but can slow to O(n²).
- [Git Merge vs Rebase](https://softwaredictionary.org/compare/merge-vs-rebase): Git merge joins two branches with a merge commit that keeps the full history, while git rebase replays your commits onto another branch for a linear history.
- [Fork vs Branch](https://softwaredictionary.org/compare/fork-vs-branch): A fork is a full copy of a repository under another owner, used to contribute where you can't push, while a branch is a separate line of work in the same repo.
- [Git Reset vs Git Revert](https://softwaredictionary.org/compare/git-reset-vs-git-revert): Git reset moves a branch back to an earlier commit and drops the later ones, while git revert adds a new commit that undoes one, safe on shared branches.
- [Unit Test vs Integration Test](https://softwaredictionary.org/compare/unit-test-vs-integration-test): A unit test checks one small piece of code, like a function, in isolation within milliseconds; an integration test checks that several parts work together.
- [TDD vs BDD](https://softwaredictionary.org/compare/tdd-vs-bdd): In TDD, developers write a failing test before the code that makes it pass, while BDD builds on it with plain-language scenarios the whole team can read.
- [Agile vs Waterfall](https://softwaredictionary.org/compare/agile-vs-waterfall): Agile ships working software in short cycles and adapts the plan to feedback, while Waterfall moves through fixed phases from requirements to release.
- [Scrum vs Kanban](https://softwaredictionary.org/compare/scrum-vs-kanban): Scrum organizes work into fixed-length sprints with set roles and goals, while Kanban is a continuous flow on a board that limits how much work is in progress.
- [Go vs Rust](https://softwaredictionary.org/compare/go-vs-rust): Go is a simple, garbage-collected language for building network services fast, while Rust gets memory safety without a garbage collector, through ownership.
- [Monolith vs Microservices](https://softwaredictionary.org/compare/monolith-vs-microservices): A monolith is one app deployed as a single unit, simple to build and run, while microservices split it into small services that deploy and scale independently.
- [Python vs JavaScript](https://softwaredictionary.org/compare/python-vs-javascript): Python is a general-purpose language known for readable code and its data and AI libraries, while JavaScript is the web's language, run by browsers and Node.js.
- [Cookie vs Session](https://softwaredictionary.org/compare/cookie-vs-session): A cookie is small data the browser stores and sends back with each request, while a session is state the server keeps about a visitor, found by a cookie ID.
- [Callback vs Promise](https://softwaredictionary.org/compare/callback-vs-promise): A callback is a function you hand to another function to run when it's done, while a promise stands for a future result you can chain and catch errors on.
- [Compiler vs Transpiler](https://softwaredictionary.org/compare/compiler-vs-transpiler): A compiler turns code into a lower-level form a machine or VM runs, while a transpiler outputs another high-level language, like TypeScript to JavaScript.
- [Agile vs Scrum](https://softwaredictionary.org/compare/agile-vs-scrum): Agile is a set of values for building software in small, frequent steps with feedback, while Scrum is one framework that applies it with roles and sprints.
- [Library vs Framework](https://softwaredictionary.org/compare/library-vs-framework): A library is code you call when you need it, while a framework provides your app's structure and calls your code. You call a library; a framework calls you.
- [React vs Vue](https://softwaredictionary.org/compare/react-vs-vue): React is a library that uses JSX and leaves routing and state to its ecosystem, while Vue is a framework with HTML-like templates and official tools for both.
- [React vs Angular](https://softwaredictionary.org/compare/react-vs-angular): React is Meta's flexible UI library that you pair with other tools, while Angular is Google's opinionated framework with routing, forms and HTTP built in.
- [Next.js vs React](https://softwaredictionary.org/compare/nextjs-vs-react): React is a library for building UIs from components, while Next.js is a React framework that adds routing, server-side rendering and static generation.
- [Static vs Dynamic Typing](https://softwaredictionary.org/compare/static-vs-dynamic-typing): Static typing checks types before the program runs, usually with a compiler, while dynamic typing attaches types to values and checks them only at run time.
- [Vite vs Webpack](https://softwaredictionary.org/compare/vite-vs-webpack): Webpack bundles the whole app before serving it, even in development, while Vite serves native ES modules and bundles only for production, so it starts fast.
- [Git vs GitHub](https://softwaredictionary.org/compare/git-vs-github): Git is a version control tool that keeps your code's history on your computer, while GitHub hosts Git repositories online and adds pull requests, issues and CI.
- [Git Fetch vs Git Pull](https://softwaredictionary.org/compare/git-fetch-vs-git-pull): git fetch downloads new commits without touching your work, while git pull fetches and then immediately merges or rebases them into your current branch.
- [Python vs Java](https://softwaredictionary.org/compare/python-vs-java): Python is a concise, dynamically typed language popular for data, AI and scripting, while Java is a statically typed JVM language for enterprise and Android.
- [C vs C++](https://softwaredictionary.org/compare/c-vs-cpp): C is a small, procedural systems language from the early 1970s; C++ grew out of it into a much larger language with classes, templates and a rich library.
- [Black-Box vs White-Box Testing](https://softwaredictionary.org/compare/black-box-vs-white-box-testing): Black-box testing checks software against its requirements without looking at the code, while white-box testing bases tests on the code's internal structure.
- [Cypress vs Playwright](https://softwaredictionary.org/compare/cypress-vs-playwright): Cypress runs end-to-end tests inside the browser with an interactive runner, while Microsoft's Playwright drives browsers from outside, in several languages.
- [Django vs Flask](https://softwaredictionary.org/compare/django-vs-flask): Django is a full-featured Python framework with an ORM, admin panel and authentication built in, while Flask is a minimal one that leaves those choices to you.
- [Concurrency vs Parallelism](https://softwaredictionary.org/compare/concurrency-vs-parallelism): Concurrency is handling many tasks in overlapping time, even on one core, while parallelism is running several tasks at the same instant on multiple cores.
- [MVC vs MVVM](https://softwaredictionary.org/compare/mvc-vs-mvvm): MVC splits an app into a model, a view and a controller that handles input, while MVVM puts a ViewModel between model and view and syncs them by data binding.
- [Frontend vs Backend](https://softwaredictionary.org/compare/frontend-vs-backend): The frontend runs on the user's device and draws the interface, while the backend runs on servers and holds the data and rules the frontend relies on.
- [Class vs Object](https://softwaredictionary.org/compare/class-vs-object): A class is a blueprint that describes what data and behavior a kind of thing has, while an object is one concrete thing built from it, with its own values.
- [API vs SDK](https://softwaredictionary.org/compare/api-vs-sdk): An API is the set of requests or functions a service offers, while an SDK is a toolkit, usually built on that API, that makes it easier to use from a language.
- [Debounce vs Throttle](https://softwaredictionary.org/compare/debounce-vs-throttle): Debounce waits until a burst of events stops, then runs the function once, while throttle runs it at most once per interval as the events continue.
- [SQL vs NoSQL](https://softwaredictionary.org/compare/sql-vs-nosql): SQL databases keep data in related tables with a fixed schema, while NoSQL databases use flexible models like documents or key-value pairs that scale out.
- [REST vs GraphQL](https://softwaredictionary.org/compare/rest-vs-graphql): REST exposes many URLs that each return a fixed shape of data, while GraphQL exposes a single endpoint where the client asks for exactly the fields it needs.
- [REST vs gRPC](https://softwaredictionary.org/compare/rest-vs-grpc): REST exposes resources over HTTP, usually as JSON, while gRPC calls typed remote functions with binary messages over HTTP/2: faster, but harder from browsers.
- [WebSocket vs Server-Sent Events](https://softwaredictionary.org/compare/websocket-vs-server-sent-events): WebSocket opens a two-way channel where client and server both send messages anytime, while Server-Sent Events (SSE) let only the server push updates.
- [TCP vs UDP](https://softwaredictionary.org/compare/tcp-vs-udp): TCP opens a connection and guarantees complete, in-order delivery, while UDP sends independent packets with no guarantee, trading reliability for lower latency.
- [LAN vs WAN](https://softwaredictionary.org/compare/lan-vs-wan): A LAN connects devices in one building or site over fast, private links, while a WAN links networks across cities or countries, often over the internet.
- [VPN vs Proxy Server](https://softwaredictionary.org/compare/vpn-vs-proxy): A VPN encrypts all your device's traffic and sends it through a secure tunnel, while a proxy forwards only the traffic of apps set to use it, often unencrypted.
- [HTTP vs HTTPS](https://softwaredictionary.org/compare/http-vs-https): HTTPS is HTTP sent over encrypted TLS: the requests are the same, but HTTPS hides them from eavesdroppers, detects tampering and proves the server's identity.
- [Authentication vs Authorization](https://softwaredictionary.org/compare/authentication-vs-authorization): Authentication verifies who you are, for example with a password or passkey, while authorization decides what you are allowed to do once your identity is known.
- [Encryption vs Hashing](https://softwaredictionary.org/compare/encryption-vs-hashing): Encryption scrambles data with a key so it can be decrypted later, while hashing makes a fixed-length fingerprint that can't be reversed, ideal for passwords.
- [JWT vs Session](https://softwaredictionary.org/compare/jwt-vs-session): A JWT is a signed token that carries the user's identity, so servers verify it without a lookup, while sessions keep state on the server behind a random ID.
- [XSS vs CSRF](https://softwaredictionary.org/compare/xss-vs-csrf): XSS injects malicious scripts that run inside a trusted website, while CSRF tricks a logged-in user's browser into sending unwanted requests to that site.
- [Container vs Virtual Machine](https://softwaredictionary.org/compare/container-vs-virtual-machine): A container packages an app with its dependencies and shares the host's kernel, while a virtual machine runs its own OS: stronger isolation, more resources.
- [Docker vs Kubernetes](https://softwaredictionary.org/compare/docker-vs-kubernetes): Docker builds container images and runs containers on one machine, while Kubernetes runs them across a cluster, handling scheduling, scaling and self-healing.
- [Blue-Green vs Canary Deployment](https://softwaredictionary.org/compare/blue-green-vs-canary-deployment): Blue-green runs two full environments and switches all traffic to the new one at once, while canary sends a small share to the new version first and grows it.
- [Reverse Proxy vs Load Balancer](https://softwaredictionary.org/compare/reverse-proxy-vs-load-balancer): A reverse proxy forwards requests to the servers behind it and adds TLS, caching and security, while a load balancer spreads load so no server is overloaded.
- [Sharding vs Replication](https://softwaredictionary.org/compare/sharding-vs-replication): Sharding splits a database so each server stores only part of the data, while replication copies the same data to several servers for redundancy and reads.
- [Data Warehouse vs Data Lake](https://softwaredictionary.org/compare/data-warehouse-vs-data-lake): A data warehouse stores cleaned, structured data in a fixed schema for fast queries, while a data lake keeps raw data of any type and adds structure on read.
- [Process vs Thread](https://softwaredictionary.org/compare/process-vs-thread): A process is a running program with its own memory, while threads run inside a process and share its memory: lighter, but harder to coordinate safely.
- [Mutex vs Semaphore](https://softwaredictionary.org/compare/mutex-vs-semaphore): A mutex lets one thread at a time use a shared resource and only its owner releases it, while a semaphore is a counter that lets up to N threads in at once.
- [Machine Learning vs Deep Learning](https://softwaredictionary.org/compare/machine-learning-vs-deep-learning): Machine learning covers algorithms that learn from data; deep learning is a subset whose many-layered neural networks find features alone but need more data.
- [RAG vs Fine-Tuning](https://softwaredictionary.org/compare/rag-vs-fine-tuning): RAG gives a language model relevant documents at question time so it answers from fresh sources, while fine-tuning trains it further to change its behavior.
- [Supervised vs Unsupervised Learning](https://softwaredictionary.org/compare/supervised-vs-unsupervised-learning): Supervised learning trains a model on labeled examples so it can predict answers for new data, while unsupervised learning finds patterns in unlabeled data.
- [REST vs SOAP](https://softwaredictionary.org/compare/rest-vs-soap): REST is a lightweight API style on plain HTTP, URLs and usually JSON, while SOAP is a formal protocol that wraps messages in XML under a strict WSDL contract.
- [Message Queue vs Pub/Sub](https://softwaredictionary.org/compare/message-queue-vs-pub-sub): In a message queue each message goes to one consumer, so workers share the load, while pub/sub copies every message to each subscriber so many services react.
- [API Gateway vs Load Balancer](https://softwaredictionary.org/compare/api-gateway-vs-load-balancer): A load balancer spreads traffic across copies of one service, while an API gateway is one front door that routes calls to the right service and checks auth.
- [DevOps vs SRE](https://softwaredictionary.org/compare/devops-vs-sre): DevOps is a culture that unites development and operations to ship faster and safer; SRE is Google's practice of running production to reliability targets.
- [SQL Injection vs XSS](https://softwaredictionary.org/compare/sql-injection-vs-xss): SQL injection makes a server run an attacker's database commands, while XSS makes a website run an attacker's JavaScript in other users' browsers.
- [OAuth vs SSO](https://softwaredictionary.org/compare/oauth-vs-sso): OAuth lets an app reach a user's data on another service without their password, while SSO is one login for many apps, built on SAML or OpenID Connect.
- [Microservices vs SOA](https://softwaredictionary.org/compare/microservices-vs-soa): SOA splits enterprise systems into shared services that talk over a central bus, while microservices split one app into small, independently deployed services.
- [PostgreSQL vs MySQL](https://softwaredictionary.org/compare/postgresql-vs-mysql): Both are open-source relational databases: PostgreSQL is known for advanced SQL, extensibility and strictness, MySQL for simplicity, speed and wide adoption.
- [OLTP vs OLAP](https://softwaredictionary.org/compare/oltp-vs-olap): OLTP systems handle many small, fast transactions such as orders and payments, while OLAP systems run large analytical queries over historical data.
- [Kafka vs RabbitMQ](https://softwaredictionary.org/compare/kafka-vs-rabbitmq): Kafka is a streaming platform that keeps events in a durable, replayable log, while RabbitMQ routes messages to queues and deletes them once acknowledged.
- [Terraform vs Ansible](https://softwaredictionary.org/compare/terraform-vs-ansible): Terraform declares and creates cloud infrastructure and tracks it in a state file, while Ansible configures existing machines and deploys software over SSH.
- [AWS vs Azure](https://softwaredictionary.org/compare/aws-vs-azure): AWS is Amazon's cloud, the oldest and largest with the most services, while Azure is Microsoft's, strongest where companies already use Microsoft products.
- [Docker Compose vs Kubernetes](https://softwaredictionary.org/compare/docker-compose-vs-kubernetes): Docker Compose runs a multi-container app on a single machine, while Kubernetes orchestrates containers across a cluster with scaling and self-healing.
- [IaaS vs PaaS](https://softwaredictionary.org/compare/iaas-vs-paas): IaaS rents you raw infrastructure like virtual machines that you manage yourself, while PaaS runs your code and handles the servers, OS and scaling for you.
- [Firebase vs Supabase](https://softwaredictionary.org/compare/firebase-vs-supabase): Both give apps a ready-made backend: Firebase is Google's platform built on NoSQL, while Supabase is an open-source alternative built on PostgreSQL.
- [Horizontal vs Vertical Scaling](https://softwaredictionary.org/compare/horizontal-vs-vertical-scaling): Horizontal scaling adds more machines and spreads the load across them, while vertical scaling gives one machine more CPU, memory or faster storage.
- [Stack vs Heap](https://softwaredictionary.org/compare/stack-vs-heap): The stack manages function calls' local variables automatically in last-in, first-out order, fast but small; the heap holds runtime data, larger but slower.
- [CPU vs GPU](https://softwaredictionary.org/compare/cpu-vs-gpu): A CPU has a few powerful cores for varied, sequential work; a GPU has thousands of simpler cores that run one operation on lots of data in parallel.
- [IPv4 vs IPv6](https://softwaredictionary.org/compare/ipv4-vs-ipv6): IPv4 uses 32-bit addresses, allowing about 4.3 billion of them, while IPv6 uses 128-bit addresses, enough for every device to have its own public address.
- [Latency vs Throughput](https://softwaredictionary.org/compare/latency-vs-throughput): Latency is how long one request or piece of data takes to arrive, while throughput is how much data or how many requests a system handles per unit of time.
- [OAuth vs OpenID Connect](https://softwaredictionary.org/compare/oauth-vs-openid-connect): OAuth 2.0 lets an app access an API for a user with an access token; OpenID Connect adds an identity layer that says who the user is with a signed ID token.
- [Symmetric vs Asymmetric Encryption](https://softwaredictionary.org/compare/symmetric-vs-asymmetric-encryption): Symmetric encryption uses one shared secret key and is fast, while asymmetric uses a public and a private key, which solves key sharing but is much slower.
- [AI vs Machine Learning](https://softwaredictionary.org/compare/ai-vs-machine-learning): AI aims to make machines do tasks that need human intelligence; machine learning is one way to get there, learning from data instead of hand-written rules.
- [Chatbot vs AI Agent](https://softwaredictionary.org/compare/chatbot-vs-ai-agent): A chatbot converses and answers questions, while an AI agent pursues a goal on its own, planning steps and using tools such as search, code execution or APIs.
- [Terminal vs Shell](https://softwaredictionary.org/compare/terminal-vs-shell): A terminal is the program that shows a text interface and passes on your keystrokes, while the shell runs inside it, reading your commands and executing them.
- [JSON vs XML](https://softwaredictionary.org/compare/json-vs-xml): Both write structured data as text: JSON is lighter and maps onto objects and arrays, while XML adds attributes, namespaces and schemas.
- [JWT vs OAuth](https://softwaredictionary.org/compare/jwt-vs-oauth): OAuth is a framework for giving an app limited access to user data; a JWT is a token format. They aren't rivals: OAuth often issues JWT access tokens.
- [MongoDB vs PostgreSQL](https://softwaredictionary.org/compare/mongodb-vs-postgresql): PostgreSQL keeps data in fixed-schema tables and joins them with SQL, while MongoDB stores flexible JSON-like documents and was built to shard across servers.
- [SLA vs SLO](https://softwaredictionary.org/compare/sla-vs-slo): An SLO is an internal target, like 99.9% of requests succeeding in 30 days; an SLA promises customers a service level, usually with credits if it is missed.
- [Proxy vs Reverse Proxy](https://softwaredictionary.org/compare/proxy-vs-reverse-proxy): A forward proxy sits in front of clients and sends their requests to the internet; a reverse proxy sits in front of servers and takes requests for them.

## Learning paths

Reading routes through the glossary, in an order that builds up.

- [How the web works](https://softwaredictionary.org/paths/how-the-web-works): What happens between typing an address and seeing a page. (23 pages)
- [Frontend developer](https://softwaredictionary.org/paths/frontend-developer): From HTML and CSS to frameworks, rendering and shipping fast pages. (39 pages)
- [Backend developer](https://softwaredictionary.org/paths/backend-developer): APIs, servers, data and the jobs that keep running when nobody's watching. (33 pages)
- [Databases from scratch](https://softwaredictionary.org/paths/databases-from-scratch): Tables, queries and transactions, then what changes when data outgrows one server. (31 pages)
- [DevOps and the cloud](https://softwaredictionary.org/paths/devops-and-cloud): Where code runs, how changes ship safely, and how you know it all works. (40 pages)
- [Security essentials](https://softwaredictionary.org/paths/security-essentials): Logins, secrets, the attacks everyone should know, and how to stop them. (40 pages)
- [AI and large language models](https://softwaredictionary.org/paths/ai-and-llms): How machines learn, what's inside a chatbot, and how to build with one. (41 pages)
- [Computer science foundations](https://softwaredictionary.org/paths/computer-science-foundations): Data structures, classic algorithms and what really happens when code runs. (42 pages)
- [Working on a software team](https://softwaredictionary.org/paths/working-on-a-team): Git, the way teams plan their work, and the habits that keep code healthy. (35 pages)
- [System design basics](https://softwaredictionary.org/paths/system-design): How big systems are shaped, scaled and kept running when parts fail. (33 pages)
- [Programming fundamentals](https://softwaredictionary.org/paths/programming-fundamentals): The ideas every programming language shares, from variables to classes. (39 pages)
- [Testing software](https://softwaredictionary.org/paths/testing-software): How teams know their code works, and keep it working as it changes. (36 pages)
- [Git from zero](https://softwaredictionary.org/paths/git-from-zero): Commits, branches and pull requests, then undoing mistakes without fear. (39 pages)
- [Building with LLMs](https://softwaredictionary.org/paths/building-with-llms): Prompts, retrieval, tools and evaluation: what it takes to ship an AI feature. (24 pages)

## Optional

- [Full glossary text](https://softwaredictionary.org/llms-full.txt): every definition and comparison in a single Markdown file
- [Programming Fundamentals cheat sheet](https://softwaredictionary.org/categories/programming/cheat-sheet)
- [Web Development cheat sheet](https://softwaredictionary.org/categories/web/cheat-sheet)
- [Backend & APIs cheat sheet](https://softwaredictionary.org/categories/backend/cheat-sheet)
- [Databases cheat sheet](https://softwaredictionary.org/categories/databases/cheat-sheet)
- [DevOps & Cloud cheat sheet](https://softwaredictionary.org/categories/devops/cheat-sheet)
- [Version Control cheat sheet](https://softwaredictionary.org/categories/version-control/cheat-sheet)
- [Security cheat sheet](https://softwaredictionary.org/categories/security/cheat-sheet)
- [AI & Machine Learning cheat sheet](https://softwaredictionary.org/categories/ai/cheat-sheet)
- [Software Architecture cheat sheet](https://softwaredictionary.org/categories/architecture/cheat-sheet)
- [Testing & Quality cheat sheet](https://softwaredictionary.org/categories/testing/cheat-sheet)
- [Networking cheat sheet](https://softwaredictionary.org/categories/networking/cheat-sheet)
- [Data Structures cheat sheet](https://softwaredictionary.org/categories/data-structures/cheat-sheet)
- [Operating Systems cheat sheet](https://softwaredictionary.org/categories/operating-systems/cheat-sheet)
- [Programming Languages cheat sheet](https://softwaredictionary.org/categories/languages/cheat-sheet)
- [Teams & Process cheat sheet](https://softwaredictionary.org/categories/software-process/cheat-sheet)
- [All terms A–Z](https://softwaredictionary.org/terms)
- [About Software Dictionary](https://softwaredictionary.org/about)
- [How Software Dictionary is made](https://softwaredictionary.org/editorial): how pages are researched, reviewed and approved by a person, and corrected, and how AI tools are used
- [Türkçe sürüm (Turkish edition)](https://softwaredictionary.org/tr/llms.txt)
