héhé : ) bonne question ! !
La programmation, c´est un chateau : tu empiles des pierres : les fonctions des langages évoluées sont des pierres placées en haut, qui s´appuient sur bcp de pierres du bas. Alors pour programmer une fonction du haut, C compliqué, car il faut avoir toutes celles d´en dessous : donc le probleme a été de construire les briques d´en dessous : elles ont été codées directement en code machine, c´est a dire avec les chiffres ( en binaire comme disent les autres, car le processeur fonctionne en code machine).
Bref, apres sont nés les linkers : programmes faits pour transformer l´assembleur en code machine. Les linkers sont programmés en code machine ( dont tres chiants a programmer : c´est comme si tu édites directement ton EXE, que tu mets les octets les uns a la suite des autres).
Mais apres, comme le linker existe, tu programmes en assembleur, ce qui est chiant, mais + faisable ! ensuite, avec l´assembleur, tu crées des interpreteurs ou des compilateurs C++ par exemple qui transforment un code C++ en assembleur, puis qui le linkent en code machine !
Apres, tu peux programmer en C++ puisque les compilateurs existent !
Voila, maintenant de tres bons compilateurs sont au point, donc de moins en moins de monde se fait chier a programemr en code machine ou en ASM