A software environment consists of tools and data. Tools may include software such as:
- Editors: emacs, Jupyter notebooks, Google Colab
- Interpreters: Python, R, Perl, PHP
- Version control applications: git, github
- Testing platforms: travis, jenkins, PyTest, JUnit
The data includes everything accessible by the software on disk, in memory, and accessible over the network, such as:
- Disk: persistent and temporary data files, source code, applicaton images - these are things that will persist after the computer has been switched off.
- Memory: Environmental variables, memory-resident programs and data, "virtual" disks - these are things that disappear and must be reset or reloaded if the computer is power-cycled.
- Network: data connected to your program by protocols like http/https, the language of web browsers.