Notebooks 的成熟
2021 年 8 月 05 日, 作者:Chris Dias, @chrisdias
一种(并非全新)的开发方式
Notebooks(笔记本)——包含文本、可执行代码以及代码输出的文档——是一种有趣且令人兴奋的全新开发方式。
好吧,它并不完全是全新的。Donald Knuth 在 1984 年提出了 Literate Programming(文学化编程)的概念,而 Wolfram Mathematica 在 1988 年推出了由 Kernels(内核)驱动的 Notebook UI。
在过去十年中,我们看到了 notebook 使用量的爆炸式增长,尤其是在数据科学兴起之后。像 Jupyter Notebooks 这样的工具已经成为数据科学社区事实上的标准工具。它们被广泛使用和喜爱,用途从虚拟草稿本到数据准备任务,再到复杂的机器学习模型开发。
我们观察到的一个有趣趋势是,数据科学和机器学习正成为一项团队运动:开发人员越来越多地与数据科学家协作,为模型训练准备数据集,重构用于生产的探索性代码,并将模型推理集成到其核心产品中。我们自己的团队每天分析大量的用法数据,并使用 Jupyter notebooks 来跟踪、分析和验证假设。我们使用特定领域的 notebook(GitHub Issues)来跟踪 GitHub 仓库中的问题和工作项,从而深入了解每月发布 VS Code 的准备情况。Notebooks 现在对我们运行 VS Code 项目至关重要。
新的 UI,没有警告
我们一直在努力将 notebook 支持构建到 VS Code 的核心中,以使其更快、更安全——并允许您喜爱的 VS Code 扩展在其中工作。作为这项工作的一部分,我们还对用户体验进行了更改,使 notebook 感觉像是该工具不可或缺的一部分,而不是像早期尝试中那样作为附加组件。
如果您使用的是 Insiders 版本,您可以一直跟踪我们如何改进体验。在 Stable 版本上,有 40% 的用户使用了新的 notebook 体验。反馈总体上是积极的。因此,就像 Nigel Tufnel 一样,我们决定把音量调到 11,让所有人都转向新的实现。
不幸的是,正如您很快告诉我们的那样,我们在几乎没有警告的情况下完成了这次过渡。您正在使用 Jupyter Notebooks 进行工作,清理和分析那个庞大的数据集以模拟宇宙的膨胀,而我们却将您的世界颠倒了。您喝了一杯咖啡,启动了 VS Code,然后“砰”的一声,您的 notebook 体验变得……不同了。
虽然我们很高兴在 VS Code 中引入新的体验,但这样的惊喜并不是您早上启动工具时所期望的。为此,我们想表示歉意。有更好的方法来推出更改,让每个人都了解正在发生的事情、原因以及时间。
但它不一样了!
VS Code 中 notebook 的原始版本非常接近经典的 Jupyter Notebooks 体验,它的外观和行为几乎相同。这是一个合理的起点,一种温暖、舒适且熟悉的体验。然而,随着我们对 VS Code 用户如何使用 notebook 和工具的其他部分有了更多的了解,我们意识到这两种体验需要更相似而不是更不同。
VS Code 中的 notebook 应该感觉自然,以便您可以在编写代码文件和在 Python 中为宇宙建模的 notebook 之间无缝切换。这意味着 VS Code 中的 notebook 尽可能利用内置的隐喻和熟悉的键盘快捷键。
例如,在代码单元中编写代码应该感觉与在功能齐全的文本编辑器中编写代码相同,无论您使用什么语言。设置不应特定于 notebook。快速修复、大纲、源操作、重构、多光标、自动换行、收缩和展开选择、列选择模式、更改大小写以及其他编辑器体验都应该相同。您最喜欢的编辑器扩展,如 Bracket Pair Colorizer 和 Snippets 应该可以正常工作。您应该能够像今天处理源文件一样,并排以图形方式比较 notebook。
生态系统
此外,我们设想了一个丰富的 notebook 扩展生态系统。您应该能够以发现主题和新语言支持的相同方式在 Marketplace 中搜索 Kernels 或自定义可视化工具。我们的 API 甚至支持为新领域创建自定义(非 Jupyter)notebook。例如,REST Book 扩展允许您编写和保留具有自定义输出可视化效果(例如 JSON、HTML 和自定义文档)的 REST 调用。如前所述,GitHub Issues Notebooks 允许您为您的仓库创建不同问题查询的 notebook 来管理您的项目,就像我们所做的那样。
未来一片光明
为了完成这个比喻,VS Code 中的 notebook 已经从那些笨拙的青少年时期成熟为(年轻)成年,自信而强大,未来一片光明。如果您是从 Jupyter 迁移过来的,使用 VS Code notebook 可能需要一些调整,但我们希望最终会值得。而且,正如我们一直努力做的那样,您可以通过设置自定义体验(在设置编辑器中搜索 @tag:notebookLayout)。
我们相信,扩展 VS Code 丰富的编码体验和生态系统以包括全面的 Jupyter Notebook 支持,可以为您带来强大的新见解,融入您的日常开发中。 我们在七月版本中提供了一些很棒的新体验,请尝试一下,并告诉我们您的想法(无论是好的还是坏的!)。您的反馈对于帮助我们构建尽可能最好的产品至关重要。
谢谢!
Jim、Joe、Kai、Chris 和 VS Code 团队
祝您 Notebooking 愉快!
