# BCPL

BCPL (Basic Combined Programming Language) est un langage de programmation créé par Martin Richards (en) de l'université de Cambridge (1966) et une réponse aux difficultés rencontrées avec son prédécesseur le Combined Programming Language (CPL) durant les années 1960. Le premier compilateur fonctionnel fut écrit pendant sa visite du Massachusetts Institute of Technology (MIT) au printemps 1967. Ce langage fut décrit la première fois dans un journal au 1969 Spring Joint Computer Conference. Dennis Ritchie développa plus tard le C à partir du BCPL.

## Histoire

BCPL est un langage de programmation propre, puissant et portable. Il rend possible l'écriture de compilateurs petits et simples. C'est notamment un choix populaire pour l'amorçage d'un système. D'après les informations reçues, quelques compilateurs peuvent fonctionner sur 16 ko seulement. Plusieurs logiciels d'exploitation ont été écrits partiellement ou complètement en BCPL (par exemple, TripOS ou Amiga Kickstart).
Une raison majeure de la portabilité de BCPL s'explique par la structure de ses compilateurs, qui sont scindés en deux parties :
* Le front-end analyse la source et produit du code pour une machine virtuelle dédiée (le O-code, O valant pour "Objet")
* le back-end récupère alors ce O-code et le traduit en langage machine.
En peu de temps, cette pratique devint courante, voir le Pascal ou Java, mais le compilateur BCPL de Martin Richards a été le premier à utiliser une machine virtuelle à cette fin.
Ce langage n'est pas courant, puisqu'il ne possède qu'un seul type de données : le type word comportant un nombre fixe de bits (nombre habituellement choisi pour s'aligner sur le langage machine). L'interprétation de toutes les valeurs est déterminée par l'opérateur utilisé lors du traitement. Pour permettre ce fonctionnement, l'exécution ne réalise pas de contrôle de type.
La notation hongroise a été développée pour aider les programmeurs à éviter les fautes de type endémiques en BCPL.
En 1979, BCPL était supporté par au moins 25 architectures ; en 2001 il n'était plus que très peu utilisé. La conception de BCPL influença significativement le langage B, qui lui-même influença le C, qui est à présent le langage de choix pour la programmation système.
La philosophie du BCPL peut être récapitulée par la citation du livre, BCPL, the language and its compiler :
    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.

## Hello World

Exemple de programmation de l'affichage du fameux Hello world en BCPL:
Le premier MUD fut aussi écrit en BCPL.

## Utilisation

TripOS (TRIvial Portable Operating System) est un système d'exploitation écrit en BCPL et en assembleur. Il a été créé en 1978 au laboratoire informatique de l’université de Cambridge. TripOS a été porté par la suite sur les premières versions de l'AmigaOS. Ce qui fait que la partie la plus ancienne de l'AmigaOS a été implémenté aussi avec le BCPL (le reste avec le langage C et aussi en assembleur). Notamment la dos.library, ce qui est visible par l'utilisation de pointeur BCPL qui adresse la mémoire en 32 bit et non par octets. Les pointeurs en C doivent donc être divisée par 4 (en pratique on décale de le mot binaire de 2 bit pour enlever le poids faible inutile) avant utilisation des fonctions codé en BCPL.