🚀 在 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 年推出了由内核驱动的 Notebook UI

在过去十年中,我们看到了笔记本使用量的爆炸式增长,尤其是在数据科学兴起之后。像 Jupyter Notebooks 这样的工具已成为数据科学社区事实上的工具。它们被广泛使用和喜爱,用途包括虚拟草稿本、数据准备任务和复杂的机器学习模型开发。

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

全新 UI,无警告

我们一直在努力将笔记本支持构建到 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 中搜索内核或自定义可视化工具。我们的 API 甚至支持为新领域创建自定义(非 Jupyter)笔记本。例如,REST Book 扩展允许您编写和持久化 REST 调用,并为输出提供自定义可视化(例如,JSON、HTML 和自定义文档)。如前所述,GitHub Issues Notebooks 允许您为您的仓库创建不同问题查询的笔记本,以管理您的项目,就像我们所做的那样

未来一片光明

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

我们相信,扩展 VS Code 丰富的编码体验和生态系统,使其包含全面的 Jupyter Notebook 支持,将使其成为一个出色的工具,可以将强大的新见解带入您的日常开发中。我们在 7 月版本中获得了一些很棒的新体验,请尝试一下,并告诉我们您的想法(好的和坏的!)。您的反馈对于帮助我们构建尽可能最好的产品至关重要。

谢谢!

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

祝您笔记本使用愉快!