背景
语法糖上的Wikipedia页面指出:
在计算机科学中,语法糖是编程语言中的语法,旨在使事物更易于阅读或表达。它使人类可以使用这种语言“变甜”:可以更清楚,更简洁地表达事物,或者以某些人可能喜欢的替代方式表达事物。
我不太了解语法糖和语法之间的区别。
我赞赏含糖版本可以更清晰,更简洁,甚至可以简化一些观点。但是我觉得在某种程度上,所有语法实际上都是这样做的,以形成对代码进行编译的抽象。
在同一Wikipedia页面上:
语言处理器(包括编译器,静态分析器等)通常在处理之前将加糖的结构扩展为更基本的结构,此过程有时称为“反加糖”。
作为思想练习,如果我在此语句中将“经常”表示为“始终”:如果区别仅在于编译器在进入下一阶段之前是否“降低语法”,那么不了解内部条件的编码器又将如何?的编译器知道(或关心)什么是Sugar'd语法?
该网站上一个非常相关的问题“语法糖的严格定义?” 有一个开始的答案:
恕我直言,我认为您无法对语法糖进行定义,因为该短语是BS,很可能被那些在“真实操作系统”上使用“真实工具”谈论“真实程序员”的人使用。
哪个可能向我表明,使用该语言的编码人员也许并没有太大的区别?也许差异仅是编译器编写者可以感知的?尽管在某些情况下使用该语言来了解语法糖背后的含义对编码人员有帮助。(但实际上,有关该主题的任何论述都倾向于使用“火焰诱饵”这个词?)
问题的核心
所以...问题的简短版本:
- 语法和语法糖之间有真正的区别吗?
- 对谁重要?
思考的额外食物
关于主题矛盾的奖励:
在Wikipedia页面上给出了一个示例:
例如,在C语言中,
a[i]
表示法是*(a + i)
而上述链接问题的另一个答案是关于同一示例的:
现在考虑
a[i] == *(a + i)
。考虑任何以任何实质性方式使用数组的C程序。
并总结为:
该
[]
符号有助于这种抽象。这不是语法糖。
同一示例的相反结论!