Vous pourriez utiliser le "langage humain" comme analogie.
Les programmes Windows communiquent avec le système d'exploitation Windows à l'aide de l'API Windows, l'API est comme un langage.
Les programmes Linux communiquent avec le système d'exploitation Linux en utilisant un autre langage, l'API Linux. Linux ne "parle" pas l'API Windows, Windows ne "parle" pas l'API Linux.
Il existe des moyens de faire en sorte que Linux comprenne l'API Windows, comme installer Wine en tant que traducteur.
Pour améliorer un peu l'analogie du "langage humain" :
Chaque fois qu'un programme doit afficher quelque chose à l'écran (une fenêtre, un texte, une image, un menu, un bouton...), lire un fichier sur le disque, se connecter à un réseau, émettre un son, faire quelque chose lorsqu'un utilisateur clique sur la souris ou lorsque l'utilisateur tape quelque chose, chaque fois qu'un programme doit le faire, il doit demander au système d'exploitation de le faire. En fait, parler au système d'exploitation est ce qu'un programme fait la plupart du temps.
Le système d'exploitation Windows et le système d'exploitation Linux peuvent faire tout cela facilement, mais comme ils ont été créés par des personnes différentes, ils le font tous les deux d'une manière différente et le programme doit également demander ces services d'une manière différente. Les langages parlés par Linux et Windows sont complètement différents.