Resumen
BCPL ("Basic Combined Programming Language") es un lenguaje de programación procedural, imperativo y estructurado. Originalmente destinado a escribir compiladores para otros lenguajes, BCPL ya no se usa comúnmente. Sin embargo, su influencia aún se siente porque una versión simplificada y con cambios sintácticos de BCPL, llamada B, fue el lenguaje en el que se basó el lenguaje de programación C. BCPL introdujo varias características de muchos lenguajes de programación modernos, incluyendo el uso de llaves para delimitar bloques de código. BCPL fue implementado por primera vez por Martin Richards de la Universidad de Cambridge en 1967.
Diseño
BCPL fue diseñado para que se pudieran escribir compiladores pequeños y simples para él; supuestamente algunos compiladores podían ejecutarse en 16 kilobytes. Además, el compilador original, escrito en BCPL, era fácilmente portable. BCPL fue así una opción popular para iniciar un sistema. Una razón principal de la portabilidad del compilador radicaba en su estructura. Estaba dividido en dos partes: el front end analizaba el código fuente y generaba O-code, un lenguaje intermedio. El back end tomaba el O-code y lo traducía al código máquina para la máquina de destino. Solo del código del compilador necesitaba reescribirse para soportar una nueva máquina, una tarea que usualmente tomaba entre 2 y 5 persona-meses. Este enfoque se convirtió en práctica común más tarde (por ejemplo, Pascal, Java).
El lenguaje es inusual al tener solo un tipo de dato: una palabra, un número fijo de bits, usualmente elegido para alinearse con la palabra máquina de la arquitectura y de capacidad adecuada para representar cualquier dirección de almacenamiento válida. Para muchas máquinas de la época, este tipo de dato era una palabra de 16 bits. Esta elección demostró ser un problema significativo más tarde cuando BCPL se usó en máquinas en las que el elemento direccionable más pequeño no era una palabra sino un byte o en máquinas con tamaños de palabra mayores como 32 bits o 64 bits.
De Wikipedia (CC BY-SA 4.0).