语法糖(糖衣语法)

      今天看资料时,遇到一个词——语法糖,不是第一次遇到这个词,之前觉得很简单,没有深究过,今天特意看了看,发现其并且应用广泛,而且还挺有意思。    

   首先来看百科的解释(都大同小异,大致如下):语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。    

    从该解释中我们可以得到如下的知识点:          

        1、语法糖是计算机语言中的“添加”的语法,对功能没有影响,也就是说它是额外添加的,计算机没有它也可以正常运行。    

        2、语法糖出现的目的是为了方便程序员使用,增加了程序的可读性,减少了程序代码出错的机会。    

    那么,问题来了:            

        1、计算机本身的代码到底有什么样的问题,为什么用语法糖可以增加程序的可读性,减少程序出错的机会?        

        2、语法糖对功能没有影响,那么对性能呢,额外添加的它对性能的影响呢? 

    首先,我们来解决第一个问题:用一个网上的比较常见的例子来解释计算机本身代码的问题,在C语言中,我们知道数组名代表着数组的首地址,用“*(数组名+下标)”可以表示数组中的元素,但是我们常见的表示方法是“数组名[下标]”,这种“数组名[下标]”的方式就是一种“语法糖”。很明显第一种表示方法可读性比较差,需要编写人员有较好的基础,也给初学者和阅读代码的人增加了难度。当然,你可能会说,这没什么啊,很简单啊,完全不需要第二种方式也行啊,那么,我们继续,现在我们有一个二维数组,数组名叫array,我需要取出其中的某一个元素,用第一种方式我们要这样表示“*(*(array+i)+j)”,而用第二种即语法糖的方式则是这样“array[i][j]”,这样对语法糖的作用就有点感觉了吧。如果还是觉的没什么,好吧,那么我们继续,现在有一个四维数组,请取出其中的某个元素,请自行脑补两种方式......    

    通过上面的简单的一个例子,我们可以明显的感觉到语法糖的好处,大大简化了我们编码难度,增强了我们的阅读体验。当然,语法糖绝对不仅仅运用在C语言的数组中,我们平时编程时所用的很多语法都是语法糖的体现,比如后置和前置自增减、数组字典的显示定义等等。都是语法糖,无论对编程人员还是读者来说都是极大的简化和极好的体验。    

    现在再来看我们提出的问题,很明显,计算机本身的代码在面对比较复杂的问题时就会变的可读性差,编写难度大,而用语法糖,就可以使得代码有清晰的表示和极高的可读性,从而减少程序出错的机会。    

    再来看第二个问题:作为额外增加的语法,语法糖到底会不会影响计算机性能呢?我们此时所说的性能主要指计算机代码运行的效率。我们首先来看看什么时候代码运行的效率才会被影响,我个人做了个总结,影响计算机代码运行效率大致有以下几种情况:(1)计算机硬件运算速率太低(2)代码复杂度太高(3)代码太过冗余   这三个原因如果细究起来要做的太多,不在此赘述。我们再来看看语法糖到底是怎么做的,计算机对语法糖只需要做一件事,就是编译器在编译阶段会将会将语法糖包裹的东西自动转化为计算机代码,仅此而已,对性能几乎没有影响。

    语法糖概念的问题解决了,那么他就真的只有这么一点作用吗?当然不是,我们进一步扩展下,我们可以把语法糖看作是对现有代码的一种包装来简化编写和增强可读性。回想一下,我们平时所用的很多重要的编程思想是不是也是这个目的呢,我们可不可以也看成是语法糖呢,再进一步,我们接触的各种设计模式,框架模式是不是又是编程思想的语法糖呢?

    语法糖的应用广泛,我们平时所接触的很多语法与思想其实都是其体现。究其根本,这是一种追求简洁的思想,我们无时无刻都在和它打交道,写代码时语法力争简洁明了,算法力争最优等等,我们每一个人都是语法糖的受益者,也是创造者。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值