GitHub和人工智慧非營利研究組織Fast.ai合作,共同開發出稱為Nbdev的文學式程式設計環境,藉由Nbdev,開發者可以在Jupyter筆記本中,創建完整的Python套件,編寫單元測試程式,並以功能豐富的文件系統編寫文件。

文學式程式設計是一種結合程式語言和文件的開發方法,開發者編寫的文字,一部分會成為可編譯和執行的程式碼,另一部分則成為說明文件,比起僅使用高階程式語言進行開發的方法,文學式程式設計讓開發者,更能夠表達程式邏輯以及流程,也使得程式碼更容易維護。

Nbdev是一個探索性程式設計系統,Fast.ai解釋,大多數開發人員進行探索和試驗時,會花費大量的時間,像是測試從未使用過的API,或是了解演算法的行為,甚至是對程式碼進行除錯的過程,Fast.ai認為探索的過程本身就很有價值,開發者應該把這個過程儲存起來,以便其他開發者可以透過閱讀前人的經歷,學習更多的知識。

人們通常使用筆記本開發系統進行探索,並在真正進入開發工作階段時,回到IDE或文字編輯器,而Nbdev的目的,是要將程式碼編輯器的主要優點,帶入筆記本系統中,讓開發者可以直接在筆記本中,完成整個程式開發周期,GitHub提到,已經有部分工具融入了文學式程式設計的概念,像是Swift Playgrounds、Jupyter以及Mathematica,但是這些工具仍無法涵蓋整個軟體開發周期。

為了支援這樣的想法,GitHub與Fast.ai一起,以Jupyter筆記本基礎上建立Nbdev,以填補現階段文學式程式設計需求的空白。Nbdev有很多功能與GitHub平臺整合,像是託管在GitHub頁面的Jupyter筆記本,可以自動根據程式碼產生超連結文件,這些文件可被搜尋,並且能夠根據關鍵字,自動連結到相對應的文件頁面。

而GitHub Actions也會配置持續整合功能,自動進行單元測試,即便開發者不熟悉GitHub Actions也沒關係,因為過程不需要開發者干預,GitHub Actions就能自動運作。Nbdev環境是由多個部分組合而成,包括可預覽文件網站的網頁服務器,還有用來編寫程式碼的Jupyter伺服器,以及一系列命令列工具,開發者可以與GitHub Codespaces一起用,讓使用過程更加簡單。

Nbdev除了和GitHub整合之外,Nbdev本身也提供許多功能,例如筆記本與原始碼之間會維持持續且強健的雙向同步,因此在需要的時候,開發者可以從筆記本切換到IDE中,快速進行編輯,而且開發者也可以直接在筆記本中,編寫測試程式碼,且不需要學習使用特殊的API,只要使用單一命令列工具或是GitHub Actions,就能開始平行執行測試。Nbdev也可以被用來自動發布pypi和conda套件。

Nbdev不只可以用來創建Python軟體,開發者也可以擴充Nbdev,以創建新型工具,像是GitHub最近以Nbdev開發了部落格平臺fastpages,讓開發人員能直接使用Jupyter筆記本,編寫部落格文章,fastpages會利用GitHub Actions和GitHub Pages自動將筆記本轉成部落格文章。另外,GitHub還用Nbdev和部落格平臺fastpages,創建武漢肺炎(COVID-19)儀表板,該互動儀表板可自動以Jupyter筆記本更新資訊。

熱門新聞

Advertisement