# First steps de la prog

**URL:** <https://www.debian-fr.org/t/first-steps-de-la-prog/28802>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802 "2016-02-20T23:33:44Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![LeHibou](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/41988e/32.png) [@LeHibou](https://www.debian-fr.org/u/LeHibou)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/1 "2016-02-20T23:33:44Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/2 "2016-02-20T23:33:45Z")

</div>

Salut,

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

---

<div class="post-metadata">

**Author:** ![Mimoza](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mimoza/32/3858_2.png) [@Mimoza](https://www.debian-fr.org/u/Mimoza)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/3 "2016-02-20T23:33:52Z")

</div>

+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 😛 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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/4 "2016-02-20T23:33:53Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/5 "2016-02-20T23:33:53Z")

</div>

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”

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:33 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/6 "2016-02-20T23:33:56Z")

</div>

[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!,…).

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 20, 2016, 11:34 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/7 "2016-02-20T23:34:07Z")

</div>

Je répondais à ça :

> [@LeHibou](#):
>
> 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.

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 😉

---

<div class="post-metadata">

**Author:** ![LeHibou](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/41988e/32.png) [@LeHibou](https://www.debian-fr.org/u/LeHibou)\
**Post date:** [Février 20, 2016, 11:35 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/8 "2016-02-20T23:35:03Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:35 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/9 "2016-02-20T23:35:04Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![Mimoza](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mimoza/32/3858_2.png) [@Mimoza](https://www.debian-fr.org/u/Mimoza)\
**Post date:** [Février 20, 2016, 11:35 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/10 "2016-02-20T23:35:38Z")

</div>

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](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif "chaud")

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:35 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/11 "2016-02-20T23:35:39Z")

</div>

> [@Mimoza](#):
>
> Prend un bouquin d’électronique alors … tu y trouveras surement la théorie physique et l’applicaiton sur des circuits simples.

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.

---

<div class="post-metadata">

**Author:** ![Mimoza](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mimoza/32/3858_2.png) [@Mimoza](https://www.debian-fr.org/u/Mimoza)\
**Post date:** [Février 20, 2016, 11:35 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/12 "2016-02-20T23:35:40Z")

</div>

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](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:36 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/13 "2016-02-20T23:36:24Z")

</div>

> [@Mimoza](#):
>
> 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](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

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.

---

<div class="post-metadata">

**Author:** ![LeHibou](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/41988e/32.png) [@LeHibou](https://www.debian-fr.org/u/LeHibou)\
**Post date:** [Février 20, 2016, 11:40 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/14 "2016-02-20T23:40:38Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:40 UTC](https://www.debian-fr.org/t/first-steps-de-la-prog/28802/15 "2016-02-20T23:40:39Z")

</div>

[quote=«&nbsp;LeHibou&nbsp;»]Moi je m’arrête à la mort…  
Peut-être as-tu trouvé plus névrosé que toi 😉 [/quote]  
 ![:005](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif "chaud") ![:005](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif "chaud") ![:005](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif "chaud")  
Comme si c’était possible … ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")
