We know that Jupyter Notebook is widely used to explore and experiment on lots of data or code. But there is a big gap between IDEs and Notebooks in terms of the development of libraries.
We will explain how developers fill this gap? Now you can use Jupyter for libraries development with ease.
Before we move in deep let’s understand few things like literate programming.
Literate programming is a methodology that combines programming language into documentation language. It makes the program robust, portable, and easy to maintain using High-Level Language.
Developers inclined towards IDEs
Jupyter Notebook is a widely used tool by Data scientists and developers. Scientists in explore and experiment algorithms. Using Notebook they can also develop new approaches and observe outcomes quickly.
Now, days programmers and developers are leaned towards IDEs (Integrated Development Environment) such as Pycharm, VCS, etc. for the development of libraries.
The reason behind this is that they can easily maintain code and documentation of libraries. Developers find a way to overcome this gap.
They said “They’re a way to convert Jupyter into a full-fledged IDE, where new concepts are turned into robust and reusable modules”.
So developers from institutions like Two Sigma, QuantStack, Bloomberg and fast.ai. developed tools:-
1. nbdev
nbdev is a library that allows developers to develop a library in Jupyter Notebooks, putting all your code, tests and documentation in one place.
2. Visual Debugger
A JupyterLab debugger UI extension is a visual debugger. Right now, xeus-python is the only Jupyter kernel that supports debugging.
To install it just run:
conda install xeus-python -c conda-forge
Then, run Jupyter Lab and on the sidebar search for the Extension Manager and enable it, if you haven’t so far.
In 1983, Donald Knuth came up with a powerful idea of a programming paradigm, he called it literate programming. The main idea behind is to use a program as a piece of literature, spoke to human beings rather than to a computer”.
What is literate programming?
It is a methodology that combines programming language into documentation language. It makes the program robust, portable and easy to maintain. Programs are almost written in high-level language. This framework will let you to compose code in Jupyter Notebook.
Jupyter equipped with following support after nbdev:-
More importantly It will enable software developers and data scientists to develop well-documented python libraries. Without leaving the Jupyter environment.
It is also available on PyPI so you can install it
Using pip
# using pip
pip install -e nbdev
For more info click here.
Using Git
# using git
git clone https://github.com/fastai/nbdev
To get started, read instructions by its developers, describing the notion behind nbdev and follow the detailed tutorial here.
Jupyter notebooks have always been a great way to explore and experiment with your code. However, software developers always leaned toward a full-fledged IDE, for the development of production-ready libraries.
Moreover, notebooks provide an environment for better documentation, including graphs, images and videos, and sometimes better tools, such as auto-complete functionality.
nbdev and the visual debugger are two projects that aim at closing the gap between notebooks and IDEs. We saw what power nbdev have and how it makes literate programming a reality.
Thanks for Reading.