鱼C论坛

 找回密码
 立即注册
查看: 20802|回复: 60

[扩展阅读] 什么是语法糖(Syntactic sugar)

[复制链接]
发表于 2016-7-20 17:59:48 | 显示全部楼层 |阅读模式
零基础入门学习C语言封面
《零基础入门学习C语言》
小甲鱼 著
立即购买

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
语法糖(Syntactic sugar)是由 Peter J. Landin(和图灵一样的天才人物,是他最先发现了 Lambda 演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。

语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。

在 C 语言里用 a[n] 表示 *(a+n),用 a[n][m] 表示 *(*(a+n)+m),这就是语法糖的应用,因为在内部,编译器会自动将 a[n] 转换为 *(a+n) 的形式实现。

另外,for 循环其实也是一个语法糖:
  1. for (i = 0; i < 10; i++)
  2. {
  3.     //P
  4. }
复制代码

其效果和以下的 while 循环是一样的,其中 P 是循环要处理的主体:
  1. i = 0;
  2. while (i < 10)
  3. {
  4.     //P
  5.     i++;
  6. }
复制代码


实际上从面向过程到面向对象也是一种语法糖啊,C 语言可以通过它的指针、类型转换,结构实现面向对象的编程风格,但是 C++ 更进一步的推广了这种风格,更好用了,不过到了 C# 把 OO 的风格发挥得淋漓尽致。OO 的编程风格对于面向过程来说是不是一种语法糖呢?如果生硬地照此理解,只有计算机硬件指令才不算语法糖,而其他一切利用编译器、汇编器将代码抽象,和自然语言更相近的手段都算语法糖。

现在很多很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?

我想语法糖和其他编程思想一样重要,什么鸭子类型,人本接口,最小接口,约定优于配置,其实不都是一些思想上的“语法糖”?

不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net 从 2.0 到 3.0 到 3.5 底层 CLR 并没有做更新,没有添加任何新的 IL 指令,所以 C# 从 2.0 到 3.0 中所有的特性都是语法糖,就算从 1.0 到 2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次 C# 发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法可以酿造更好的编程风格,以前一些难以实现的方面现在也轻而易举了。        

需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。

评分

参与人数 4荣誉 +12 鱼币 +6 贡献 +5 收起 理由
cc是个好名字 + 5 + 5 + 3
niuA + 5 鱼C有你更精彩^_^
小凯2013 + 1 + 1 + 1 感谢楼主无私奉献!
陪我同行 + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-19 16:07:28 | 显示全部楼层
来到啦来到啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-31 11:22:26 | 显示全部楼层
for也是语法糖?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-18 13:14:37 | 显示全部楼层
这么看函数式编程也属于语法糖呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-7 00:11:15 | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-27 17:51:33 | 显示全部楼层
I get it!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 13:08:42 | 显示全部楼层
听你讲课就来看了。回复是美德
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 15:50:36 | 显示全部楼层
Peter J. Landin 和图灵一样的天才人物,这人有这么厉害吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-28 15:04:24 | 显示全部楼层
回复是美德
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-4 12:42:02 From FishC Mobile | 显示全部楼层
打个小卡
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-23 16:02:54 | 显示全部楼层
蘑菇点点 发表于 2018-2-5 19:58
**** 作者被禁止或删除 内容自动屏蔽 ****

哈哈哈哈
问答题答案:



动动手答案:


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 20:23:59 | 显示全部楼层
学到了学到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-9 00:06:37 | 显示全部楼层
支持楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-22 18:15:11 | 显示全部楼层
haoye
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-15 22:21:42 | 显示全部楼层
慢慢学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-11 13:23:00 | 显示全部楼层
开心快乐每一天
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 23:44:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-17 18:23:06 | 显示全部楼层
回复是美德
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 14:15:19 From FishC Mobile | 显示全部楼层
水经验+3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-25 16:14:35 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-4 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表