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 扩展。要使用它,您需要:
- 安装.NET 7
- 安装 Visual Studio Code (VS Code)
- 启动VS Code 并安装"Polyglot" 插件.

安装完毕之后,我们可以有两种开启方法:
- 新增 ipynb 文件再切换到 .NET Interactive 引擎
(ipynb 文件是用于编写 IPython Notebook 的文件,也就是 Jupyter Notebook 在使用的文件。 而微软把 .NET Interactive 引擎让 Jupyter Notebook 可以支持 C#, F#, SQL 等语言,让 Notebook 可以支持多语言的编写) - 使用 Polyglot Notebooks 的指令或快捷键,直接建立 dib 或 ipynb 文件
增一个 ipynb 文件:



现在我们已经可以看到让我们编码的单元格了,这样就完成准备工作啦!首先当然要从 Hello world 开始啦,让我们直接在单元格里面开写:

单元格的右下角可以让我们切换语言:

例如说我们可以来个 JavaScript:

当然我们并不是只有这一个小小的单元格能用,可以按下左上角的「+code」来添加代码单元格,或是把鼠标移到单元格最底部,会出现执行之后帮你往下新增一格的按钮:

现在我们可以同时放上两个语言:

我们也可以针对某一格来执行,或是用鼠标选择指定的单元格,就可以选择执行指定的单元格以上或以下的部份,如果有修改某一格,然后要从修改的部分重跑一次的时候还挺方便的。此外还有复制贴上单元格、合并单元格等等操作,可以在下图右边红框的「...」找到,这边就不再赘述。

插入 Markdown 单元格
眼尖的朋友应该发现了,上面新增单元格的地方除了「+ code」以外,还有「+Markdown」的选项,毕竟 Polyglot Notebooks 这东西还是一本「笔记本」,只能贴 Code 不能写笔记还算什么笔记本呢,对吧?
因此我们可以在代码区块之间适当地加入 Markdown 区块,来提供需要的信息,或是纪录需要的笔记。 让我们编写的过程可更有条理,之后回来阅读也可以更快掌握内容。
除了在最底下新增单元格的做法以外,我们也可以对指定的区块上下来插入新单元格:

我们很多情况并不会只用内置的语法就完成,通常还会安装一些 Nuget 组件来直接帮我们解决问题,在 Polyglot Notebooks 里面,我们要安装 Nuget 组件,要使用 #r “nuget:{套件名称}” 的指令
例如我想要安装 这个套件包Microsoft.SemanticKernel,我就可以这样写:

小结
这篇记录了 Polyglot Notebooks 的基本用法,能像 Python 的 Jupyter NoteBook 逐步对资料进行处理,又有 C# 的 Linq 能用,用这东西写个爬虫之类的小脚本,边跑随改实在是舒适的体验,用来学习算法之类的就很不错了。
VS Code多语言笔记本扩展插件 Polyglot Notebooks的更多相关文章
- visual studio code开发代码片段扩展插件
背景 visual studio code编辑器强大在于可以自己扩展插件,不仅可以去插件市场下载,也可以按照官方的API很方便的制作适合自己的插件: 自己最近在开发一个手机端网站项目,基于vant项目 ...
- 创建VS Code 扩展插件
VS Code提供了强大的扩展功能,我们可以通过开发插件实现自己的业务模型编辑器.这里我们快速介绍一下插件的创建.开发和发布过程. 创建插件开发模板 首先需要确认系统中安装了node.js,并且可以使 ...
- vscode简单使用介绍及个人常用扩展插件
vscode全称Visual Studio Code 是微软开发一款IDE,官方地址 vscode 作为一款前端编辑器功能很强大,灵活,可以根据个人喜好选择扩展插件,而且还支持多种开发语言, 关于v ...
- Sublime Text 前端开发常用扩展插件推荐
Sublime Text 前端开发常用扩展插件推荐 Sublime Text Sublime Text 是程序员们公认的编码神奇,拥有漂亮的用户界面和强大的功能 更重要的是,Sublime Text ...
- 100个精选zencart扩展插件
100个精选zencart扩展插件 特别推荐 1. 数据库备份 2. 产品横向布局. 3. 邮件订阅Newsletter Subscribe. 4. google 翻译google_translate ...
- vs2010(vs2012)好用的扩展插件介绍
一直以来只使用番茄vs助手(https://www.wholetomato.com/downloads/default.asp)辅助写代码,也都忘了是谁介绍的,不过确实好用. 相比原始的vs,它提供了 ...
- 五十八.Kibana使用 、 Logstash配置扩展插件
1.导入数据 批量导入数据并查看 1.1 导入数据 1) 使用POST方式批量导入数据,数据格式为json,url 编码使用data-binary导入含有index配置的json文件 ]# ...
- vs code的使用与常用插件和技巧大全总结
vs code的使用与常用插件和技巧大全总结 Author:3# 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@ 极客小俊,CSDN官方首发 ...
- BlazeMeter发布chrome扩展插件,支持JMeter脚本创建
BlazeMeter发布chrome扩展插件,支持JMeter脚本创建http://www.automationqa.com/forum.php?mod=viewthread&tid=3898 ...
- Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...
随机推荐
- eclipse中利用Maven逆向工程生成PO类以及mapper(mybatis)
在pom.xml的project>build里面添加如下代码,让maven环境支持mybatis-generator组件 <pluginManagement> <plu ...
- gdb 脚本 简单理解
1. gdb 脚本的语法简介: 摘录博客:https://blog.csdn.net/hejinjing_tom_com/article/details/50350865 1] # 为脚本注释命令 ...
- @Async异步注解的使用
@Async 简介 使用spring快速开启异步执行服务的注解 应用场景 同步:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步: 异步调用则是只是发送了调用的指令,调用者无需等 ...
- pytorch杂谈
inputs=tt.randn([10,3])可以随机生成高维度的数组 2. 定义一个模型为modle modle.cpu()将其调用到cpu modle.cuda()将其调用到gpu 3. 关于Cr ...
- Vuex----Actions
Actions用于处理异步任务. 如果通过异步操作变更数据,必须通过 Action,而不能使用Mutation,但是在 Action中还是要通过触发Mutation的方式间接变更数据. 注意: 在Ac ...
- 高并发解决方案之 redis 分布式锁
背景:秒杀服务中要写一个定时任务:活动到期时给order微服务发送关闭订单的通知.这需要改变数据库表中的数据,而集群中服务是多节点的方式进行部署,会出现并发执行的情况,所以采用的redis的分布式锁的 ...
- FII-PRX100-D开发板FPGA的烧录和RISC-V 软件代码下载
1. 生成*.bit文件之前先RESET结果 首先,打开Vivado FII_RISCV_V2.01工程(这里以V2.01版本为例),如图1所示. 图1 FII_RISCV_V2.01工程 要生成相应 ...
- 鸣人的影分身【按照前i个数,最小数是不是0,建立转移方程】
鸣人的影分身 题意 鸣人最多有n个分身,m的能量.分身的能量可以为0. 问有多少种方案数. 思路 很容易定义状态:f[i] [j]: 前i个分身,共花费能量j的方案数. 状态转移:刚开始想的枚举第i个 ...
- Delphi集合增删的另一种操作
D7 1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, ...
- (6) JavaScript - Math对象与日期对象
1 认识对象 概念:对象就是一种类型,一种引用类型,而对象则是引用类型的实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,通常它也被称作类. 面向过程思想:只考虑过程 ...