语法糖(Syntactic sugar)

语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。

也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的机会。

语法糖方便了程序员的开发,提高了开发效率,提升了语法的严谨也减少了编码出错误的几率。我们不仅仅在平时的编码中依赖语法糖,更要看清语法糖背后程序代码的真实结构,这样才能更好的利用它们。

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

不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖,就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法可以酿造更好的编程风格,以前一些难以实现的方面现在也轻而易举了。
需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。

http://baike.haosou.com/doc/1355052.html

8.断言语句//运行时需要加上 VM参数 -ea public static void main(String[] args) {

String str = "fans2";

boolean flag = "fans".equals(str);

assert (flag);

}//程序结果Exception in thread "main" java.lang.AssertionError

at JavaTenSugar.main(JavaTenSugar.java:102)

9.对枚举的switch支持 // 对枚举和字符串的switch支持

package switch_;

public class SwitchSelector {

    public static void main(String[] args) {
        char str=‘c‘;
        switch (str) {
        case ‘c‘:
            System.out.println(str);
            break;

        default:
            break;
        }
    }

}

http://blog.sina.com.cn/s/blog_a34e3f14010140l5.html

循环历遍(foreach)

List<Integer> list = new ArrayList<Integer>();
for(Integer num : list){
    System.out.println(num);
}

Foreach要求被历遍的对象要实现Iterable接口,由此可想而知,foreach迭代也是调用底层的迭代器实现的。反编译上面源码的字节码:

List list = new ArrayList();
Integer num;
Integer num;
for (Iterator iterator = list.iterator(); iterator.hasNext(); System.out.println(num)){
    num = (Integer) iterator.next();
}

枚举
       枚举类型其实并不复杂,在JVM字节码文件结构中,并没有“枚举”这个类型。
       其实源程序的枚举类型,会在编译期被编译成一个普通了类。利用继承和反射,这是完全可以做到的。
       看下面一个枚举类:

public enum EnumTest {
    OLIVER,LEE;
}

反编译字节码后:

public final class EnumTest extends Enum {

    private EnumTest(String s, int i) {
        super(s, i);
    }

    public static EnumTest[] values() {
        EnumTest aenumtest[];
        int i;
        EnumTest aenumtest1[];
        System.arraycopy(aenumtest = ENUM$VALUES, 0,
                aenumtest1 = new EnumTest[i = aenumtest.length], 0, i);
        return aenumtest1;
    }

    public static EnumTest valueOf(String s) {
        return (EnumTest) Enum.valueOf(EnumTest, s);
    }

    public static final EnumTest OLIVER;
    public static final EnumTest LEE;
    private static final EnumTest ENUM$VALUES[];

    static {
        OLIVER = new EnumTest("OLIVER", 0);
        LEE = new EnumTest("LEE", 1);
        ENUM$VALUES = (new EnumTest[] { OLIVER, LEE });
    }
}

http://blog.csdn.net/ol_beta/article/details/6787234

时间: 2024-10-13 09:00:38

语法糖(Syntactic sugar)的相关文章

究竟什么是语法糖呢

其实语法糖只是一个概念,大家可能很早就在接触语法糖了,只是一直不知道这个就是语法糖 百科原话:语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法.语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读.不过其并没有给语言添加什么新东西. 这里有两点需要注意的: 1语法糖的目的:是为了让代码更

什么是语法糖

1.    定义 在计算机科学中,语法糖(syntactic sugar)是指编程语言中可以更容易的表达一个操作的语法,它可以使程序员更加容易去使用这门语言:操作可以变得更加清晰.方便,或者更加符合程序员的编程习惯. 语法糖是语言中的一个构件,当去掉该构件后,并不影响语言的功能和表达能力. 简而言之,语法糖是一种便捷写法 2.    好处 使用语法糖,让我们写的代码更简单,看起来也更容易理解 原文地址:https://www.cnblogs.com/baxianhua/p/9772863.htm

语法糖(Syntactic sugar )

https://en.wikipedia.org/wiki/Syntactic_sugar In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for human use: things can be

C#语法糖(Csharp Syntactic sugar)大汇总

首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1.  经过简化的Property 早些时候我们这样声明Property 1 2 3 4 5 6 7 8 9 10 11 private string _myName; public string MyName {     get { return _myName; }     set { _myName

C#常用語法糖(Csharp Syntactic sugar)

首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1.  经过简化的Property 早些时候我们这样声明Property private string _myName; public string MyName { get { return _myName; } set { _myName = value; } 千篇一律的这样声明,没有多大意义,于是C

深入理解java虚拟机(十二) Java 语法糖背后的真相

语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是,在计算机语言中添加某种语法,这些语法糖虽然不会对语言的功能产生任何影响,却能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会.但是如果只是大量添加和使用语法糖,却不去了解他,容易产生过度依赖,从而无法看清语法糖的糖衣背后,程序代码的真实面目. 总而言之,语法糖可以看做是编译器实现的一些"小把戏",这些"小

语法糖

语法糖 是 设计用來让事物变得容易读 的程序语言的语法, 使得语言 更 接近 人类, 因为事物 能被表达得更清晰 更简洁, 或者在其他特定的风格上更让人喜欢. 语法糖 getArray(Arr, vector(i, j)) 非语法糖 Arr[i, j] 语法糖 setArray(Arr, vector(i, j), value) 非语法糖 Arr[i, j] = value 如果一个结构 能被移除且不带副作用 也能叫 语法糖. why a[i] is syntactic sugar for *(

Java语法糖1:可变长度参数

先抄一段定义: 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.Java 中最常用的语法糖主要有泛型.变长参数.条件编译.自动拆装箱.内部类等.虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖. 简而言之就是语法糖就是为了方便编程,但不影响语言本身功能的情况下做的一种语法处理.虽然没有对语言本身有

【转载】游戏并发编程的讨论 &amp; Nodejs并发性讨论 &amp; 语法糖术语

知乎上这篇文章对于游戏后端.性能并发.nodejs及scala等语言的讨论,很好,值得好好看. https://www.zhihu.com/question/21971645 经常了解一些牛逼技术人员的分享,比闭门造车或者停留在陈旧技术固步自封,要好多了. 下面是一些摘录: 用C++开发,1000并发是基本. C++的优点是与硬件近,所以处理图形时速度快很多, 如果是处理业务,其实主要是看选用的算法的时间复杂度. 各语言之间的执行效率差别没那么大,同样用过C++跟JAVA,相比较的话JAVA的学