Notebook 的成熟之路
2021年8月5日,由 Chris Dias (@chrisdias) 撰写
一种(不那么)新的开发方式
Notebook——一种包含文本、可执行代码以及代码输出的文档——是一种有趣且令人兴奋的新型开发方式。
好吧,它并非全新。Donald Knuth 于 1984 年提出了文学编程的概念,而 Wolfram Mathematica 则在 1988 年推出了由内核驱动的 Notebook 用户界面。
在过去十年中,我们见证了 notebook 使用量的爆炸式增长,尤其是在数据科学领域兴起之后。像 Jupyter Notebooks 这样的工具已成为数据科学社区事实上的标准工具。从虚拟草稿、数据准备任务,到复杂的机器学习模型开发,它们都备受喜爱和广泛使用。
我们观察到的一个有趣趋势是,数据科学和机器学习正成为一项团队运动:开发人员越来越多地与数据科学家合作,为模型训练准备数据集,重构探索性代码以用于生产环境,并将模型推理集成到其核心产品中。我们自己的团队每天都会分析海量的使用数据,并使用 Jupyter Notebooks 来跟踪、分析和验证假设。我们使用特定领域的 notebook(GitHub Issues)来跟踪 GitHub 仓库中的问题和工作项,从而深入了解 VS Code 每月发布的准备情况。Notebook 现在对于我们运行 VS Code 项目至关重要。
新 UI,无预警
我们一直致力于将 notebook 支持构建到 VS Code 的核心中,以使其更快、更安全,并让您喜爱的 VS Code 扩展能在其中工作。作为这项工作的一部分,我们还对用户体验进行了更改,让 notebook 感觉像是工具中不可或缺的一部分,而不是像早期那样只是一个附加组件。
如果您正在使用 Insiders 版本,您可能已经见证了我们逐步改进体验的过程。在稳定版中,我们曾让 40% 的用户体验了新的 notebook 界面。反馈普遍是积极的。于是,就像奈吉尔·塔夫内尔一样,我们决定把音量调到 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 建立一个丰富的扩展生态系统。您应该能够像发现主题和新语言支持一样,在 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 支持,可以打造一个强大的工具,为您的日常开发带来强大的新见解。我们在七月版中推出了一些很棒的新体验,请务必尝试并告诉我们您的想法(无论好坏!)。您的反馈对于帮助我们打造最好的产品至关重要。
谢谢!
Jim、Joe、Kai、Chris 及 VS Code 团队
祝您 Notebook 愉快!