🚀 在 VS Code 中

Notebook 的成熟

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

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

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

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

好吧,它并非完全是新的概念。Donald Knuth 在 1984 年提出了文学编程的概念,Wolfram Mathematica 在 1988 年推出了由内核驱动的 Notebook UI

在过去的十年中,我们看到了 Notebook 使用量的爆炸式增长,尤其是在数据科学兴起之后。诸如 Jupyter Notebook 之类的工具已成为数据科学社区事实上的工具。它们被广泛使用和喜爱,从虚拟草稿纸、数据准备任务到复杂的机器学习模型开发,无所不包。

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

新 UI,无警告

我们一直在努力将 Notebook 支持构建到 VS Code 的核心中,以使其更快、更安全,并允许您喜爱的 VS Code 扩展在其中工作。作为这项工作的一部分,我们还在对用户体验进行更改,以使 Notebook 感觉像是该工具不可或缺的一部分,而不是像早期尝试中那样作为附加组件。

如果您使用的是 Insiders 构建版本,您可能已经关注了我们演变用户体验的过程。在稳定版中,我们有 40% 的用户使用了新的 Notebook 体验。反馈总体上是积极的。因此,就像 Nigel Tufnel 一样,我们决定 将音量调到 11,并将所有人迁移到新的实现。

不幸的是,正如您迅速告知我们的那样,我们在几乎没有警告的情况下为您进行了过渡。您当时正在使用 Jupyter Notebook 工作,清理和分析海量数据集以建模宇宙的膨胀,而我们却颠倒了您的世界。您喝了杯咖啡,启动了 VS Code,然后“砰”的一声,您的 Notebook 体验就...不同了

虽然我们很高兴在 VS Code 中引入新的体验,但像这样的惊喜并不是您早上启动工具时所期望的。为此,我们深感抱歉。有更好的方法来推出更改,让每个人都了解正在发生的事情、原因和时间。

但它不同了!

VS Code 中 Notebook 的原始版本非常接近经典的 Jupyter Notebook 体验,它看起来和行为方式几乎相同。这是一个合理的起点,一种温暖、舒适和熟悉的体验。但是,随着我们更多地了解 VS Code 用户如何使用 Notebook 和该工具的其余部分,我们意识到这两种体验需要更加相似而不是不同。

VS Code 中的 Notebook 应该感觉很自然,这样您就可以在编写代码文件和在 Python 中建模宇宙的 Notebook 之间无缝切换。这意味着 VS Code 中的 Notebook 尽可能地利用内置的隐喻和熟悉的键盘快捷键。

例如,无论您使用哪种语言,在代码单元格中编写代码都应该感觉与在成熟的文本编辑器中编写代码相同。设置不应特定于 Notebook。快速修复、大纲、源操作、重构、多光标、自动换行、收缩和展开选择、列选择模式、更改大小写以及其他编辑器体验应该相同。您喜爱的编辑器扩展(如 Bracket Pair Colorizer 和代码片段)应该可以直接使用。您应该能够以图形方式并排比较 Notebook,就像您今天对源文件所做的那样。

生态系统

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

未来一片光明

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

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

谢谢!

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

Notebook 使用愉快!