Bonsoir bergeronnette,
Comme tu le sais tes questions sont extrêmement larges et complexes, elles ont donc énormément de réponses possibles.
J’ai l’impression que tu te demandes d’où sa sort.
Une réponse très vulgarisée peut être la suivante :
- tout d’abord le courant électrique qui fournit le signal numérique, absent 0 ou présent 1
- ensuite l’électronique permettant de faire notamment des portes logiques OU, ET, NON… voir entre autres l’algèbre de Boole, à ce niveau il est déjà possible de faire de la programmation « matérielle »
- les portes logiques ont ensuite été miniaturisées et améliorées notamment à travers les transistors, ces composants entre autres ont permis de faire les micro-processeurs. A ce niveau les langages de programmation, directement compris car gravés physiquement dans le processeur, sont nommés Assembleur. Il y a donc plusieurs Assembleurs selon les différents processeurs
- à partir de là beaucoup de langages compilés ont vu le jour, je ne citerais que le plus utilisé aujourd’hui C, ces langages utilisent un compilateur, pour simplifier, initialement coder en Assembleur. Le code produit par le développeur n’est donc pas directement celui exécuté par le processeur
- ensuite, pour simplifier, des langages interprétés sont apparus, par exemple toujours dans les plus utilisés le Python. Ce dernier comme beaucoup de langages interprétés d’aujourd’hui utilise un interpréteur coder en C.
1) Les commandes sont-elle construites avec un
langage prédéfini ?
Comme tu l’as compris il n’y a pas en soit un langage « prédéfini » mais
plusieurs niveaux d’abstraction. Pour reprendre l’exemple du Python il se base sur un interpréteur codé en C, interpréteur qui est lui même compilé en Assembleur pour être utilisable par la machine.
Si toutes fois on doit considérer des langages prédéfinis, il s’agit de ceux gravés dans les processeurs donc les Assembleurs.
Pour reprendre l’exemple de ta question mkdir est codé en C.
2) Comment ce code est
connu par la machine et son OS ?
Le C étant le langage créé pour réécrire Unix et donc une grosse partie du système de base de GNU/Linux, il est connu de ce dernier. Les
programmes simples
compilés à partir du C n’ont besoin de rien puisqu’ils sont
compréhensibles par le processeur (niveau machine). Cependant un programme utilise généralement des morceaux de code déjà existants afin de ne pas coder perpétuellement les mêmes fonctionnalités. Ces codes sont regroupés dans ce qu’on appelle des librairies. Et pour le cas de C sa librairie standard, autrement dit celle fournie avec le langages que tous développeurs C utilisent, est présente dans tous les systèmes d’exploitation que je connais.
Par ailleurs les
langages interprétés sont connus par la machine seulement si un
interpréteur est
installé (niveau OS).
3) Quand je lis que ce
langage a été créé par …, qu'est-ce que cela signifie ?
Le C a été créé par Dennis Ritchie et Ken Thompson, cela signifie qu’ils ont été les
fondateurs du langages. Ceux sont eux qui ont conçu le langage C et développé en Assembleur le premier compilateur C.
Ces fondateurs d’un langage écrivent à la fois les spécifications de la langue formelle qu’ils veulent rendre compréhensible aux développeurs et à la machine et l’implémentation de ce langage via un compilateur ou un interpréteur.
A noter un fait assez fréquent, considérer parfois comme un aboutissement d’un langage, est de coder le compilateur/interpréteur dans le langage lui-même. Par exemple il existe un interpréteur Python codé en Python cela n’est possible qu’après la mise en place d’une première version de Python codé dans un langage déjà compréhensible par la machine.