在 VS Code 中尝试

笔记本的成熟

2021 年 8 月 5 日 作者:Chris Dias, @chrisdias

一种(没那么)新的开发方式

笔记本——一种包含文本、可执行代码以及代码输出的文档——是一种有趣且令人兴奋的全新开发方式。

An image of a notebook that analyzes data from the Titanic shipwreck

好的,这并非完全新颖。Donald Knuth 于 1984 年提出了 文学化编程 的概念,而 Wolfram Mathematica 于 1988 年推出了 由 Kernels 驱动的笔记本用户界面

在过去十年中,我们看到了笔记本使用量的爆炸式增长,尤其是在数据科学兴起之后。Jupyter Notebooks 等工具已成为数据科学社区事实上的标准工具。它们因其在从虚拟草稿本、数据准备任务到复杂的机器学习模型开发等各个方面的用途而受到喜爱。

我们观察到的一个有趣的趋势是,数据科学和机器学习正变得像一项团队运动:开发人员越来越多地与数据科学家协作,准备用于模型训练的数据集,重构探索性代码以用于生产,并将模型推理集成到他们的核心产品中。我们自己的团队每天分析大量的使用数据,并使用 Jupyter 笔记本 来跟踪、分析和验证假设。我们使用领域特定的笔记本(GitHub Issues)来跟踪 GitHub 仓库中的问题和工作项,提供关于每月发布 VS Code 的就绪情况的洞察。笔记本现在对于我们运行 VS Code 项目至关重要。

新的用户界面,没有警告

我们一直致力于将笔记本支持构建到 VS Code 的核心中,以使其更快、更安全,并允许您喜欢的 VS Code 扩展在其中工作。作为这项工作的一部分,我们还在用户体验方面进行更改,以使笔记本感觉像是工具的一个组成部分,而不是像早期那样作为附加组件。

如果您正在使用 Insiders 版本,您可以跟着我们一起见证体验的演变。在 Stable 版本中,有 40% 的用户在使用新的笔记本体验。反馈普遍是积极的。因此,就像 Nigel Tufnel 一样,我们决定将 音量调到 11,让所有人都迁移到新的实现上。

不幸的是,正如您迅速告知我们的那样,我们在几乎没有任何警告的情况下为您完成了迁移。您正在使用 Jupyter Notebooks 工作,清理和分析那个庞大的数据集来模拟宇宙的膨胀,而我们却让您的世界天翻地覆。您喝了杯咖啡,启动了 VS Code,然后“砰”,您的笔记本体验就...不一样了

虽然我们很高兴在 VS Code 中引入新的体验,但像这样的意外并不是您早上启动工具时所期望的。为此,我们想向您道歉。有更好的方式来推出更改,让每个人都知道正在发生什么、原因以及时间。

但它不一样!

VS Code 中最初版本的笔记本与经典的 Jupyter Notebooks 体验非常接近,外观和行为几乎完全相同。那是一个合理的起点,一种温暖、舒适、熟悉的体验。然而,随着我们更多地了解 VS Code 用户如何同时使用笔记本和工具的其他部分,我们意识到这两种体验需要更加相似,而不是不同。

VS Code 中的笔记本应该感觉自然,以便您可以在编写代码文件和使用 Python 对宇宙进行建模的笔记本之间无缝切换。这意味着 VS Code 中的笔记本尽可能利用了内置的隐喻和熟悉的键盘快捷键。

例如,无论您使用何种语言,在代码单元格中编写代码应该感觉与在功能齐全的文本编辑器中编写代码相同。设置不应特定于笔记本。快速修复、大纲、源操作、重构、多光标、自动换行、缩小和扩展选择、列选择模式、更改大小写以及其他编辑器体验应该是一样的。您喜欢的编辑器扩展,例如 Bracket Pair Colorizer 和代码片段,应该可以直接使用。您应该能够像今天比较源文件一样,并排图形化比较笔记本。

生态系统

此外,我们设想了一个丰富的笔记本扩展生态系统。您应该能够像发现主题和新的语言支持一样,在 Marketplace 中搜索 Kernels 或自定义可视化工具。我们的 API 甚至支持为新领域创建自定义(非 Jupyter)笔记本。例如,REST Book 扩展允许您编写和保存 REST 调用,并为输出提供自定义可视化效果(例如,JSON、HTML 和自定义文档)。如前所述,GitHub Issues Notebooks 允许您为您的仓库创建包含不同问题查询的笔记本,以管理您的项目,就像我们所做的一样

未来看起来一片光明

为了完善这个比喻,VS Code 中的笔记本已经从那些青涩的少年时期 成熟为(年轻的)成年,充满自信和力量,前途一片光明。如果您从 Jupyter 迁移过来,使用 VS Code 笔记本可能需要一些调整,但我们希望最终是值得的。而且,正如我们一直努力做的那样,您可以通过设置来自定义体验(在设置编辑器中搜索 @tag:notebookLayout)。

我们相信,将 VS Code 丰富的编码体验和生态系统扩展到包括全面的 Jupyter Notebook 支持,使其成为一个强大的工具,能够为您的日常开发带来新的强大洞察。我们在七月发布中带来了一些很棒的新体验,请尝试一下,并告诉我们您的想法(好的和不好的!)。您的反馈对于帮助我们打造最好的产品至关重要。

谢谢!

Jim, Joe, Kai, Chris 和 VS Code 团队

愉快的笔记本体验!