| Infos Home | Impressum | Original Artikel & Autoren Liste |
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 mit Wertparametern.
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 portieren, 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 Implementierungen nicht quelltextkompatibel.
Die BCPL-Philosophie wird durch folgendes Zitat aus dem nur auf Englisch verfügbaren Buch BCPL-The language and its compiler illustriert:
| Inhalt |
|
1 O-Code 2 Codebeispiel 3 Betriebssysteme 4 5 |
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 Bytecode, 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.
LET START () BE
$( WRITES ("Hello, world!*N") $)
cm.bell-labs.com/cm/cs/who/dmr/bcpl.htmlCodebeispiel
GET "LIBHDR"Betriebssysteme
Teile des AmigaOS (die Komponente AmigaDOS) basieren auf Tripos, einem Multiuserbetriebssystem der Firma MetaComCo, das in der Programmiersprache BCPL entwickelt wurde - und tragen daher heute noch Spuren von BCPL. So enden beispielsweise alle Pointer zwangsläufig auf 32 Bit-Grenzen, da sie um 2 Bit nach rechts geshiftet sind, was einer Division durch 4 entspricht.
|
Der Ursprungsartikel stammt von der deutschsprachigen Wiki pedia (siehe oben: "Original Artikel & Autoren Liste"). Der Text steht unter der GNU Freie Dokumentation Lizenz. |