zoukankan      html  css  js  c++  java
  • 什么是语法糖

    语法糖简介

    语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

    在计算机科学中,语法糖(Syntactic sugar)是指编程语言中可以更容易的表达一个操作的语法,它可以使程序员更加容易去使用这门语言:操作可以变得更加清晰、方便,或者更加符合程序员的编程习惯。

    就相当于汉语里的成语。用更简练的言语表达较复杂的含义。在得到广泛接受的情况之下,可以提升交流的效率。

    之所以叫「语法」糖,不只是因为加糖后的代码功能与加糖前保持一致,更重要的是,糖在不改变其所在位置的语法结构的前提下,实现了运行时的等价。可以简单理解为,加糖后的代码编译后跟加糖前一模一样。

    基本解释

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

    对于机器语言,任何比他高级的语言都是语法糖,比如汇编语言,高级语言。

    对于汇编语言,任何比他高级的语言都是语法糖,比如高级语言。

    对于面向过程的语言,面向对象的语言都是语法糖。

    Java中的语法糖

    语法糖的存在主要是方便开发人员使用。但其实,Java 虚拟机并不支持这些语法糖。这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。

    com.sun.tools.javac.main.JavaCompiler 中的 deSugar 方法,负责解语法糖的实现。

    Java 中的语法糖只存在于编译期,在编译器将 .java 源文件编译成 .class 字节码时,会进行解语法糖操作,还原最原始的基础语法结构。这些语法糖包含条件编译、断言、Switch 语句与枚举及字符串结合、可变参数、自动装箱/拆箱、枚举、内部类、泛型擦除、增强 for 循环、lambda 表达式、try-with-resources 语句、JDK10 的局部变量类型推断等等。

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

    参考:

    https://www.zhihu.com/question/20651624

    https://www.jianshu.com/p/777b10385524

    https://www.jianshu.com/p/536bcceb99dc

    https://www.cnblogs.com/qingshanli/p/9375040.html

  • 相关阅读:
    在应用程序中利用Jena API处理OWL本体
    Encoded vs Literal, RPC vs Document
    DWR、XMLHTTP、XMLRPC和Flex
    北京的第一场雪
    让IE浏览器提示下载或直接打开word文档
    色拉英语第一集第一幕:记得说“请”
    色拉英语第一集第三幕:凯文在家吗?
    30天敏捷结果(30):提升敏捷结果
    生活:兔年春节家庭寻宝习俗
    敏捷个人:2011/1/26聊天记录(沟通、优势)
  • 原文地址:https://www.cnblogs.com/thetree/p/13606049.html
Copyright © 2011-2022 走看看