Respuestas:
Sugar , en programación, generalmente se refiere a esas adiciones dulces , en su mayoría accesos directos, que hacen que algunas construcciones sean más fáciles de escribir y leer (siendo estas últimas, en la práctica, las más importantes durante el ciclo de vida de su programa).
Wikipedia tiene una definición de azúcar sintáctico, pero debe tener en cuenta que no todo el azúcar es, en esencia, sintáctico (no todas las adiciones dulces recientes fueron solo cambios del compilador).
Aquí están algunos ejemplos :
i++
y ++i
). Su único propósito es evitar escribir una declaración adicional. Son pura azúcar.+=
, |=
, &=
, Etc., están hechos del mismo tipo de azúcar.En general, se considera que Java no es lo suficientemente conciso, especialmente en comparación con los lenguajes modernos. Es por eso que esas adiciones que ayudan a que el código sea más rápido de leer son bienvenidos.
Para terminar, solo señalaré que, si bien la falta de azúcar puede hacer que su programa sea más pesado, un exceso de azúcar, que lleva a muchas formas diferentes de escribir las mismas cosas, puede hacer que su lenguaje sea mareado y su programa sea menos coherente y más difícil de mantener. . Otro tipo de azúcar, el azúcar API, suele ser una plaga que hace que la API sea más difícil de comprender, especialmente cuando está hecha de adiciones (sobrecarga, por ejemplo).
Dicho esto, desugaring se refiere a
"Desugaring" parece tener un significado muy específico en Java 8. Parece ser un término general para expresar las diversas formas en que una expresión lambda puede vincularse a una llamada real a un método concreto.
Este documento sobre "Traducción de expresiones Lambda" parece tener los detalles reales de lo que está sucediendo si está interesado en detalles específicos.
Una frase clave del documento:
El primer paso para traducir lambdas en código de bytes es convertir el cuerpo lambda en un método.
En general, "desugaring" en javac permite representar algunas características del lenguaje con otras preexistentes. Esto permite representarlos en el código de bytes sin realizar grandes cambios en el formato del archivo de clase. También por esta razón el back-end del compilador es más estable que el front-end. Esto no significa que cada nueva característica del lenguaje sea simplemente azúcar sintáctica, como definitivamente no es el caso de las lambdas y las referencias a métodos. Hay más ejemplos de "desugaring" en el compilador:
También puede investigar qué sucede con el cambio de cadena, borrado de tipo, ...