Azúcar sintáctica


En informática , el azúcar sintáctico es la sintaxis dentro de un lenguaje de programación que está diseñado para hacer que las cosas sean más fáciles de leer o expresar. Hace que el lenguaje sea "más dulce" para el uso humano: las cosas se pueden expresar de manera más clara, más concisa o en un estilo alternativo que algunos prefieran.

Por ejemplo, muchos lenguajes de programación proporcionan una sintaxis especial para hacer referencia y actualizar elementos de matriz . De manera abstracta, una referencia de matriz es un procedimiento de dos argumentos: una matriz y un vector de subíndice, que podría expresarse como get_array(Array, vector(i,j)). En cambio, muchos lenguajes proporcionan sintaxis como Array[i,j]. De manera similar, una actualización de elementos de matriz es un procedimiento que consta de tres argumentos, por ejemplo set_array(Array, vector(i,j), value), pero muchos lenguajes proporcionan sintaxis como Array[i,j] = value.

Una construcción en un idioma es azúcar sintáctica si se puede eliminar del idioma sin ningún efecto sobre lo que el idioma puede hacer: la funcionalidad y el poder expresivo seguirán siendo los mismos.

Los procesadores de lenguaje, incluidos los compiladores y los analizadores estáticos , a menudo expanden las construcciones azucaradas en construcciones más fundamentales antes del procesamiento, un proceso que a veces se denomina "eliminación de azúcar".

El término azúcar sintáctico fue acuñado por Peter J. Landin en 1964 para describir la sintaxis superficial de un lenguaje de programación simple similar a ALGOL que se definió semánticamente en términos de las expresiones aplicativas del cálculo lambda , [1] [2] centrado en reemplazar léxicamente λ con "dónde".

Los lenguajes de programación posteriores, como CLU , ML y Scheme , ampliaron el término para referirse a la sintaxis dentro de un lenguaje que podría definirse en términos de un núcleo de lenguaje de construcciones esenciales; las características convenientes de nivel superior podrían "desazucararse" y descomponerse en ese subconjunto. [3] Esta es, de hecho, la práctica matemática usual de construir a partir de primitivas.