fundo
A página da Wikipedia no Syntactic Sugar afirma:
Na ciência da computação, o açúcar sintático é uma sintaxe dentro de uma linguagem de programação projetada para facilitar a leitura ou a expressão. Torna a linguagem "mais doce" para os humanos usarem: as coisas podem ser expressas de forma mais clara, concisa ou em um estilo alternativo que alguns preferem.
Eu realmente não entendo qual a diferença entre o Syntactic Sugar e o Syntax.
Aprecio o argumento de que a versão açucarada pode ser mais clara, mais concisa, talvez se refira a alguns clichês. Mas, em algum nível, sinto que toda a sintaxe está fazendo isso para formar uma abstração sobre o que o código é compilado.
Da mesma página da Wikipedia:
Processadores de linguagem, incluindo compiladores, analisadores estáticos e similares, geralmente expandem construções açucaradas em construções mais fundamentais antes do processamento, um processo às vezes chamado de "dessugar".
Como exercício de pensamento, se eu entendi "frequentemente" nesta declaração como "sempre": se a diferença fosse apenas se o compilador "dessugera" a sintaxe antes de passar para o próximo estágio, como pode um codificador que não conhece as entranhas do compilador sabe (ou se importa) o que é Sugar'd Syntax ou não?
Uma pergunta muito relacionada neste site "Definição rigorosa de açúcar sintático?" tem uma resposta que começa:
IMHO Acho que você não pode definir o açúcar sintático, porque a frase é BS e provavelmente será usada por pessoas que falam sobre "programadores reais" usando "ferramentas reais" em "sistemas operacionais reais"
O que pode indicar para mim que talvez não haja uma grande diferença para o codificador que usa a linguagem? Talvez a diferença seja perceptível apenas para o escritor do compilador? Embora possa haver casos em que é útil para o codificador usar a linguagem saber o que está por trás do Syntactic Sugar? (Mas talvez, na realidade, qualquer discurso sobre o assunto tenda a usar o termo como isca de chama?)
O cerne da questão
Então ... a versão curta da pergunta:
- Existe uma diferença real entre a sintaxe e o açúcar sintático?
- Para quem isso importa?
Alimento Extra para Pensamento
Bônus por contradição de tópico:
Na página da Wikipedia, é dado um exemplo:
Por exemplo, na linguagem C, a
a[i]
notação é açúcar sintático para*(a + i)
Enquanto outra resposta à pergunta vinculada acima menciona o mesmo exemplo:
Agora considere
a[i] == *(a + i)
. Pense em qualquer programa C que use matrizes de maneira substantiva.
E resume que:
A
[]
notação facilita essa abstração. Não é açúcar sintático.
A conclusão oposta para o mesmo exemplo!