Bin tu dois savoir que l´informatique ne date pas d´aujourd´hui . .. les compilos que tu utilisent aujourd´hui ont été créés au fil du temps. Les premiers étaient ( et devaient être) très basiques et pas très conviviaux ( d´ailleurs c´est toujours le cas). La différence est qu´aujourd´hui on a la possibilité d´avoir de vrai environnements graphiques de programmation qui nous facilitent bien la tâche.
Si tu regardes bien un ordinateur ne comprend que le langage machine ( des 0 et des 1), les premiers compilos ont du certainement être programmés qu´en langage machine.
D´ailleurs pour ceux qui s´en souviennent, les premiers MICRO-ordinateurs ( je précise bien micro..) avaient un langage ( souvent le basic) intégré en ROM ( cf les amstrad etc...). Il suffit d´avoir un langage accessible par tous et tout est ensuite possible avec les connaissances suffisantes bien sur.
Aujourd´hui tu peux très bien créer ton propre compilo C/C++ en C++ justement.
C´est le même principe pour les OS. Regarde Linux ca fait un bout de temps que le projet a démarré et c´est essentiellement codé en langage C & assembleur. Mais au départ les OS étaient intégrés en ROM ( cf Atari par exemple avec le TOS), codé et fourni par le constructeur.
Donc à la base tout est du langage machine.