7.3 lambda函数
类别:所有人
7.3.1 lambda的一些历史
lambda(λ)在希腊字母表中位于第11位。同时,由于希腊数字是基于希腊字母的,所以λ在希腊数字中也表示了值30。在数理逻辑或计算机科学领域中,lambda则是被用来表示一种匿名函数,这种匿名函数代表了一种所谓的λ演算(lambda calculus)。
λ演算是计算机语言领域的老古董,或者更确切地讲,λ演算应该算做编程语言理论的研究成果,它的出现指引了实际编程语言的诞生。20世纪30年代,阿隆佐·邱奇[1](Alonzo Church)引入了这套表示计算(computation)的形式系统。1958年,当时身在MIT的约翰·麦肯锡(John McCarthy)创造出了基于λ演算的LISP语言(但他并没有实现LISP。第一个Lisp语言的实现是Steve Russell在IBM 704机器上完成的)。LISP语言历史远早于C语言,可以算作第二古老的高级编程语言(第一个成功的高级编程语言是IBM的FORTRAN),也是在学术界产生的第一个成功的编程语言,其被广泛应用于人工智能的研究领域。相比于基于lambda的LISP的成功,C++则显得非常年轻。直到30年后,Bjarne Stroustrup才在贝尔实验室里开始设计并实现C++。
而从软件开发的角度看,以lambda概念为基础的“函数式编程”(Functional Programming)是与命令式编程(Imperative Programming)、面向对象编程(Object-orientated Programming)等并列的一种编程范型(Programming Paradigm)。现在的高级语言也越来越多地引入了多范型支持,很多近年流行的语言都提供了lambda的支持,比如C#、PHP、JavaScript等。而现在C++11也开始支持lambda,并可能在标准演进过程中不停地进行修正。这样一来,从最早基于命令式编程范型的语言C,到加入了面向对象编程范型血统的C++,再到逐渐融入函数式编程范型的lambda的新语言规范C++11,C/C++的发展也在融入多范型支持的潮流中。
[1]阿隆佐·邱奇是图灵的老师。