Concepts

Plain-language explanations of the ideas behind software - compilers, garbage collection, objects, types.

673 entries, all primary-sourced
concept

UML (Unified Modeling Language)

A standardized family of diagrams for visualizing, specifying, and documenting object-oriented software systems, unified at Rational in the mid-1990s and standardized by the Object Management Group.

concept

Undecidable Problem

A decision problem for which no algorithm can always return the correct yes-or-no answer; the existence of such problems was proved independently by Turing and Church in 1936.

concept

Unit Testing

The practice of testing the smallest pieces of code (functions, classes) in isolation and automatically, so that regressions are caught the moment they are introduced.

concept

User Story

A short, plain-language description of a feature told from the user's point of view, used in agile development to capture a need and spark a conversation rather than write an exhaustive specification.

concept

Vector Clock

An extension of logical clocks in which each process keeps a vector of counters, allowing a system to tell whether two events are causally related or genuinely concurrent.

concept

Vectorization

Replacing explicit Python loops with whole-array operations that run in fast compiled code - the technique that makes NumPy, and the libraries built on it, orders of magnitude faster than plain Python.

concept

Vendoring

Copying a project's third-party dependencies directly into its own repository instead of fetching them at build time.

concept

Version Control

The practice of tracking and managing changes to files over time so that past versions can be recovered and many people can work on the same project together.

concept

Virtual DOM

An in-memory representation of the user interface that a framework diffs against the previous version to compute the minimal set of real-DOM mutations, popularized by React.

concept

Virtual Machine

A software emulation of a complete computer that runs its own operating system in isolation, sharing the underlying physical hardware with other virtual machines.

concept

Virtual Memory

Giving each program its own address space that can be larger than, and independent of, the physical RAM, pioneered by the Atlas computer at Manchester around 1962.

concept

VLSI (Very Large Scale Integration)

Building integrated circuits with hundreds of thousands or more transistors on a single chip, and the structured design methodology that made such complex chips tractable to design.

concept

Von Neumann Architecture

The computer design with a processing unit, a single memory holding both instructions and data, and input/output, the template behind nearly all modern computers.

concept

Von Neumann Bottleneck

The performance limit caused by the single channel between processor and memory in the von Neumann architecture, a phrase John Backus made famous in his 1977 Turing Award lecture.

concept

Waterfall Model

A sequential software process in which each phase - requirements, design, implementation, testing, and operation - is completed before the next begins.

concept

Web Browser Engine

The component of a web browser that parses HTML and CSS and renders a page through layout and painting.

concept

Web Typography

Controlling type on the web with CSS and downloadable web fonts -- the @font-face rule plus the WOFF and WOFF2 formats -- which ended the era when designers were limited to a handful of fonts already installed on the reader's machine.

concept

Webhook

A user-defined HTTP callback that a provider fires at your endpoint when an event happens -- a reverse API where the server initiates the request.

concept

Wide-Column Store

A NoSQL model (BigTable, HBase, Cassandra) that stores data in tables whose rows can hold billions of dynamic, sparse columns grouped into families; optimized for huge scale and write throughput, not joins.

concept

Worst-Case Execution Time (WCET)

A provable upper bound on how long a task can take to run, the quantity needed to guarantee that real-time deadlines will always be met.

concept

Write-Ahead Log

Recording changes to a durable log before applying them to the data files, so a crashed database can recover a consistent state by replaying the log.

concept

YAGNI (You Aren't Gonna Need It)

An Extreme Programming principle that you should not add functionality until it is actually required, because speculative generality usually costs more than it saves.

concept

Yak Shaving

Hacker term for the recursive chain of seemingly unrelated tasks you must complete before you can do the task you actually wanted to do; coined at the MIT AI Lab and recorded in the Jargon File.

concept

Year 2038 Problem

On many systems Unix time is stored in a signed 32-bit integer counting seconds since 1970, which overflows on January 19, 2038, and wraps to a negative value read as 1901. The fix is a wider, 64-bit time_t, now standard on modern systems but still being chased through old code and data formats.

concept

Zero-Day

A vulnerability unknown to the vendor and therefore unpatched, so defenders have had zero days to fix it; zero-day exploits are highly valued by attackers and governments and traded on gray and black markets.

concept 1971

Text Editor

The program that turns characters into editable text on a screen or terminal. Editors evolved from line editors that worked one line at a time, through full-screen editors, to programmable editors that users can extend without limit.

concept 1971

TTY (Terminal Device)

TTY is short for teletypewriter and became the Unix name for a terminal device. On Unix systems the kernel exposes terminals through tty device files governed by a line discipline (termios), and later through pseudo-terminals (ptys) that let software present a terminal interface to other programs.

concept 1971

Bezier Curve

A parametric curve defined by control points, developed independently by Pierre Bezier at Renault and Paul de Casteljau at Citroen, now the basis of fonts, vector graphics, CAD, and animation paths.

concept 1971

Gouraud Shading

Henri Gouraud's 1971 method for smoothly shading polygonal surfaces by computing intensities at vertices and linearly interpolating them across each polygon, eliminating faceted appearance.

concept November 15, 1971

The Microprocessor

The microprocessor is a complete central processing unit on a single integrated circuit; its arrival shrank the computer from rooms of cabinets to a chip and made computing cheap enough to spread everywhere.

concept 1973

Actor Model

A model of concurrent computation in which independent actors hold private state and interact only by sending each other asynchronous messages.

concept 1973

Rate-Monotonic Scheduling

The optimal fixed-priority scheme for periodic real-time tasks: assign higher priority to tasks with shorter periods. Proven optimal with a provable utilization bound by Liu and Layland in 1973.

concept 1974

Rasterization

The process of converting vector geometry, usually triangles, into pixels on a raster display. It is the dominant real-time rendering pipeline and is specified in detail by graphics APIs such as OpenGL and Direct3D.

concept 1974

WYSIWYG

What You See Is What You Get: editing a document on screen in its final visual form, pioneered by the Bravo editor at Xerox PARC and made mainstream by the Macintosh.

concept 1974

Z-Buffer (Depth Buffer)

A per-pixel depth buffer used to resolve which surface is visible at each pixel. Introduced in Edwin Catmull's 1974 University of Utah PhD thesis, it is the standard hidden-surface method in real-time graphics.

concept 1974

Texture Mapping

The technique of wrapping a 2D image onto a 3D surface to add detail without adding geometry, introduced by Edwin Catmull in 1974 and extended by Blinn and Newell in 1976.

concept 1975

The Job Scheduler

The general idea of arranging for work to run automatically: at a fixed future time, on a repeating calendar schedule, or when the queue and the machine are ready; realized on Unix by cron, at, and batch, and at larger scale by enterprise schedulers.

concept 1975

Phong Shading

Bui Tuong Phong's 1975 reflection model and per-pixel normal interpolation, which produce realistic specular highlights and remain a default lighting model in computer graphics.

concept 1976

Single-Board Computer

A single-board computer (SBC) is a complete, working computer built on one circuit board, with processor, memory, and input/output integrated together; the concept runs from 1970s trainer boards to the Raspberry Pi.

concept July 1976

CSMA/CD

Carrier Sense Multiple Access with Collision Detection, the access method that let classic Ethernet share a single medium among many stations.

concept November 1976

Diffie-Hellman Key Exchange

A 1976 method for two parties to agree on a shared secret over a public channel without ever transmitting it, underpinning HTTPS and TLS.

concept 1977

DES (Data Encryption Standard)

The first widely used government-standard block cipher, published as FIPS 46 in 1977, whose short 56-bit key was eventually rendered brute-forceable.

concept July 26, 1978

Linter

A linter is a tool that statically analyzes source code to flag bugs, non-portable constructs, and style or smell problems beyond what the compiler enforces. The category began with Bell Labs lint in 1978 and now spans ESLint, Pylint, clang-tidy, and many others.

concept November 1978

Bulletin Board System (BBS)

A host computer running BBS software with a modem on a phone line, which callers dial into to read and post public messages, exchange files, and play games. The first one, CBBS, was built by Ward Christensen and Randy Suess and described in Byte in November 1978.

concept November 1978

Catmull-Clark Subdivision

A 1978 subdivision-surface scheme by Edwin Catmull and James Clark that builds smooth B-spline-like surfaces from arbitrary polygon meshes by recursively refining the mesh.

concept 1979

The Electronic Spreadsheet

An electronic spreadsheet is a grid of cells holding numbers, text, and formulas, where changing one value automatically recalculates every dependent formula. The model began with VisiCalc and runs through Lotus 1-2-3 to Excel.

concept October 17, 1979

The Killer Application

A killer application is a program so compelling that people buy the hardware just to run it; VisiCalc on the Apple II and later Lotus 1-2-3 on the IBM PC are the classic cases that defined the idea.