Potresti usare il "linguaggio umano" come analogia.
I programmi Windows comunicano con il sistema operativo Windows utilizzando l'API di Windows, l'API è come un linguaggio.
I programmi Linux comunicano con il sistema operativo Linux utilizzando un altro linguaggio, l'API Linux. Linux non "parla" dell'API di Windows, Windows non "parla" dell'API di Linux.
Ci sono modi per far capire a Linux l'API di Windows, come installare Wine come traduttore.
Per migliorare un po' l'analogia con il "linguaggio umano":
Ogni volta che un programma deve visualizzare qualcosa sullo schermo (una finestra, un testo, un'immagine, un menu, un pulsante...), leggere un file dal disco, connettersi a una rete, emettere un suono, fare qualcosa quando un utente fa clic con il mouse o quando l'utente digita qualcosa, ogni volta che un programma ha bisogno di farlo, deve chiedere al sistema operativo di farlo. Infatti, parlare con il sistema operativo è ciò che un programma fa la maggior parte del tempo.
Sia il sistema operativo Windows che il sistema operativo Linux possono fare tutto ciò facilmente, ma poiché sono stati creati da persone diverse, lo fanno entrambi in modo diverso e anche il programma deve richiedere quei servizi in un modo diverso. Le lingue parlate da Linux e Windows sono completamente diverse.