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 的发布准备情况。对于我们运行 VS Code 项目而言,Notebooks 现在至关重要。
全新的界面,毫无预警
我们一直在努力将对 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 扩展生态系统。您应该能够像发现主题和新语言支持一样,在 Marketplace 中搜索内核(Kernels)或自定义可视化工具。我们的 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 愉快!
