參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

Notebook 的成熟之路

2021年8月5日,由 Chris Dias (@chrisdias) 撰寫

一種(不那麼)新的開發方式

Notebook——一種包含文字、可執行程式碼以及程式碼輸出的文件——是一種有趣且令人興奮的新型開發方式。

An image of a notebook that analyzes data from the Titanic shipwreck

好吧,它並非全新。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 愉快!