Notebook 的成熟之路
2021 年 8 月 5 日,作者:Chris Dias,@chrisdias
一种(不那么)新的开发方式
Notebook 是一种包含文本、可执行代码以及代码输出的文档,它是一种有趣且令人兴奋的新开发方式。
好吧,它并非全新。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 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 和代码片段应该能直接工作。您应该能够像今天比较源文件一样,并排、图形化地比较 Notebook。
生态系统
此外,我们设想为 Notebook 构建一个丰富的扩展生态系统。您应该能够像发现主题和新语言支持一样,在市场中搜索内核或自定义可视化工具。我们的 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 愉快!