First steps de la prog

Bonjour à tous,

Je me tourne vers vous car j’ai du mal à trouver mes réponses.

J’ai appris la programmation C mais en bon débutant autodidacte, j’ai une question qui me dépasse.

Les concepts de binarité, chaine, pointeurs, les if, les genres, etc… je pense les avoir, dans leur globalité, saisis.

Mais là où je bloque, c’est sur la manière de faire comprendre à un ordinateur qu’on veut par exemple un if ou un case.
Quelles informations sont envoyées (traduites en binaire sûrement ?) pour que l’ordinateur sache précisément ce qu’il doit faire ?

Et en sens inverse : comment les programmeurs ont réussi, à partir d’un circuit imprimé et de puces, à y intégrer ces notions ? ( comment dire en binaire qu’on veut un if???)

Je ne parviens pas à visualiser.

Ma curiosité vous attend !

A bientôt

LeHibou

Salut,

Tu devrais te procurer un petit cours d’assembleur. Alors avec un peu d’imagination tu comprendras mieux le mot “compilation” :slightly_smiling:

+1 Pour te donner une petite idée C --> Assembleur = Binaire
Toutes tes instruction C sont traduites en 1 ou plusieurs instruction Assembleur et ensuite en Binaire. Quand tu compile ton code C il y a une option pour obtenir le code Assembleur.

Quand j’écris Assembleur = Binaire, je veut dire que pour chaque instruction Assembleur correspond une séquence binaire :stuck_out_tongue: donc a partir d’une séquence binaire tu peut normalement le retransformer en Assembleur. Mais remonter en language C n’est pas évident car le compilateur a fait un travail d’optimisation et réarrangement de ton code.

En assembleur il n’existe que le saut conditionnel donc le if. Avec le saut inconditionnel (goto) tu peut créer une boucle while. Avec le if et une boucle while tu peut produire toutes les structures de contrôles existantes.

Pour les fonctions c’est un peu plus compliquée.

Ensuite l’assembleur il faut comprendre que c’est du langage binaire, l’assembleur ne fait que remplacer chaque instruction par leur équivalent binaire, il n’y a aucune optimisation.

Dans l’autre sens pour partir du hardware pour aller au software, je te conseille de regarder ce qu’est une bascule et à quoi sert un transistor (il permet d’avoir une idée de comment un fait une condition).

Je ne trouve pas que l’assembleur explique le fonctionnement … C’est comme dire c’est le subjonctif car il y a un accent circonflexe !
L’algèbre booléen est le point de départ, ensuite ce n’est pas très compliqué de trouver les schémas basé souvent sur des nand ou nor qui expliquent l’addition et la soustraction de registres.
Ensuite une fois que l’on a l’outil addition, soustraction de registres on ajoute la fonction chargement (load), et on a les outils de base pour comprendre l’assembleur.
Ça me rappelle le débat avec fran.b sur la méconnaissance des bases de l’informatique des “nouveaux arrivants”

[quote=“debianhadic”]Je ne trouve pas que l’assembleur explique le fonctionnement … C’est comme dire c’est le subjonctif car il y a un accent circonflexe !
L’algèbre booléen est le point de départ, ensuite ce n’est pas très compliqué de trouver les schémas basé souvent sur des nand ou nor qui expliquent l’addition et la soustraction de registres.
Ensuite une fois que l’on a l’outil addition, soustraction de registres on ajoute la fonction chargement (load), et on a les outils de base pour comprendre l’assembleur.
Ça me rappelle le débat avec fran.b sur la méconnaissance des bases de l’informatique des “nouveaux arrivants”[/quote]
Il parlait des deux approches (descendre de niveau en partant de langages de haut niveau et hardware pour monter vers le software).

Il me semble important pour la première approche de savoir que le switch n’est qu’un ensemble de if (donc de saut conditionnel) et qu’au final toute structure de contrôle peut être écrite sous forme de while et que le while c’est un saut conditionnel plus en saut inconditionnel. Je répondais à l’une des questions.

De plus je trouve l’assembleur utile car il permet de voir les fonctions câblées dans le processeur (addition, soustraction, saut inconditionnel, divers sauts conditionnels, chargement à partir de la mémoire, chargement dans la mémoire (on parle de mémoire vive là), décalages binaires, déplacement d’une valeur d’un registre à l’autre, opération sur les flottants, etc). C’est un bon moyen de visualiser que quelque soit le langage que l’on utilise, on utilise en définitive un nombre limité de fonctions CPU (sans compter les instructions spécifiques comme SSE{1,2,3,4}, 3DNow!,…).

Je répondais à ça :

C’est encore plus bas niveau que l’assembleur, qui a été pour moi le langage haut niveau pendant des années sur des machines équipées de Z80 avec CP/M :wink:

Bonjour à tous et merci,

Je vois que le travail qu’il reste à faire est… monstrueux.

Mais pas le choix, je ne peux pas utiliser quelque chose si je ne sais pas comment cela fonctionne.
Je me suis déjà mis à l’assembleur, je verrai bien.

Merci mille fois,

A bientôt !

LeHibou

[quote=“LeHibou”]Mais pas le choix, je ne peux pas utiliser quelque chose si je ne sais pas comment cela fonctionne.
Je me suis déjà mis à l’assembleur, je verrai bien.[/quote]
Commence par acheter des bouquins de physique alors.

Prend un bouquin d’électronique alors … tu y trouveras surement la théorie physique et l’applicaiton sur des circuits simples. Les “portes logique” AND, OR, NAND, NOR, … ça me rappel le lycée tout ça :005

Ces bouquins sont extrêmement succins sur la physique des matèriaux ainsi (et surtout) sur la mécanique quantique qui s’applique aux électrons.

Je suis bien d’accord sur la faible épaisseur de l’explication mais en général ça suffit pour comprendre le principe de base, il faut pas être docteur en physique quantique pour comprendre commetn marche un CPU non plus :033

Faut savoir quand on s’arrête quand on dis « je ne peux pas utiliser quelque chose sans comprendre comment ça marche » toute connaissance s’appuie sur pleins d’autres.

Moi je m’arrête à la mort…
Peut-être as-tu trouvé plus névrosé que toi :wink:

[quote=“LeHibou”]Moi je m’arrête à la mort…
Peut-être as-tu trouvé plus névrosé que toi :wink: [/quote]
:005 :005 :005
Comme si c’était possible … :mrgreen: