小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

微軟:Excel 正成為開發(fā)者的終極武器

 草容生 2021-02-21
【CSDN 編者按】有點雷人,Excel 不僅僅是辦公軟件,還是編程語言……言歸正傳,Excel 作為編程語言還存在一些不足。為了彌補這些缺陷,Excel 團隊與微軟劍橋研究院建立了長期合作關系。好消息接連傳來……

作者 | Andy Gordon 譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

微軟的 Excel 幾乎是家喻戶曉的辦公軟件,它也是世界上使用最廣泛的編程語言。編寫 Excel 公式的用戶甚至超過了 C、C++、C#、Java 和 Python 程序員的總和。盡管 Excel 取得了巨大的成功,但作為一種編程語言它仍然有一些基本的弱點,其中最突出的兩大弱點是:

  • Excel 公式語言實際上僅支持標量值,即數(shù)字、字符串和布爾值;

  • 不允許用戶定義新函數(shù)。

為了解決這兩個問題,微軟劍橋研究院與 Excel 團隊建立了長期合作關系,致力于將電子表格公式轉換為成熟的編程語言。二者合作的成果逐步出現(xiàn)在產(chǎn)品中。在 2019 年 ACM SIGPLAN 編程語言原理研討會(POPL 2019)上,微軟宣布了兩項重大進展:Excel 的數(shù)據(jù)類型不再限于文本和數(shù)字,允許單元格包含原生記錄類型,包括鏈接到外部數(shù)據(jù)的實體以及動態(tài)數(shù)組(允許普通公式計算整個數(shù)組,結果溢出到相鄰單元格中)等。這些變化都是為了解決第一個問題,即在 Excel 中建立豐富的、完整的、原生的結構化數(shù)據(jù)。

2020 年 12 月,微軟發(fā)布了 LAMBDA,允許用戶通過 Excel 的公式語言編寫新函數(shù),這可以直接解決第二個問題。這些新定義的函數(shù)可以調用其他的 LAMBDA 函數(shù),深度不限,甚至可以遞歸。有了 LAMBDA 后,Excel 已具備圖靈完備性。理論上來說,你可以使用 Excel 公式語言編寫任何計算。現(xiàn)在,加入 Insiders:Beta 計劃的用戶已經(jīng)可以使用 LAMBDA 了。在 2021 年的 POPL 大會上,微軟的視頻中討論了 LAMBDA 以及電子表格的一些研究。

微軟:Excel 正成為開發(fā)者的終極武器

LAMBDA 的功能

研究人員都知道自 1960 年代以來,邱奇的 lambda 表示是很多編程語言的基礎,因此,它本身就是一種富有表現(xiàn)力的編程結構。融合 lambda 為 Excel 帶來了一次從量變到質變的提升。

為了說明 LAMBDA 強大的功能,下面我們使用這種表示法編寫一個函數(shù),計算直角三角形的斜邊長:

=LAMBDA( X, Y, SQRT( X*X+Y*Y ) )

LAMBDA 是 2020 年 3 月發(fā)布的 LET 的補充,因此,這個示例也可以寫成下面這樣:

=LAMBDA( X, Y, LET( XS, X*X, YS, Y*Y,SQRT( XS+YS ) ) )

這個函數(shù)有兩個參數(shù):X 和 Y。函數(shù)的功能是將 X*X 的值綁定到 XS 中,Y*Y 的值綁定到 YS,結果返回 SQRT(XS+YS )。

我們可以利用 Excel 中已有的命名管理器,為這個公式命名。如果我們?yōu)樵摵瘮?shù)取名 PYTHAGORAS,則 PYTHAGORAS(3,4)的結果就等于 5。在完成命名后,你可以通過函數(shù)名調用函數(shù),因此也就不需要重復整個公式了。

而且,LAMBDA 就是那個我們熟知且喜愛的lambda:lambda 可以是另一個lambda 的參數(shù)或者結果;你可以定義邱奇數(shù);lambda 可以返回 lambda,所以也可以實現(xiàn)柯里化;使用 LAMBDA 定義不動點組合子,進而編寫遞歸函數(shù);等等。(此外,lambda 也可以擁有函數(shù)名,因此它們可以直接遞歸調用自己,這比使用不動點組合子要方便得多。)

微軟:Excel 正成為開發(fā)者的終極武器

遞歸調用:反轉字符串和不動點組合子

反轉字符串不屬于 Excel 的內置功能,以前只能使用 Visual Basic 或 JavaScript 等語言編寫。在下圖中,REVERSE 是一個遞歸 LAMBDA,它使用一對輔助函數(shù) HEAD 和 TAIL,分別獲取第一個字符以及除第一個字符以外的所有字符。

微軟:Excel 正成為開發(fā)者的終極武器

即便不依靠遞歸定義的名稱,Excel 的公式語言也是圖靈完備的,因為我們可以使用傳統(tǒng)的按值調用不動點組合子,對遞歸函數(shù)定義進行編碼。實際上,在 Excel 代碼庫中,運行這種組合子也是 LAMBDA 早期的壓力測試之一。下圖定義了一個階乘函數(shù)。

微軟:Excel 正成為開發(fā)者的終極武器
微軟:Excel 正成為開發(fā)者的終極武器

下一步的計劃

我們還有很多計劃。近期內即將發(fā)布的還有可嵌套的數(shù)組,以及更有效的處理數(shù)組的組合子,比如 MAP 和 REDUCE,這些組合子可以將lambda函數(shù)作為參數(shù)。除此之外,我們還希望不僅可以通過公式來定義函數(shù),而且還可以利用整個工作表來定義函數(shù),即所謂的工作表定義函數(shù),甚至是彈性工作表定義函數(shù)。實際上,工作表定義的函數(shù)遵循的是常見的電子表格設計,用戶可以通過分布在多個單元格上的多個公式來定義更大的函數(shù)。

微軟:Excel 正成為開發(fā)者的終極武器

社區(qū)的回應

只有當用戶能夠輕松、有效地使用某種編程語言,才能說這種語言取得了成功。有些人可能認為 LAMBDA 只適合編程語言愛好者,但對于最終用戶來說太難了。在發(fā)布 LAMBDA 時,微軟發(fā)動了一場全球規(guī)模的實驗,看看最終用戶是否能夠適應高階函數(shù)的編程。

最初得到的一些反饋很鼓舞人心。12 月,在 LAMBDA 發(fā)布的 24 小時內,我們收到了很多的視頻,包括將數(shù)據(jù)拆分成多列和使用 LAMBDA 和 LET 來創(chuàng)建單個單元格報告的視頻,還有一些博客帖子,包括計算軸刻度等,社區(qū)提供了很多我們從未想到的應用 LAMBDA 的方式。

此外,雖然編寫 lambda 需要專業(yè)的技能和知識,但調用 lambda 并不需要高端的技術。技術人員可以利用 LAMBDA 擴展 Excel,編寫特定于應用程序的函數(shù),而他們的同事則可以直接在 Excel 中調用這些函數(shù)。

我們期待,用戶進行各種實驗,不僅是 LAMBDA,還有數(shù)據(jù)類型和動態(tài)數(shù)組。我們相信這些新的函數(shù)式編程功能將改變人們使用 Excel 做決策的方式。

參考鏈接:https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多