What is bcpl?

BCPL (Basic Combined Programming Language) is a simple, early programming language created in the 1960s. It was designed to be easy to implement on many different computers and to serve as a foundation for building other languages. Think of it as a stripped‑down version of C that helped shape many modern languages.

Let's break it down

  • Origin: Written by Martin Richards at the University of Cambridge in 1966.
  • Syntax: Very minimal - only a few keywords, simple statements, and no data types like “int” or “float”. Everything is treated as a machine word.
  • Compilation: BCPL code is compiled into an intermediate form called “p-code”, which can then run on a virtual machine.
  • Influence: It directly inspired the development of the B language, which later became the C language we use today.

Why does it matter?

BCPL showed that a language could be both portable and easy to implement, proving that you didn’t need a separate version for each computer. Its ideas about simplicity, low‑level access, and a small core language helped shape the design of later, more popular languages like B, C, and even some aspects of modern scripting languages.

Where is it used?

Today BCPL is rarely used for new projects, but it still lives on in:

  • Historical research and teaching about the evolution of programming languages.
  • Some legacy systems in academic or research environments that still run old BCPL code.
  • As a reference point for language designers studying minimalistic language design.

Good things about it

  • Simplicity: Very few rules make it easy to learn the basics.
  • Portability: Designed to run on many different machines with minimal changes.
  • Foundation: Provided key concepts that led to the creation of C, one of the most influential languages ever.
  • Small compiler: The compiler itself is tiny, which was a big advantage on early computers with limited memory.

Not-so-good things

  • No data types: Treating everything as a generic word can lead to confusing bugs.
  • Outdated syntax: Modern programmers find its style archaic and hard to read.
  • Limited libraries: Lacks the rich standard libraries that today’s languages provide.
  • Very low-level: While powerful, it requires the programmer to manage many details that higher‑level languages handle automatically.