>> Technologie Électronique >  >> Téléphones >> Systèmes de conférence

BCPL : Le grand-père oublié du C — Histoire, caractéristiques & exemple de code

BCPL (Basic Combined Programming Language) est l'ancêtre direct de B et C. Conçu par Martin Richards à l'Université de Cambridge en 1966, c'est le premier langage à prouver qu'un langage de programmation système pouvait être à la fois petit, portable et assez puissant pour écrire son propre compilateur.

Pourquoi BCPL a compté

  • Portabilité d'abord : Le compilateur était scindé en front-end (analyseur) et back-end (générateur de code). Retargeter vers un nouveau CPU (PDP-10, 68000, x86, MIPS) prenait des semaines, pas des années.
  • Programmation système : Pas de dépendance à une bibliothèque d'exécution. Accès mémoire direct via pointeurs. Utilisé pour écrire des noyaux OS (TRIPOS, AmigaDOS), compilateurs, éditeurs.
  • Minimalisme : Un seul type de donnée : le mot (entier/pointeur largeur machine). Pas de types, pas de structures, pas de flottants — tout se construit à partir de mots.
  • A influencé C directement : Ken Thompson a épuré BCPL pour créer B (pour PDP-7 Unix). Dennis Ritchie a ajouté les types → C. Le modèle bytecode de Java fait écho à la représentation intermédiaire O-code de BCPL.

Caractéristiques clés du langage

  • Structuré par blocs : `$( ... $)` pour instructions composées (comme `{ }` en C).
  • Pointeurs/Indirection : `!ptr` (déréférencement), `ptr!i` (index tableau). `rv` (result value) pour retour.
  • Allocation dynamique : `getvec(n)` / `freevec(vec)` — gestion manuelle du tas.
  • Compilation conditionnelle : `#if`, `#unless` — pionnier pour 1967.
  • Assembleur en ligne : `code` ... `endcode` pour opérations machine-spécifiques.

Hello World en BCPL (Style Martin Richards)

GET "libhdr"
LET start() = VALOF
$( writes("Hello, World!*N")
   RESULTIS 0
$)

Note : `writes` écrit une chaîne ; `*N` est retour à la ligne. `VALOF`/`RESULTIS` est le mécanisme de retour de fonction.

L'innovation O-code

BCPL compile vers l'O-code (Object code) — un bytecode simple de machine à pile. Le back-end traduit l'O-code vers l'assembleur cible. Cette architecture bipasse (Frontend → O-code → Backend) est le plan directeur pour :

  • Pascal P-code
  • Bytecode JVM Java
  • LLVM IR
  • WebAssembly

Où vit BCPL aujourd'hui

  • AmigaOS / MorphOS / AROS : Composants noyau encore en BCPL (VM Cintcode).
  • Système Cintcode de Martin Richards : Maintenu activement ; tourne sur Linux, Windows, Raspberry Pi. Site officiel.
  • Rétro-informatique / Éducation : Enseignement construction compilateurs (compilateur one-pass tient en 2000 lignes).

BCPL n'est pas « mort » — c'est l'ADN architectural à l'intérieur de chaque programme C, C++, Java, Go, Rust et Swift qui tourne aujourd'hui.

Systèmes de conférence