le “code source” : écrit et lisible par des humains, plus précisément une peuplade appelée programmeurs ou développeurs. C’est la description méthodique, et dans les moindres détails, de tout ce que fait le logiciel. Cette description est tapée comme vous taperiez une lettre, mais au lieu du français, dans un langage informatique. Il en existe des centaines, les plus connus ont pour nom : C, C++, Pascal, Basic, Java... Ces langages ont comme particularité de ne permettre aucune ambiguïté, contrairement aux langages naturels où un mot peut avoir plusieurs sens.
le “code binaire” ou “exécutable” formé de 0 et de 1, donc uniquement exploitable par l’ordinateur. Il est produit automatiquement à partir du “code source” au moyen d’une moulinette appelée compilateur. Il va faire s’animer l’ordinateur, au départ simple assemblage électronique inerte (en anglais : “hardware”, traduit par “matériel”).
A l’exception notable des Logiciels Libres ou Open Source [1], vous n’achetez qu’un droit d’utilisation de l’exécutable. Le code source reste secret et propriété de son concepteur. Sans lui, vous ne pourrez qu’observer le comportement apparent de l’exécutable. Des fonctionnalités cachées (oeuf de Pâques, cheat codes, backdoor...) ne se révéleront pas si on ne connaît pas l’astuce pour les déclencher.
Une analogie souvent employée est de présenter le code source comme une recette de cuisine. L’exécutable est alors ce qu’il y a dans votre assiette. Pour peu que le plat soit raffiné, vous ne devinerez que quelques ingrédients ou certaines des techniques de préparation. L’analogie atteint vite ses limites : la recette de cuisine la plus sophistiquée tiendra sur quelques pages alors qu’un code source peut atteindre plusieurs millions de lignes.