GitHub与Fast.ai推出文学式程序设计工具

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笔记本更新信息。