微软:进化版Excel已是图灵完备的语言
自1980年以来,Microsoft Excel重塑了人们组织、分析和可视化数据的方式。它是世界上使用最广泛的编程语言。C,C ++,C#,Java和Python的程序员加起来,人数也没有Excel的使用者多。
尽管Excel如此成功,但它作为一种编程语言仍存在短板。Excel有两大缺点:(1)Excel公式语言实际上仅支持标量值——数字、字符串和布尔值;(2)不允许用户定义新函数。
现在,Microsoft Research Cambridge的Calc Intelligence项目与Excel团队将Excel升级为成熟的编程语言。
在2019年ACM SIGPLAN编程语言原理研讨会(POPL 2019)上,合作团队宣布了两项重大进展:数据类型超越了文本和数字,单元格可填写的内容包括链接到外部数据的实体以及动态数组——允许普通公式计算溢出到相邻单元格中的整个数组。
2020年12月,团队又发布了LAMBDA。它允许用户定义以Excel公式语言编写的新函数。新定义的函数可以调用其他函数,甚至可以递归调用。
借助LAMBDA,Excel已成为Turing完备的语言。
在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机,那么它是图灵完备的。
现在,原则上您可以使用Excel公式语言编写任何程序。
作为实例,联合团队编写了下面的函数,用于计算直角三角形的斜边的长度:
= LAMBDA(X,Y,SQRT(X*X + Y*Y))
= LAMBDA(X,Y,LET(XS,X*X,YS,Y*Y,SQRT(XS + YS))))
/*函数有两个名为X和Y的参数,将X*X的值赋予变量XS,将Y*Y的值赋予变量YS,并返回SQRT(XS + YS)作为结果。
Excel中现有的名称管理器允许为任何公式命名。如果我们将函数命名为PYTHAGORAS,则诸如PYTHAGORAS(3,4)之类的公式的结果为5。命名后,您可以按名称调用函数,那无疑比每次键入函数完整表达式要方便得多得多。
微软官网还有更多介绍,感兴趣的朋友可以点击下方链接:
https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/