什么是语法糖(转自BAIDU)
2011-08-24 19:20
190 查看
语法糖
语法糖(Syntactic sugar ), 是由Peter J.
Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功 能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。
举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),看来语法糖不是“现代语言”才有啊,连我们的老大哥C也有,而且这种写法简洁明了,也更好懂了。
实际上从面向过程到面向对象也是一种语法糖啊,C语言可以通过它的指针、类型转换,结构实现面 向对象的编程风格,但是C++更进一步的推广了这种风格,更好用了,不过到了C#把OO的风格发挥得淋漓尽致。OO的编程风格对于面向过程来说是不是一种 语法糖呢?如果生硬地照此理解,只有计算机硬件指令才不算语法糖,而其他一切利用编译器、汇编器将代码抽象,和自然语言更相近的手段都算语法糖。
现在很多很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?
我想语法糖和其他编程思想一样重要,什么duck type,人本接口,最小接口,约定优于配置,其实不都是一些思想上的“语法糖“?
不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖, 就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法 可以酿造更好的编程风格,以前一些难以实现的方面现在也轻而易举了。
语法糖(Syntactic sugar ), 是由Peter J.
Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功 能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。
举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),看来语法糖不是“现代语言”才有啊,连我们的老大哥C也有,而且这种写法简洁明了,也更好懂了。
实际上从面向过程到面向对象也是一种语法糖啊,C语言可以通过它的指针、类型转换,结构实现面 向对象的编程风格,但是C++更进一步的推广了这种风格,更好用了,不过到了C#把OO的风格发挥得淋漓尽致。OO的编程风格对于面向过程来说是不是一种 语法糖呢?如果生硬地照此理解,只有计算机硬件指令才不算语法糖,而其他一切利用编译器、汇编器将代码抽象,和自然语言更相近的手段都算语法糖。
现在很多很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?
我想语法糖和其他编程思想一样重要,什么duck type,人本接口,最小接口,约定优于配置,其实不都是一些思想上的“语法糖“?
不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖, 就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法 可以酿造更好的编程风格,以前一些难以实现的方面现在也轻而易举了。
相关文章推荐
- 什么是语法糖(转自BAIDU)
- 什么是流利语法Fluent Syntax
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?zz
- Java千百问_03基础语法(014)_volatile关键字有什么用
- Java千百问_03基础语法(015)_System.exit(0)有什么用
- Goole 和 Bing 和 Baidu 搜索语法
- @ 符号 在java中是什么语法 代表什么
- margin 0 auto什么作用与语法重点介绍教程
- Ajax02 什么是json、json语法、json的使用、利用jQuery实现ajax
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?
- 什么是静态内部(Static Inner)类,语法要注意什么?
- Java千百问_03基础语法(019)_注解是什么
- 请问各位大神,在OC中,这是个什么语法格式。
- 很傻很天真的问题: 什么是语法糖!
- 数据库中视图的好处是什么? 及语法
- 当你输入一个网址/点击一个链接,发生了什么?(以www.baidu.com为例)
- 当你在浏览器中输入baidu.com并且按下回车之后发生了什么?
- C++中定义对象的语法,带括号与不带括号有什么区别?
- 什么是语法糖?