In writing code in programming languages that rely on being compiled into binary format, there results dependencies on the compiler toolchain being present on the OS system.

In newer languages such as Python and Java, an abstraction layer is created on top of the OS system.

This layer allows for great portability, which is one of the most crucial features of a software which is desired to be deployed widely.