前言
大家都知道,Python 在 14 年后的崛起,得益于机器学习和数学统计应用的兴起。Python 这么适合数学统计和机器学习,得益于 Jupyter Notebook。
什么是 Jupyter Notebook?
按照 Jupyter 创始人 Fernando Pérez 的说法,他最初的梦想是做一个综合 Julia、Python 和 R 三种科学运算语言的计算工具平台,所以将其命名为 Ju-Py-te-R。发展到现在,Jupyter 已经成为一个几乎支持所有语言,能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学运算平台。

你在一个框框中直接输入代码,运行,它立马就在下面给你输出。这样一个看起来华而不实的玩意儿,真的就成了 Python 社区的颠覆者吗?所以 Jupyter Notebook 的影响究竟有多大呢?
Jupyter Notebook 的影响力
从 2017 年开始,已有大量的北美顶尖计算机课程,开始完全使用 Jupyter Notebook 作为工具。比如李飞飞的 CS231N《计算机视觉与神经网络》课程,在 16 年时作业还是命令行 Python 的形式,但是 17 年的作业就全部在 Jupyter Notebook 上完成了。再如 UC Berkeley 的《数据科学基础》课程,从 17 年起,所有作业也全部用 Jupyter Notebook 完成。
而 Jupyter Notebook 在工业界的影响力更甚。在 Facebook,虽然大规模的后台开发仍然借助于功能齐全的 IDE,但是几乎所有的中小型程序,还是借助于 Jupyter Notebook 完成的。特别在一线大厂,也是清一色地全部使用 Jupyter Notebook。
Jupyter 解决了哪些问题
Jupyter 的优点
1、整合所有的资源
在真正的软件开发中,上下文切换占用了大量的时间。这些都是影响生产效率的因素。Jupyter 通过把所有和软件编写有关的资源全部放在一个地方,解决了这个问题。当你打开一个 Jupyter Notebook 时,就已经可以看到相应的文档、图表、视频和相应的代码。这样,你就不需要切换窗口去找资料,只要看一个文件,就可以获得项目的所有信息。
2、交互性编程体验
在传统的 Python 开发流程中,每一次实验都要把所有代码重新跑一遍,会花费开发者很多时间。特别是在像 Facebook 这样千万行级别的代码库里,即使整个公司的底层架构已经足够优化,真要重新跑一遍,也需要几分钟的时间。
而 Jupyter Notebook 引进了 Cell 的概念,每次实验可以只跑一小个 Cell 里的代码;在代码下面立刻就可以看到结果。这样强的互动性,让 Python 研究员可以专注于问题本身,不被繁杂的工具链所累,不用在命令行直接切换,所有科研工作都能在 Jupyter 上完成。

3、零成本重现结果
在机器学习和数学统计领域,Python 的使用是非常短平快的。再常见的场景中使用时,会发现需要 pip 重新安装一堆依赖软件。然而这些就会很消磨时间。
在最初的 Jupyter Notebook 也是挺麻烦的,需要先在本机上安装 IPython 引擎及其各种依赖软件。不过现在的技术趋势,则是彻底云端化了,例如 Jupyter 官方的 Binder 平台和 Google 提供的 Google Colab 环境。它们让 Jupyter Notebook 变得和在线文档一样,在浏览器点开链接就能运行。
所以,现在当你用 Binder 打开一份 GitHub 上的 Jupyter Notebook 时,你不需要安装任何软件,直接在浏览器打开一份代码,就能在云端运行。
Jupyter Notebook 的初体验
学习技术的最好方法就是实战。可以先体验使用 Jupyter Notebook 的工作感受。在 Binder 中,你只要输入其对应的 GitHub Repository 的名字或者 URL,就能在云端打开整个 Repository,选择你需要的 notebook,你就能看到相应的界面。


