VS Code多語言筆電擴充套件外掛 Polyglot Notebooks

2023-03-23 18:03:01

早在2022年12月12日,微軟就釋出了VS Code的多語言筆電擴充套件外掛 Polyglot Notebooks,所使用的引擎為. NET Interactive,目前支援包括C#、F#、PowerShell、JavaScript和SQL等多種語言。讓資料科學家能夠簡單執行跨語言任務,就像是使用SQL查詢SQL Server資料庫,並將表格結果共用至JavaScript和HTML,建立可互動視覺化的應用。

Notebooks是一種方便使用的互動式程式開發工具,可用於執行程式碼、視覺化資料、執行方程式,或是編寫純文字,Notebooks的特性是讓使用者能以增量的和分段的方式,執行單元格內的程式。最有名的Notebooks來自Jupyter專案,多數人會結合Python和Jupyter Notebooks一起使用,快速迭代程式碼,以建立具有文字和資料視覺化的內容,也可成為學習程式程式語言,或快速製作概念原型的工具。在2019年,微軟通過建立支援C#、F#、PowerShell等.NET語言的Jupyter核心,將.NET帶入Jupyter生態系統,而微軟所開發的Polyglot Notebooks,則進一步擴充套件Notebooks的優點,過去開發者要在Notebooks上使用多種語言非常麻煩,難以使用一般IDE語法高亮顯示和自動完成等功能。

Polyglot Notebooks擴充套件外掛使用.NET技術所開發的.NET Interactive引擎,由於該引擎可充當筆電中不同程式語言的核心,因此使得Polyglot Notebooks能夠順暢以多種語言進行開發,就像是連線SQL Server資料庫和Kusto叢集,並使用SQL或是KQL編寫和執行查詢。

開發者可在同一個筆電中使用多種語言,並獲得良好的開發體驗,而不需要在使用多種語言時,在不同的工具間切換,當以一種語言完成工作時,開發者便可以將需要的變數共用給另一種語言,繼續在同一個檔案裡進行開發。

安裝

Polyglot Notebooks是一個 Visual Studio code 擴充套件。要使用它,您需要:

image

安裝完畢之後,我們可以有兩種開啟方法:

  • 新增 ipynb 檔案再切換到 .NET Interactive 引擎 (ipynb 檔案是用於編寫 IPython Notebook 的檔案,也就是 Jupyter Notebook 在使用的檔案。 而微軟把 .NET Interactive 引擎讓 Jupyter Notebook 可以支援 C#, F#, SQL 等語言,讓 Notebook 可以支援多語言的編寫)
  • 使用 Polyglot Notebooks 的指令或快捷鍵,直接建立 dib 或 ipynb 檔案

增一個 ipynb 檔案:

image

image

image

現在我們已經可以看到讓我們編碼的單元格了,這樣就完成準備工作啦!首先當然要從 Hello world 開始啦,讓我們直接在單元格里面開寫:

image

單元格的右下角可以讓我們切換語言

image

例如說我們可以來個 JavaScript:

image

當然我們並不是只有這一個小小的單元格能用,可以按下左上角的「+code」來新增程式碼單元格,或是把滑鼠移到單元格最底部,會出現執行之後幫你往下新增一格的按鈕:

image

現在我們可以同時放上兩個語言:

image

我們也可以針對某一格來執行,或是用滑鼠選擇指定的單元格,就可以選擇執行指定的單元格以上或以下的部份,如果有修改某一格,然後要從修改的部分重跑一次的時候還挺方便的。此外還有複製貼上單元格、合併單元格等等操作,可以在下圖右邊紅框的「...」找到,這邊就不再贅述。

image

插入 Markdown 單元格

眼尖的朋友應該發現了,上面新增單元格的地方除了「+ code」以外,還有「+Markdown」的選項,畢竟 Polyglot Notebooks 這東西還是一本「筆電」,只能貼 Code 不能寫筆記還算什麼筆電呢,對吧?

因此我們可以在程式碼區塊之間適當地加入 Markdown 區塊,來提供需要的資訊,或是紀錄需要的筆記。 讓我們編寫的過程可更有條理,之後回來閱讀也可以更快掌握內容。

除了在最底下新增單元格的做法以外,我們也可以對指定的區塊上下來插入新單元格:

image

我們很多情況並不會只用內建的語法就完成,通常還會安裝一些 Nuget 元件來直接幫我們解決問題,在 Polyglot Notebooks 裡面,我們要安裝 Nuget 元件,要使用 #r 「nuget:{套件名稱}」 的指令

例如我想要安裝 這個套件包Microsoft.SemanticKernel,我就可以這樣寫:

image

小結

這篇記錄了 Polyglot Notebooks 的基本用法,能像 Python 的 Jupyter NoteBook 逐步對資料進行處理,又有 C# 的 Linq 能用,用這東西寫個爬蟲之類的小指令碼,邊跑隨改實在是舒適的體驗,用來學習演演算法之類的就很不錯了。