Questa è una domanda molto basilare ma è qualcosa che non ho mai capito completamente e recentemente, studiando .NET Core e ASP.NET 5 ho sentito il bisogno di una comprensione più completa dell'argomento.
Leggere l'articolo Introduzione al Common Language Runtime ( CLR) troviamo la seguente parte di testo:
Every program has a surprising number of dependencies on its runtime environment. Most obviously, the program is written in a particular programming language, but that is only the first of many assumptions a programmer weaves into the program. All interesting programs need some runtime library that allows them to interact with the other resources of the machine (such as user input, disk files, network communications, etc). The program also needs to be converted in some way (either by interpretation or compilation) to a form that the native hardware can execute directly.
Ora, questa idea di ambiente di runtime sembra essere molto semplice, ma ancora molto importante, non solo quando si lavora con .NET, ma quando si ha a che fare con la programmazione in generale. Sembra essere un concetto generale che è abbastanza importante da capire.
Fino ad oggi ho sempre avuto una comprensione intuitiva e semplice al riguardo: l'ambiente runtime è l'ambiente su cui verrà eseguito il codice. Ma questo è un modo abbastanza sciolto per capirlo. Probabilmente c'è molto di più ad esso, come si può dedurre dal testo sopra.
In questa impostazione: che cos'è realmente l'ambiente di runtime in generale? Non solo per .NET, ma nella programmazione in generale, qual è l'ambiente di runtime? È solo qualcosa di concettuale o è un pezzo di software, come il CLR per .NET? In breve, come dovremmo comprendere correttamente l'idea dell'ambiente di runtime?