Alors, comment fonctionnent réellement les ordinateurs ?
Un aperçu de haut niveau de la façon dont les nombres binaires font fonctionner les ordinateurs pour les curieux non techniciens.
Le fonctionnement des ordinateurs est quelque chose qui m’a toujours intrigué mais je n’ai jamais vraiment pensé que j’allais avoir les connaissances de base réelles pour le comprendre, même à un haut niveau. Donc, faire les recherches pour écrire ce billet de blog et découvrir que ce n’était pas si difficile à comprendre a été très gratifiant, de plus, arriver à comprendre comment les ordinateurs fonctionnent, encore une fois même à un haut niveau, est assez époustouflant.
La façon la plus basique de penser à un ordinateur est comme une machine d’entrée/sortie. C’est une idée assez basique : les ordinateurs prennent des informations de sources externes (votre clavier, votre souris, vos capteurs ou Internet), les stockent, les traitent et renvoient le résultat (Output) de ce processus. D’ailleurs, si vous y pensez, à partir du moment où les ordinateurs sont connectés par internet, il y a une boucle sans fin d’entrées et de sorties car la sortie d’un ordinateur (disons un site web) devient l’entrée d’un autre et ainsi de suite( !!).
Maintenant, nous sommes tous assez habitués et familiers avec les façons qu’a un ordinateur de recevoir des entrées et d’imprimer certaines sorties, nous avons tous utilisé une souris ou un clavier, ou même parlé à un ordinateur et nous avons tous lu un article sur un site web, écouté de la musique ou parcouru de vieilles photos, etc. Ce avec quoi nous ne sommes pas aussi familiers, et ce que nous avons généralement du mal à comprendre, c’est comment un ordinateur traite réellement l’information.
Alors oui, à un niveau très fondamental, tout ce qu’un ordinateur comprend, ce sont des 1 et des 0, ce qui signifie que chaque entrée et sortie est à un moment donné traduite en ou à partir de 1 et de 0. Ce qui est puissant à propos des 1 et des 0 (également appelés bits – de BInary digiT), c’est qu’ils nous permettent de transformer toute information en signaux électriques (ON/OFF). Prenez un moment pour y réfléchir : Tout ce que vous voyez, pensez ou interagissez avec peut en fait être traduit et représenté sous forme de signaux électriques ( !!!). La représentation des informations sous forme de signaux électriques est ce qui permet aux ordinateurs de traiter réellement ces informations et de les transformer.
Alors, comment fonctionne le système des nombres binaires ? Les nombres binaires signifient que tous les nombres sont calculés avec la base 2. A titre d’exemple, la plupart d’entre nous sont habitués à penser aux nombres avec la base 10. Si vous pensez à un nombre quelconque, disons 2561, vous pouvez voir comment, selon la position que le nombre occupe de droite à gauche, le nombre a une valeur différente qui est un multiple de dix. Dans cet exemple, par exemple, 1 occupe la position 1s, 6 occupe la position 10s, 5 occupe la position 100s et 2 occupe la position 1000. Ainsi, (2×1000) + (5×100) + (6×10) + (1×1) = 2561. Les nombres binaires fonctionnent exactement de la même manière, mais chaque incrément représente un incrément de x2 par rapport au précédent. Voici un exemple de représentation du nombre 12:
Donc, avec 8 bits, vous pouvez représenter n’importe quel nombre entre 0 et 255, et avec 32 bits, vous pouvez représenter n’importe quel nombre entre 0 et 4 milliards. Vous vous dites peut-être : « Bien sûr, mais qu’en est-il des chaînes de caractères et de la ponctuation ? Eh bien, à l’heure actuelle, nous suivons toujours le code ASCII (American Standard Code for Information Interchange), qui associe tout caractère ou signe de ponctuation, y compris les majuscules, à l’un des chiffres de 8 bits. Et c’est ainsi que nous utilisons les chiffres pour représenter les lettres.
Sûr, mais qu’en est-il des images ? Eh bien, en fait, une image peut aussi être réduite à des 0 et des 1. Comme vous le savez, tout écran a un nombre donné de pixels et chaque pixel a une couleur et comme vous le savez, en utilisant les codes de couleur RGB ou HEX, nous pouvons représenter les couleurs comme des nombres, ce qui signifie que nous pouvons fondamentalement dire à un ordinateur quelle couleur chaque pixel doit avoir. La même chose vaut pour la musique, la vidéo et tout autre type d’information auquel vous pouvez penser.
Mais comment diable « calculons-nous » les signaux électriques ? C’est là que les circuits électriques entrent en jeu. A un niveau très basique et très simplifié, nous pouvons utiliser les circuits électriques pour nous comporter comme des « machines logiques ». Nous pouvons avoir des circuits qui, à partir d’une entrée spécifique, renvoient une sortie en fonction de la logique avec laquelle ils ont été construits (Pas, Et, Ou) mais aussi des sommes, des soustractions, des multiplications et des divisions. Ce qui est intéressant, c’est qu’en utilisant ces formes très élémentaires de représentation et de traitement de l’information, nous pouvons en fait atteindre la « complétude fonctionnelle », terme utilisé en logique pour désigner un ensemble d’opérateurs booléens capables de représenter toutes les tables de vérité possibles, ce qui est une façon élégante pour les mathématiciens de dire que le ciel est la limite. Tous ces calculs se produisent dans une unité à l’intérieur de votre CPU appelée ALU (Arithmetic Logic Unit).
Comme vous le savez probablement les CPU – Central Processing Unit – sont les cerveaux des ordinateurs et c’est là que tous les calculs se produisent. La partie intéressante des CPU est qu’ils n’ont pas de mémoire, ce qui signifie qu’ils ne peuvent se souvenir d’absolument rien. Sans mémoire, chaque calcul serait perdu juste après avoir été effectué. En gros, et comme vous le savez peut-être déjà, il existe deux types de mémoire que nos ordinateurs utilisent : La mémoire vive (RAM), qui signifie « Random Access Memory », et la mémoire persistante. Vous pouvez imaginer la mémoire RAM comme une immense grille (matrice) stockant des nombres de 8 bits. La mémoire RAM garde la trace des « adresses » dans la matrice de mémoire de n’importe quel nombre de 8 bits pour chaque fois que le CPU en a besoin. Et devinez quoi ? Pour effectuer ces opérations, nous utilisons exactement la même logique de circuit que précédemment. C’est-à-dire que nous utilisons exactement la même logique pour permettre à une entrée donnée d’être stockée dans un « endroit » donné de la mémoire ou pour accéder à n’importe quel élément d’information stocké dans celle-ci.
Je sais que j’effleure à peine la surface du fonctionnement des ordinateurs ici, mais le simple fait d’arriver à comprendre cela m’a pris un certain temps et m’a déjà époustouflé plus de quelques fois. Ce qui me fascine, c’est la puissance des ordinateurs et la place qu’ils occupent dans notre vie quotidienne. C’est pourquoi je pense qu’il est important d’avoir au moins une idée de leur fonctionnement. Aussi, comme toujours, si vous repérez une erreur, s’il vous plaît, faites-le moi savoir.
Je terminerai ce billet avec une vidéo que j’aime beaucoup où Steve Jobs compare les ordinateurs aux vélos ici:
Voici une liste de ressources étonnantes que j’ai trouvées en faisant des recherches pour ce billet:
Les 5 courtes vidéos de Khan Academy sur le fonctionnement des ordinateurs : https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work
La série Crash Course sur l’informatique est absolument incroyable : https://www.youtube.com/watch?v=O5nskjZ_GoI
Une introduction à la logique et aux tables de vérité : https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94
Logique NAND, pour mieux comprendre comment les circuits électriques peuvent effectuer des opérations logiques : https://en.wikipedia.org/wiki/NAND_logic
La page Wikipédia de l’ASCII : https://en.wikipedia.org/wiki/ASCII
La page Wikipédia du code binaire avec un bref historique de l’arithmétique binaire : https://en.wikipedia.org/wiki/Binary_code
Si vous voulez creuser davantage, voici un excellent endroit pour commencer : https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715
Merci d’avoir lu jusqu’ici.