Sin embargo muchos lenguajes modernos como Java o C# (y otros lenguajes de la plataforma .NET), lo que hacen es utilizar un paso intermedio entre estos dos estados: entre el cdigo de alto nivel en el que escribimos las aplicaciones y el de bajo nivel que sale del proceso de compilacin.