tiny-c: un lenguaje educativo inspirado en BASIC y estructurado como C

Fuentes: tiny-c: a BASIC-inspired structured language with the bones of C

tiny-c es un lenguaje de programación estructurado creado con una vocación formativa que combina la sencillez de BASIC con la arquitectura de C. Diseñado como una herramienta pensada para el aprendizaje, ofrece if-then-else, bucles while, funciones, variables globales y locales, punteros, arrays y datos de tipo entero y carácter, todo dentro de un único entorno en el que se editan, ejecutan y almacenan los programas sin necesidad de compiladores, editores de enlace ni módulos reubicables.

El manual describe los principios que lo inspiraron: BASIC, por su inmediatez y por haber sido estándar de facto en la enseñanza en Estados Unidos; LOGO, por demostrar que niños pequeños podían asimilar conceptos de computación con un lenguaje bien estructurado; y C (Ritchie, Kernighan y Lesk), del que adopta la estructura general y la separación entre el núcleo del lenguaje y las funciones de entrada y salida. El propio intérprete de tiny-c está escrito en tiny-c, una decisión que refleja la filosofía de C al usarse para implementar UNIX.

El sistema funciona como un paquete autosuficiente: lenguaje, biblioteca estándar y sistema de preparación de programas, con almacenamiento en cassette o disquete, e independencia del sistema operativo. Incluye además la posibilidad de invocar subrutinas en lenguaje máquina del propio equipo, lo que permite adaptar y extender el lenguaje al hardware donde se ejecute.

El texto incorpora un recorrido paso a paso por un programa completo: un juego de adivinar un número entre 1 y 100 escrito por T. A. Gibson en 1976. El paseo explica los comentarios, la declaración de variables, las asignaciones, las llamadas a funciones como random, pl y gn, el uso de while para el bucle principal y los condicionales if que comparan la suposición con el número aleatorio.

Aunque se concibe como lenguaje de entrenamiento, tiny-c demuestra ser al mismo tiempo una herramienta potente, capaz de integrarse con cualquier sistema y de servir como base para programar otras rutinas nativas.