À retenir
- C'est une étape intermédiaire entre le code source (lisible par l'humain) et le programme final (exécutable).
- Il est écrit en langage machine, spécifique à un type de processeur.
- Plusieurs fichiers de code objet sont souvent combinés pour former un seul logiciel.
Le code objet est une version d'un programme informatique qui a été traduite par un compilateur en langage machine (des suites de 0 et de 1), mais qui n'est pas encore tout à fait prête à être lancée. C'est un peu comme une pièce détachée d'un moteur : elle est fabriquée, mais elle doit être assemblée avec d'autres pièces pour que la voiture puisse démarrer.
Étymologie
Le terme vient de l'anglais object code. Ici, le mot « objet » ne fait pas référence à la programmation orientée objet, mais désigne la « cible » ou le résultat produit par l'étape de compilation du code source écrit par l'humain.
Exemples d'usage
- Les fichiers avec l'extension
.o(sous Linux/macOS) produits lors de la compilation d'un programme en langage C. - Les fichiers
.objgénérés par les environnements de développement Windows comme Visual Studio.
Cas d'usage
Ce concept intervient principalement dans les langages dits « compilés » (comme le C, le C++ ou le Rust). Le développeur écrit son code, le compilateur le transforme en code objet, puis un outil appelé « lieur » (linker) assemble ces fichiers objets pour créer le logiciel final (l'exécutable).
Bonnes pratiques
Il est inutile d'essayer de lire ou de modifier manuellement un fichier de code objet avec un éditeur de texte, car il contient des instructions binaires illisibles pour l'homme. Dans la gestion de projet, on ajoute généralement ces fichiers à la liste des éléments à ignorer (.gitignore) pour ne pas encombrer les serveurs de sauvegarde avec des fichiers générés automatiquement.
Synonymes
Antonymes
Conseil
Si vous débutez, ne confondez pas le 'code objet' avec les 'objets' de la programmation orientée objet (POO) ; ce sont deux concepts totalement distincts. Le code objet est une notion de fabrication logicielle (système), tandis que l'objet en POO est une structure de données (logique).
Questions fréquentes
Quelle est la différence entre code objet et code exécutable ?
Le code objet est un module incomplet qui contient des références vides vers d'autres fonctions. L'exécutable est le produit fini où tous ces liens ont été résolus.
Est-ce que le Java produit du code objet ?
Non, le Java produit du 'bytecode', qui est un format intermédiaire différent, destiné à être lu par une machine virtuelle (JVM) et non directement par le processeur.
Peut-on transformer du code objet en code source ?
C'est très difficile. On appelle cela la 'décompilation', mais on ne retrouve jamais les noms de variables originaux ni les commentaires du développeur.