Иерархия программирования не работает так же, как иерархия слоев сетевого стека.
TLDR Абсолютно нет.
Когда программа на чистом языке компиляции компилируется, создается двоичное представление и выполняется только это двоичное представление. И двоичное представление, в общем случае, не имеет признаков, из какого языка высокого уровня и из каких инструкций оно составлено.
Ассемблер - это, в основном, удобочитаемое представление двоичного кода.
Это почему мы знаем дизассемблирование, но не смущение и прочее одно ...
Если мы программируем на Java или Python, программа не переводится на C или C++ вначале (но иногда можно найти переводчик с какого-либо языка на C или C++), то он скомпилируется в некоторое промежуточное двоичное представление - интерпретируемый байт-код (может быть более подходящим косвенное выполнение термин в случае байт-кода) или JIT, скомпилированный в собственный двоичный код.