Basic Combined Programming Language
BCPL
Paradigmen: imperativ, strukturiert
Erscheinungsjahr: 1966
Entwickler: Martin Richards
Typisierung: typenlos
Einflüsse: CPL
Beeinflusste: C

Die Basic Combined Programming Language (BCPL) ist eine 1966 von Martin Richards entwickelte und im Frühjahr 1967 am Massachusetts Institute of Technology zum ersten Mal implementierte, kompilierte, systemnahe Programmiersprache, abgeleitet von der Combined/Cambridge Programming Language CPL. Es ist eine Sprache aus der ALGOL-Familie.

Inhaltsverzeichnis

Allgemeine Beschreibung

Vorteile von BCPL sind schnelle Erlernbarkeit, einfache Implementierung und leichte Portierbarkeit. Es ist hauptsächlich gedacht zum Compilerbau, zur Systemprogrammierung und als „Pioniersprache“, also als erste Sprache für ein neues System.

Ein BCPL-Programm besteht aus einzelnen Funktionen, die auch rekursiv definiert sein dürfen; der Funktionsaufruf erfolgt mit Wertparametern.

BCPL kennt als Datentyp nur das Wort. Alle Variablen sind Verweise auf eine Speicherzelle. Je nach Operator kann die Variable als Integralwert, Speicherreferenz, Vektor oder Eintrittspunkt einer Funktion betrachtet werden. Es gibt ausschließlich lokale Bezeichner sowie einen globalen Vektor, in dem im gesamten Programm sichtbare Bezeichner (also auch die Funktionsnamen) zusammengefasst sind.

Der Inhalt einer Variablen wird als R-Wert (darf nur auf der rechten Seite einer Zuweisung stehen) bezeichnet, der Speicherort als L-Wert (darf nur 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 entwickelte Anfang der 1970er die Sprache B, die stark von BCPL beeinflusst ist. Da B für die Interpretation auf einer PDP-7 mit 8 kb RAM entwickelt wurde, ist B einfacher aufgebaut als BCPL.[1] Beispielsweise sind keine verschachteleten Funktionsdefinitionen möglich. Aus der Weiterentwicklung von B entstand die Programmiersprache C.

Es gibt BCPL-Implementierungen für praktisch jedes Betriebssystem, die verschiedenen Implementierungen sind nicht quelltextkompatibel.

Die BCPL-Philosophie wird durch folgendes Zitat aus dem nur auf Englisch verfügbaren Buch BCPL-The language and its compiler illustriert:

„The philosophy of BCPL is not one of the tyrant who thinks he knows best and lays down the law on what is and what is not allowed; rather, BCPL acts more as a servant offering his services to the best of his ability without complaint, even when confronted with apparent nonsense. The programmer is always assumed to know what he is doing and is not hemmed in by petty restrictions.“

„Die BCPL-Philosophie ist nicht die des Tyrannen, der alles besser weiß und Regeln darüber erlässt, was erlaubt und was verboten ist. Stattdessen verhält sich BCPL mehr wie der Diener, der seine Dienste ohne Murren bestmöglich anbietet, auch wenn ihm augenscheinlicher Unsinn aufgetragen wird. Es wird stets vorausgesetzt, dass der Programmierer weiß, was er tut. Er wird daher nicht durch kleinkarierte Einschränkungen eingeengt.“

– BCPL-The language and its compiler

O-Code

Richards entwickelte in den späten 1960er Jahren einen Zwischencode, der BCPL maschinenunabhängig machen sollte. Der BCPL-Compiler erzeugt O-Code, wobei das O für Objekt, also Objektcode steht.

Der O-Code kann dann von einem weiteren Programm entweder interpretiert oder in spezifischen Maschinencode übersetzt werden. Diese Idee wurde und wird auch in neueren Compilern eingesetzt, z. B. in Form des RTL (Register Transfer Language)-Zwischencodes beim GCC oder dem P-Code von UCSD Pascal. Java mit der Java Virtual Machine verwendet ebenfalls einen eigenen Zwischencode, der allerdings irgendwo zwischen O-Code und Maschinencode liegt.

O-Code erlaubt die Trennung von generellen und prozessorspezifischen Übersetzungsanforderungen. Die Portierung des BCPL-Compilers wurde durch seine Verwendung extrem erleichtert, und BCPL wurde schnell auf verschiedenen Maschinen verfügbar.

Programmbeispiel

GET "LIBHDR"
 
LET START () BE
$(WRITES ("Hello, world!*N") $)

Betriebssysteme

Teile des AmigaOS (die Komponente AmigaDOS) basieren auf TRIPOS, einem Mehrbenutzerbetriebssystem der Firma MetaComCo, das in der Programmiersprache BCPL entwickelt wurde, und tragen daher heute noch Spuren von BCPL. So enden beispielsweise BCPL-Zeiger in AmigaDOS-Datenstrukturen zwangsläufig auf 32-Bit-Grenzen, da sie um 2 Bit nach rechts verschoben sind, was einer Division durch 4 entspricht. Weiterhin werden in AmigaDOS oft Zeichenketten verwendet, die statt der in der Programmiersprache C üblichen Nullterminierung, ein vorangestelltes Längenbyte verwenden.

Ein ebenfalls in BCPL entwickeltes Betriebssystem der AEG (Systemsoftware-Abteilung Konstanz) für die eigenen Maschinen AEG 80-40 und AEG 80-60 (Stückzahl unter 100, um 1980) war MARTOS (Multi Access Real Time Operating System). Ebenfalls für diese nur in wenigen Projekten eingesetzten, damals eigentlich sehr modernen Maschinen, wurde die in BCPL implementierte, mit C und PL/I verwandte Programmiersprache SL3 (System Low Level Language) entwickelt, bei der man systemnah wie in Assembler einzelnen Variablen feste Register zuordnen, andererseits aber auch mit komplexen und geschachtelten Strukturen programmieren konnte.

Literatur

  • M. Richards, C. Whitby-Strevens: BCPL – the language and its compiler. Cambridge University Press, Cambridge 1980, ISBN 0-521-28681-6.
  • Martin Richards: The Portability of the BCPL Compiler. In: Software – Practice and Experience. Vol. 1, Nr. 2, 1971, S. 135-146.

Einzelnachweise

  1. Dennis Ritchie: The Development of the C Language. In: History of Programming Languages. ACM Press and Addison-Wesley, New York 1996, ISBN 0-201-89502-1 (Online, abgerufen am 27. März 2009).

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Combined Programming Language — The Combined Programming Language (CPL) was a computer programming language developed jointly between the Mathematical Laboratory at the University of Cambridge and the University of London Computer Unit during the 1960s. The collaborative effort …   Wikipedia

  • Combined Programming Language — Pour les articles homonymes, voir CPL. CPL (Combined Programming Language) était un langage de programmation développé conjointement par le Laboratoire de Mathématiques (Mathematical Laboratory) de l Université de Cambridge et l Unité d… …   Wikipédia en Français

  • Combined Programming Language — El Lenguaje de programación combinado (del inglés Combined Programming Languaje CPL) fue un lenguaje de programación desarrollado conjuntamente entre el Laboratorio de Matemática en la Universidad de Cambridge y la Unidad Computación de la… …   Wikipedia Español

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • CPL (programming language) — CPL Paradigm(s) multi paradigm: procedural, imperative, structured, functional Appeared in 1963 Designed by Christopher Strachey et al. Influenced by ALGOL 60 …   Wikipedia

  • computer programming language — Introduction       any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer specific numerical form known as machine… …   Universalium

  • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas …   Wikipedia

  • Python (programming language) — infobox programming language name = Python paradigm = multi paradigm: object oriented, imperative, functional year = 1991 designer = Guido van Rossum developer = Python Software Foundation latest release version = 2.6 latest release date =… …   Wikipedia

  • Eiffel (programming language) — Infobox programming language name = Eiffel paradigm = object oriented year = 1986 designer = Bertrand Meyer developer = Bertrand Meyer Eiffel Software latest release version = 4.2 latest release date = Feb 6, 1998 typing = static typing, strong… …   Wikipedia

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”