Basic Combined Programming Language
BCPL - ca. 1967 von Martin Richards entwickelte, kompilierte, systemnahe Programmiersprache, abgeleitet von der Combined/Cambrige Programming Languge CPL; eine Sprache aus der ALGOL-Familie.
Vorteile von BCPL sind schnelle Erlernbarkeit, einfache Implementierung und leichte Portierbarkeit. Es ist hauptsächlich gedacht als "Bootstrapping Language", also als erste Sprache für ein neues System.
Ein BCPL Programm besteht aus einzelnen Funktionen die rekursiv definiert sein dürfen, der Funktionsaufruf erfolgt "Call By Value".
BCPL kennt als Datentyp nur das Wort, alle Variablen sind Verweise auf eine Speicherzelle, je nach Operator kann die Variable als Integer Wert, Speicherreferenz, Vektor oder Beginn einer Funktion betrachtet werden (kontext typisiert). Es existieren ausschließlich lokale Bezeichner, sowie ein globaler Vektor in dem im gesamten Programm sichtbare Bezeichner (also auch die Funktionsnamen) zusammengefasst sind.
Der Inhalt einer Variablen wird als R-Wert (darf auf der rechten Seite einer Zuweisung stehen) bezeichnet, der Speicherort als L-Wert (darf auf der linken Seite einer Zuweisung stehen.)
Die Operatoren lv und rv erlauben es einen L-Wert als R-Wert zu interpretieren, und umgekehrt (also eine Variable zu dereferenzieren.)
BCPL selbst stellt praktisch nur Funktionen zur Bit- und Wortmanipulation zur Verfügung, alle anderen Funktionen sind in zusätzlichen Bibliotheken zusammengefasst.
Ken Thompson versuchte BCPL auf die pdp-7 zu portiteren, entwickelte dabei jedoch "versehentlich" eine eigene Sprache, B, aus der sich später C entwickelte.
Es gibt BCPL-Implementierungen für praktisch jedes Betriebssystem, bedingt durch die Typenlosigkeit eignet es sich jedoch nicht für 8-Bit Rechner.Leider sind die verschiedenen Implemtierungen nicht quelltextkompatibel.