Notebooks 的成熟
2021年8月5日,作者 Chris Dias,@chrisdias
一种(并非如此)新的开发方式
Notebooks——包含文本、可执行代码以及代码输出的文档——是一种有趣且令人兴奋的全新开发方式。
好的,它并非完全是全新的。Donald Knuth 在 1984 年引入了文学化编程(Literate Programming)的概念,Wolfram Mathematica 在 1988 年推出了由内核驱动的 Notebook UI。
在过去十年中,我们看到 Notebook 的使用量激增,尤其是在数据科学兴起之后。Jupyter Notebooks 等工具已成为数据科学社区的实际标准工具。它们被广泛使用和喜爱,涵盖从虚拟草稿本、数据准备任务到复杂机器学习模型开发等所有方面。
我们观察到一个有趣的趋势是,数据科学和机器学习正在成为一项团队运动:开发者越来越多地与数据科学家合作,为模型训练准备数据集,将探索性代码重构用于生产,并将模型推理集成到其核心产品中。我们自己的团队每天分析大量的使用数据,并使用Jupyter Notebooks来跟踪、分析和验证假设。我们使用特定领域的 Notebook(GitHub Issues)来跟踪 GitHub 存储库中的问题和工作项,从而深入了解每月发布 VS Code 的准备情况。Notebooks 现在对于我们运行 VS Code 项目至关重要。
新界面,无预警
我们一直致力于将 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 中搜索内核或自定义可视化工具。我们的 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 使用愉快!