windows開發者模式,微軟:Excel 正成為開發者的終極武器!

 2023-10-22 阅读 21 评论 0

摘要:【CSDN 編者按】有點雷人,Excel 不僅僅是辦公軟件,還是編程語言……言歸正傳,Excel 作為編程語言還存在一些不足。為了彌補這些缺陷,Excel 團隊與微軟劍橋研究院建立了長期合作關系。好消息接連傳來…… windows開發者模式。作者 |?Andy Gordon?

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

windows開發者模式。作者 |?Andy Gordon? ?譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

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

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

  • 不允許用戶定義新函數。

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

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

?

LAMBDA 的功能

?

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

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

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

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

=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。在完成命名后,你可以通過函數名調用函數,因此也就不需要重復整個公式了。

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

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

?

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

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

?

下一步的計劃

?

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

社區的回應

?

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

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

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

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

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/160015.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息