语法糖

维基百科,自由的百科全书
跳转至: 导航搜索

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·蘭丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。

举例来说,许多程序语言提供专门的语法来对数组中的元素进行引用和更新。从理论上来讲,一个数组元素的引用涉及到两个参数:数组和下标向量,比如这样的表达式,get_array(Array, vector(i, j))。然而,许多语言支持这样直接引用 Array[i, j]。同理,数组元素的更新涉及到三个参数,set_array(Array, vector(i, j), value),但是很多语言提供这样直接赋值,Array[i, j] = value。

语言处理器,包括编译器和静态分析器,在处理的过程中,首先把“加糖”的结构变成基本的结构,这个过程叫做“去糖”。

語法糖的例子[编辑]

for循环[编辑]

一个例子是C語言中的for循环:

for (i = 0; i < 10; i++)
{
  //P
}

其效果和以下的while循环是一樣的,其中P是循环要處理的主體。

i = 0;
while (i < 10)
{
  //P
  i++;
}

中置表示法[编辑]

Haskell雖然是函數程式語言,但它提供了a + b這種「中置表示法」的語法,讓程式更容易撰寫,也比較容易閱讀。

Lua[编辑]

Lua中,一个变量的赋值方法如下:

foo = "bar"

而一个函数,作为基本类型之一,语法与定义变量的方法基本一致:

foo = function()
    print "bar"
end

但是此种写法对于有其他编程语言背景的人来说不够直观,故Lua提供了如下的语法糖:

function foo()
    print "bar"
end

它与上述方法效果完全一样,但是更加紧凑和易于理解。

衍生詞語[编辑]

语法盐[编辑]

语法盐英语:syntactic salt)指的是让写出坏代码更难的语法特性。这些特性强迫程序员做出一些基本不用于描述程序行为,而是用来证明他们知道自己在做什么的额外举动。

语法糖精[编辑]

语法糖精英语:syntactic saccharine),或者说语法糖浆英语:syntactic syrup),指的是未能让编程更加方便的附加语法。[1][2]

参见[编辑]

  • 语法盐:和语法糖相反,有意使书写代码更加困难以避免人为疏失产生错误的语法

參考資料[编辑]

  1. ^ syntactic sugar. catb.org. [3 August 2015]. 
  2. ^ Mathematics of Program Construction. google.com. [3 August 2015].