Skip to content
Why Is It Called 'Stack'? — The Origin of the Term

Why Is It Called 'Stack'? — The Origin of the Term

DodaTech Updated Jun 20, 2026 4 min read

You walk into a cafeteria. A stack of clean plates sits at the end of the counter. A fresh plate goes on top. You take from the top. The plate that was put on first is at the bottom, buried, last to be used. The plate that was just added is in your hand, first to be taken. This is the most intuitive data structure in computer science because you’ve been using it your whole life without thinking about it.

The Story

The stack data structure was formalized by German computer scientists Friedrich Bauer and Klaus Samelson in 1955. They were working on the problem of evaluating arithmetic expressions — specifically, how a computer could handle nested operations like 3 * (4 + (5 - 2)). The solution: push values and operators onto a stack, pop them off in the correct order, and the expression evaluates correctly.

Their work directly influenced the design of ALGOL 60, the first programming language to use block structure and nested scopes — features that required a stack for memory management. Edsger Dijkstra, who worked with Bauer and Samelson, implemented the first stack-based expression evaluator for ALGOL 60.

The term “stack” itself was borrowed from everyday life. A stack of plates, a stack of papers, a stack of cards — the metaphor was immediate and intuitive. The operations were named after the physical actions:

  • Push: Place an item on top of the stack.
  • Pop: Remove the top item from the stack.
  • Peek (or Top): Look at the top item without removing it.

The defining property of a stack is LIFO — Last In, First Out. The last item pushed is always the first item popped. This mirrors a plate stack perfectly.

How It Evolved

The stack became one of the most fundamental concepts in computing:

The Call Stack: Every time a function calls another function, the current state — return address, local variables, parameters — is pushed onto the call stack. When the called function returns, the state is popped and execution resumes. This is why nested function calls work at all. A “stack trace” is a dump of this call stack, showing exactly which functions were active when a program crashed.

Stack Overflow: When a program pushes more data onto the call stack than the stack has room for, the stack overflows. The term has become so famous that it became the name of the most popular programming Q&A site. Infinite recursion is the classic cause: function a() { a(); } — each call pushes a new frame until the stack overflows.

Stack vs Heap: The two main memory regions in a program. The stack is for short-lived, fixed-size data with predictable lifetimes (function calls). The heap is for dynamic, variable-sized data with arbitrary lifetimes. Stack allocation is fast (just move a pointer); heap allocation requires finding free memory.

Full Stack Developer: A term that emerged in the 2010s for developers who work on both frontend and backend. But “stack” here comes from “LAMP stack” (Linux, Apache, MySQL, PHP) — a different metaphorical stack, this one a technology stack (like a “stack” of technologies layered on top of each other).

The physical metaphor made the abstract concept of LIFO ordering instantly teachable. Every CS student understands a plate stack before they’ve written their first push operation.

Did You Know?

The call stack has a third operation besides push and pop: frame pointer manipulation for managing local variable access. But at the conceptual level, it’s still just a stack.

The 1972 IBM System/370 was one of the first mainframes to have hardware stack support, with dedicated instructions for pushing and popping data on a hardware stack. Today, every CPU has a stack pointer register (SP) that tracks the top of the call stack.

The “stack” metaphor has been stretched far beyond computing: “full stack developer” is now a job title, “stack ranking” is a performance evaluation system, and “the stack” in some contexts refers to an entire software ecosystem. But all of these trace back to that cafeteria plate stack — the image that made 1950s computer science a little more human.

FAQ

What's the difference between a stack and a queue?
A stack is LIFO (Last In, First Out) — like a stack of plates. A queue is FIFO (First In, First Out) — like a line of people waiting for service. Both are linear data structures, but they differ in which end items are removed.
Why is stack allocation faster than heap?
Stack allocation is just a pointer decrement (or increment, depending on architecture). No searching for free space, no fragmentation, no garbage collection. Deallocation is the reverse — just restore the pointer. The stack’s LIFO discipline makes memory management trivially simple.

Related Etymologies

Why Is It Called 'Pipe'?

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro