배경
Syntactic Sugar 의 Wikipedia 페이지는 다음과 같습니다.
컴퓨터 과학에서, 구문 설탕은 물건을보다 쉽게 읽거나 표현할 수 있도록 설계된 프로그래밍 언어 내의 구문입니다. 그것은 사람들이 사용하기에 언어를 "더 달콤하게"만들어줍니다. 사물은 더 명확하고 간결하게 표현되거나 다른 스타일로 선호 될 수 있습니다.
Syntactic Sugar와 Syntaxactic의 차이점이 무엇인지 이해하지 못합니다.
설탕 버전이 더 명확하고 간결하며 보일러 플레이트를 끓일 수 있다는 점에 감사합니다. 그러나 어떤 수준에서는 모든 구문이 본질적으로 코드가 컴파일되는 것에 대한 추상화를 형성하기 위해 수행됩니다.
동일한 Wikipedia 페이지에서 :
컴파일러, 정적 분석기 등을 포함한 언어 프로세서는 종종 "설탕 제거 (desugaring)"라고하는 프로세스 인 설탕 처리 된 구조를 처리하기 전에보다 기본적인 구조로 확장합니다.
생각 연습으로,이 문장에서 "항상"을 의미하기 위해 "종종"을 사용하는 경우 : 다음 단계로 넘어 가기 전에 컴파일러가 구문을 "설탕 제거"하는지 여부가 차이라면, 내부자를 모르는 코더는 어떻게 할 수 있을까요? 컴파일러 중 Sugar'd Syntax가 무엇인지 아는가?
이 사이트에 관한 매우 많은 관련 질문 "구문 설탕의 엄격한 정의?" 시작 하는 대답 이 있습니다.
IMHO 나는 구문 설탕에 대한 정의를 가질 수 없다고 생각합니다. 왜냐하면이 문구는 BS이고 "실제 운영 체제"에서 "실제 도구"를 사용하여 "실제 프로그래머"에 대해 이야기하는 사람들이 사용할 수 있기 때문입니다.
언어를 사용하는 코더에는 큰 차이가 없을 수도 있습니다. 아마도 차이점은 컴파일러 작성자에게만 허용됩니까? 언어를 사용하는 코더가 Syntactic Sugar의 후드 아래에 무엇이 있는지 아는 것이 도움이되는 사례가있을 수 있습니까? (그러나 실제로는 주제에 관한 어떤 담론이이 용어를 불꽃 미끼로 사용하는 경향이 있습니까?)
질문의 핵심
그래서 ... 질문의 짧은 버전 :
- Syntaxactic Syntax와 Syntactic Sugar 사이에 실제 차이점이 있습니까?
- 누구에게 중요한가?
생각을위한 여분의 음식
주제 모순에 대한 보너스 :
Wikipedia 페이지에서 예제가 제공됩니다.
예를 들어, C 언어에서
a[i]
표기법은*(a + i)
위의 링크 된 질문에 대한 또 다른 대답 은 동일한 예에 대해 이야기합니다.
이제 고려하십시오
a[i] == *(a + i)
. 실질적인 방식으로 배열을 사용하는 C 프로그램을 생각해보십시오.
그리고 그 요약 :
이
[]
표기법은 이러한 추상화를 용이하게합니다. 구문 설탕이 아닙니다.
동일한 예에 대한 반대 결론!