Started using fairly recently, there is a tool called Jupyter. Characteristics are:
- It is based on Python; it was originally called IPython which provided interactive Python environment.
- It now supports more than Python, thus is now developed under Project Jupyter. IPython, however, is still in development for providing interactive Python environment, which Jupyter uses for its Python execution.
- For the format options, it is possible to use Markdown (and LaTeX!) for documentation.
- Code can be executed within the notebook.
and more. (I really use this with Python only, and I cannot tell much about other part where some other languages are used.) I personally like:
- It can use many features in Python. For instance, libraries such as Tensorflow can be used. Depending on the purpose, libraries like SciPy, NumPy to perform advanced calculation and plotting, SymPy to use it as a CAS (Computer Algebra System) to do symbolic math, and use Pandas and Python internal libraries to interact with databases.
- Notes can be saved to share. There is nbviewer that enable people to view notebooks right on the browser. Services like GitHub uses it on Gist which can display the notebook.
- Codes can be saved as Python, which makes it a development environment that can execute Python expressions interactively. Written notes are exported as a comment.
I have done installation on Linux and Windows, and I found Anaconda to be easy to install. (Anaconda uses it as a based on its commercial platform, and additional features are available for purchase thus making it scalable platform where these modules and supports are needed and have enough budget to do so. It is however, is bit too expensive for personal use.) For Linux, you can just use pip to install Jupyter on pre-existing installation. I will write more some details as I feel like it.