Fork me on GitHub

VS Code多语言笔记本扩展插件 Polyglot Notebooks

早在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 能用,用这东西写个爬虫之类的小脚本,边跑随改实在是舒适的体验,用来学习算法之类的就很不错了。

posted @ 2023-03-23 15:31  张善友  阅读(1744)  评论(0编辑  收藏  举报