如何打造.NET程序员的多语言编程Polyglot Notebook?
摘要:之前在学习机器学习的时候,使用了Jupyter Notebook这个笔记本工具,感觉十分好用。于是我就在想.NET这边有没有类似的,今天就跟你介绍下Polyglot Notebook这个多语言笔记本工具。Polyglot Notebook是
大家好,我是Edison。
之前在学习机器学习的时候,使用了Jupyter Notebook这个笔记本工具,我就在想.NET这边有没有类似的,今天就跟你介绍下Polyglot Notebook这个工具。
Notebook是什么鬼?
Notebook是一种混合格式化文本和可执行代码,创建具有可运行示例的特殊文档程序。Notebook由多个单元格组成,它们是不同的文本区域,通常有三种区域:
代码单元:包含可执行的代码示例
输出单元格:包含上次执行关联代码单元格的结果
Markdown单元格:用于编辑和显示文本内容,包含符合markdown格式的文本、图像、图表等
Jupyter是Notebook技术的经典代表,基本我们学习Python相关的内容如数据科学都会用到它,非常好用。
Polyglot Notebook
Polyglot Notebook是一个由Microsoft开发的交互式编程环境,它允许用户在同一个笔记本中混合使用多种编程语言,旨在提高开发者在处理复杂数据分析和机器学习任务时的效率和灵活性。
一句话总结:Polyglot Notebook = 交互式编程笔记本 + Markdown + Coding
目前,它支持混合使用以下编程语言:
我们目前可以在Visual Studio Code中通过安装这个扩展来进行安装它:
快速开始
(1)准备工作
安装.NET SDK 以及 VS Code
安装Polyglot Notebook扩展插件
注意:目前Polyglot插件要求安装.NET 9 SDK才可以运行。
(2)Hello World
创建一个hello-world.dib文件(jupyter是.ipynb文件),选择C# Script内核,开始写出第一句代码,点击下图中的1号红色区域按钮即可实现代码执行输出。
你可以通过点击上图中2号红色区域,从C# 切换到另一种 编程语言,比如切换到 JavaScript:
除了添加代码示例,我们还可以添加文本内容,例如下图中的1号和2号红色区域所示。此外,点击下图中的3号红色按钮即可实现预览。
再来一个复杂一点的代码:
var displayRef = "initial value".Display();
System.Threading.Thread.Sleep(5000);
displayRef.Update("different value");
点击执行效果演示,在阻塞两秒后发生value改变:
(3)变量共享
有时候我们在编写多语言代码时,想要从上一个A语言的上下文中传递某个变量到下一个B语言的上下文中。这时候,我们就可以使用 set 命令来实现。
例如,我们在C#语言中写了如下代码:
var cars = new []{"Saab", "Volvo","BMW" };
Console.WriteLine(cars[0]);
然后,我们添加一个JavaScript的代码块,通过set命令来获取到共享的变量cars:
#!set --value @csharp:cars --name carsFromCSharp
console.log(carsFromCSharp)
效果如下图所示:
Polyglot还提供了一个变量视图,你可以通过点击下面的按钮进行查看:
(4)用户输入
有时候我们想要让代码更加灵活,往往会依赖于用户输入的值,如输入密码,Key等信息。Polyglot提供了@input前缀来实现。例如,弹出一个框让用户输入一个url,并将用户输入存储到变量url中。
