De la logique aux processeurs

Ou "comment passe-t-on des maths à un ordinateur?"

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J’ai commencé (samedi 11 novembre 2017 à 12h05) la rédaction d’un tutoriel au doux nom de « De la logique aux processeurs » et j’ai pour objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Merci !


Donc dans ce moyen tuto, je présente en gros les étapes pour arriver des maths"classiques" a un processeur simple. Comme j’ai dit, mon but est pas d’etre exhaustif, mais de présenter les points clés qui permettent d’arriver au bout. En particulier, je dois probablement faire l’une ou l’autre erreur de math et d’électronique de base, dont je m’excuse d’avance ;)

Je suis a environ 50% de l’écriture et je viens principalement pour avoir des retours sur le fond etpas encore la forme (je sais, mon orthographe est déplorable, mais je compte repasser dessus en temps voulu). En particulier, je me demandais si ca serais pas intéréssant de rajouter une partie "exercices".

D’avance merci pour vos remarques :)

+2 -0

\o/ Un super tuto en perspective ! :)

Pour l’instant, j’ai juste une petite remarque sur la partie « Un peu de physique ». Je vois que tu représente les interrupteurs par une sorte de croix (ou alors ça représente sa course ?). Or, il me semble bien avoir appris qu’ils n’étaient représentés que par un rond et un trait. Mais c’est peut-être parce que je viens de l’électrotechnique (et pas de l’électronique) ?

J’ai hâte de lire la suite. :)

+0 -0

Salut,

Si je comprends bien, tu pars en gros du calcul des propositions, formalisable comme une algèbre de Boole, dont les formules peuvent être exprimées en termes de circuits élémentaires, qui eux-mêmes utilisent des composants électroniques élémentaires, et en fin de compte, on peut synthétiser des circuits de calcul en binaire avec ses portes logiques.

Cette progression me laisse sceptique. On n’est pas passé historiquement "des maths aux ordinateurs". Même si la progression est logique (la logique mathématique justifie effectivement le calcul sur ordinateur), elle est un peu artificielle. Les deux ont évolué conjointement.

Je m’explique : historiquement, le problème initial est celui de la réalisation d’une machine à calculer "universelle", et pas d’une machine à calculer les prédicats. Et si je dis pas de bêtise, cela précède de loin la formalisation de la logique. Les premières machines à calculer étaient mécaniques (Pascaline par exemple au XVIIe il me semble), mais pas programmable. La piste mécanique a été abandonnée à cause de la complexité. Avec le développement important de l’électricité (à la fin du XIXe) et de l’électronique "active" (au début du XXe), on a pu commencer à faire des circuits plus complexe, notamment des amplificateurs (qui permettent de faire des filtres, des additionneurs analogiques, pour la télégraphie sans fil par exemple) et aussi des portes logiques (pour le routage téléphonique par exemple), que ce soit avec des tubes ou des relais. Les semi-conducteurs n’avaient pas été vraiment découverts.

Il y a eu beaucoup de réflexions mathématiques sur la calculabilité (dans les années 30 notamment), et on a réalisé l’importance de la logique pour le calcul à ce moment là. Mais le fait qu’on ait du binaire et de l’algèbre de Boole comme modèle est surtout dû aux composants disponibles. On peut faire des trucs compliqués avec plein d’états (ternaires et plus), mais cela n’a jamais été très intéressant niveau fiabilité et économique, et on reste sur les transistors en tant qu’interrupteur.

Le document suivant (que j’ai survolé) donne un peu d’historique entre le développement de la logique et des composants électroniques : https://project.inria.fr/minf/files/2013/11/Des-tubes-aux-transistors.pdf

En résumé, je pense qu’il est plus logique de répondre à la question "comment calculer avec des composants qui savent faire que des 0 et des 1 ?" avec en bonus "pourquoi cela suffit à calculer presque n’importe quoi ?", plutôt que l’inverse, ce que tu fais actuellement. Et finalement, cela ne vise pas les mêmes personnes (fondements logiques de l’informatique vs. comment ça calcule un ordinateur).

À la réflexion, peut-être que mon avis est un peu hors-sujet. Mais si ton objectif est de parler des fondements logiques de l’informatique, je suis pas sûr que ce tutoriel aille droit au but.

+1 -0

@rezemika: merci. Pour les interupteurs, après avoir essayé un certain nombre de solutions (XCircuit, Oregano, kicad et EDRaw pour ne pas les citer), aucune ne m’ayant satisfait pleinement, je suis revenu à ce que je connaissais, c’est à dire … circuitikz. Peut être que j’ai mal configuré un truc, ceci dit, parce que les interupteurs ne ressemblent pas tout à fait à ça dans la doc. Toujours est-il que si quelqu’un a une idée d’un logiciel de dessins de circuit simple (gratuit et dispo sous Linux ou a dépis sous Windows), je prend :)

@aabu: la réflexion est intéressante, mais me met face à mes propres limites. Autant je suis tout à fait capable d’expliquer comment fonctionne un tube cathodique (j’ai juste "oublié" de le mentionner parce que je trouve que ça fait un peu redite avec les transistors, mais peut être que je me trompe), parce que des électrons qui se déplacent, moi ça me parle, autant je suis littéralement incapable de parler de l’histoire et du développement de la logique les siècles passés, parce que ce que je connais de la logique tient grosso modo en 50 pages (dont une large partie est reproduite ici sous une forme ou une autre). Les interrupteurs (moléculaires, pour le coup) à 3 états ou plus sont également quelque part dans les objectifs de ma thèse, donc c’est quelque chose qui ne m’est pas tout à fait étranger non plus. Bref, et même si c’est très intéressant, c’est pas de ça dont je voulais parler, en fait (je commence ladite partie par "c’est de la culture générale").

Du coup, peut être que j’ai pas clairement énoncé mes objectifs ici et qu’il faudrait que j’énonce ça plus clairement: mon but est de montrer que quelques outils mathématiques "simples" permettent, grâce (ou à cause) du développement de l’électronique moderne, de réaliser des circuits qu’on retrouve dans nos appareils modernes. Peut être que l’approche inverse aurait ceci dit du sens, c’est à dire "partir des circuits en question (l’une ou l’autre porte) et montrer que les mathématiques permettent de formaliser ça" serait intéressante, mais ma (mes) formation(s) m’ont malheureusement appris à traiter les mathématiques comme un outil (c’est très réducteur, ceci dit).

Autrement dit: je ne doute pas une seconde qu’historiquement, mon raisonnement n’est pas le bon, mais je ne me sens pas capable de tenir le raisonnement historique, par manque de connaissances, et par ailleurs ce n’était pas mon but, mais peut être que je ne l’ai alors pas exprimé clairement.

Par ailleurs, ton document est très intéressant :)

@rezemika: merci. Pour les interupteurs, après avoir essayé un certain nombre de solutions (XCircuit, Oregano, kicad et EDRaw pour ne pas les citer), aucune ne m’ayant satisfait pleinement, je suis revenu à ce que je connaissais, c’est à dire … circuitikz. Peut être que j’ai mal configuré un truc, ceci dit, parce que les interupteurs ne ressemblent pas tout à fait à ça dans la doc. Toujours est-il que si quelqu’un a une idée d’un logiciel de dessins de circuit simple (gratuit et dispo sous Linux ou a dépis sous Windows), je prend :)

pierre_24

Il y a le logiciel QElectroch qui permet de faire des schémas électriques (voir ici). Par contre, même si y’a un peu de tout dans les composants, il est plus orienté électrotechnique et industrie. Mais le truc cool, c’est que tu peux quand même créer tes propres symboles si t’es courageux. ;)

+0 -0

mon but est de montrer que quelques outils mathématiques "simples" permettent, grâce (ou à cause) du développement de l’électronique moderne, de réaliser des circuits qu’on retrouve dans nos appareils modernes.

D’accord, du coup c’est plus clair énoncé comme ça.

En gros, tu veux montrer que "il n’y a pas de besoin de mathématiques complexes pour rendre compte de l’apparente complexité des processeurs", c’est ça ?

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.


Tout à fait.

En fait, j’ai principalement écrit le chapitre 3 sur le passage des mathématiques à l’électronique. J’ai été beaucoup plus précis que ce que je ne comptais l’être, mais j’ai découvert plein de choses et s’aurais été dommage de ne pas les partager. Même si c’est de la culture générale.

Par ailleurs, si un physicien pouvait passer dans le coin, faudrait vérifier que je me suis pas emmêlé les pinceaux entre potentiel, sens conventionnel du courant et mouvement d’électrons. Ma formation de chimiste me rattrape, que voulez vous ? :p

+0 -0

Salut,

Quelques points que j’ai pu remarquer ici et là.

La logique des propositions et des prédicats

Dans le premier exemple que tu proposes, il y a la notion de contexte (ou environnement), je pense que tu dois soit jeter cet exemple, soit introduire tout de suite cette notion, d’autant que plus tard tu utilises la notation correspondante.

Le 0 et 1 comme valeurs propositionnelles ne sont peut être pas le meilleur choix, ce n’est qu’un encodage (certes commun) de valeurs de vérité, et en plus tu vas effectivement avoir besoin de la notion de 1 et de 0 plus tard, mais il faudrait peut être préciser un peu plus tout ça. En particulier, je pense que la phrase :

"on travaille avec des variables propositionnelles, dont la valeur ne peut être que "1" (vrai) ou "0" (faux)"

Exprime vraiment l’inverse de ce qu’on voudrait : le vrai et le faux sont la notion de base, 0 et 1 sont des encodages communs.

Assembler des propositions avec les connecteurs

Il faudrait que tu précises ce que tu entends par fondamentaux, parce que vu qu’on peut produire "OU" avec juste "AND" et "NOT" et vice versa, c’est pas si fondamental que ça.

Sur la table de vérité, la dernière puce est bizarre : si tu ne mets pas les lignes en question la table de vérité est quelque part incomplète. Ou alors tu penses à une représentation particulière ?

Sur l’implication, l’exemple n’est pas assez clair pour que je vois si effectivement tes assertions sont correctes (car tordues) peut être qu’avec une propriété mathématique bête sur les entiers ça passerait mieux. En particulier parce que :

À noter que si on a $p \Rightarrow q$ , on peut retrouver

  • (1) sa réciproque, qui s’écrit $q \Rightarrow p$
  • (2) sa contraposée, qui s’écrit $\neg q \Rightarrow \neg p$
  • (3) son inverse, qui s’écrit $\neg p \Rightarrow \neg q$

(Avec un quantifieur, on le voit mieux)

  • (1) Non, par exemple pour tout n, $n > 0 \Rightarrow n+1 > 0$ le sens inverse n’est pas vrai.
  • (2) Oui
  • (3) Non plus, même exemple en prenant n = 0 comme contre exemple.

Pour 1, tu pourras notamment aller voir ta partie sur l’équivalence où tu précises justement que la réciproque n’est pas forcément vraie ;) .

Le symbole ⊢ permet d’indiquer qu’il s’agit d’une tautologie.

Ce symbole sert a différencier les hypothèses (à gauche) de la formule conclusion (à droite). A savoir ici, "en l’absence d’hypothèses autre que la formule elle même". De mémoire, pour la tautologie on utilise plutôt $\vDash Prop$.

Merci pour ton retour :)

La logique des propositions et des prédicats

Dans le premier exemple que tu proposes, il y a la notion de contexte (ou environnement), je pense que tu dois soit jeter cet exemple, soit introduire tout de suite cette notion, d’autant que plus tard tu utilises la notation correspondante.

Pas faux :)

Le 0 et 1 comme valeurs propositionnelles ne sont peut être pas le meilleur choix, ce n’est qu’un encodage (certes commun) de valeurs de vérité, et en plus tu vas effectivement avoir besoin de la notion de 1 et de 0 plus tard, mais il faudrait peut être préciser un peu plus tout ça. En particulier, je pense que la phrase :

"on travaille avec des variables propositionnelles, dont la valeur ne peut être que "1" (vrai) ou "0" (faux)"

Exprime vraiment l’inverse de ce qu’on voudrait : le vrai et le faux sont la notion de base, 0 et 1 sont des encodages communs.

En effet, puisqu’on pourrait très bien utilisé V/F, allumé/éteint, vert/rouge et autre. C’est noté :)

Assembler des propositions avec les connecteurs

Il faudrait que tu précises ce que tu entends par fondamentaux, parce que vu qu’on peut produire "OU" avec juste "AND" et "NOT" et vice versa, c’est pas si fondamental que ça.

Pas faux. Bon, évidement, l’idée que j’ai en tête, c’est de m’en reservir juste après pour l’algèbre de Boole. Bon, je vais réfléchir à un autre mot.

Sur la table de vérité, la dernière puce est bizarre : si tu ne mets pas les lignes en question la table de vérité est quelque part incomplète. Ou alors tu penses à une représentation particulière ?

Le message ici, c’est "on s’en doutait un peu". Mais c’est vrai que c’est pas une table de vérité sinon.

Sur l’implication, l’exemple n’est pas assez clair pour que je vois si effectivement tes assertions sont correctes (car tordues) peut être qu’avec une propriété mathématique bête sur les entiers ça passerait mieux. En particulier parce que :

À noter que si on a $p \Rightarrow q$ , on peut retrouver

  • (1) sa réciproque, qui s’écrit $q \Rightarrow p$
  • (2) sa contraposée, qui s’écrit $\neg q \Rightarrow \neg p$
  • (3) son inverse, qui s’écrit $\neg p \Rightarrow \neg q$

(Avec un quantifieur, on le voit mieux)

  • (1) Non, par exemple pour tout n, $n > 0 \Rightarrow n+1 > 0$ le sens inverse n’est pas vrai.
  • (2) Oui
  • (3) Non plus, même exemple en prenant n = 0 comme contre exemple.

Pour 1, tu pourras notamment aller voir ta partie sur l’équivalence où tu précises justement que la réciproque n’est pas forcément vraie ;) .

Ok, j’ai pas été clair du tout, mais bien entendu, la réciproque d’une implication n’est pas forcément vrai, ici je voulais juste faire un point de vocabulaire à ce moment là. Maintenant, c’est vrai que si je colle un exemple mathématique avec, ça sera peut être plus simple (parce que c’est vrai que la langue française est tordue).

Le symbole ⊢ permet d’indiquer qu’il s’agit d’une tautologie.

Ce symbole sert a différencier les hypothèses (à gauche) de la formule conclusion (à droite). A savoir ici, "en l’absence d’hypothèses autre que la formule elle même". De mémoire, pour la tautologie on utilise plutôt $\vDash Prop$.

Ksass`Peuk

Je te promet que mon prof de math c’est amusé à l’employer tout au long de son cours, même si j’avais déjà vu que c’était plutôt ton symbole qui était utilisé. J’ai aussi constaté que français et anglophones sont pas forcément d’accord, mais comme je m’étais déjà fait la réflexion, je vais changer ça :)

+0 -0

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.


J’AI FINI!!

Y’a plus qu’à ce que je trouve le courage d’une relecture consciencieuse, mais c’est bientôt pour la validation :)

+0 -0

Quelques remarques générales :

L’introduction peut je pense être améliorée selon deux axes :

  • Présenter les objectifs : fournir une meilleure raison d’être pour ce tutoriel que "J’aimerai aujourd’hui vous partager une partie des cours de mathématiques appliqués que j’ai reçu". A quelles questions essaye-t-on de répondre ? Non seulement ça donnera plus envie au lecteur mais, surtout, ça l’aidera à comprendre la logique derrière la démarche et donc à mieux assimiler le contenu.
  • Indiquer le cadre : pré-requis, ce qui est abordé, ce qui ne l’est pas, ce que tu fais en partie dans la balise d’information.

Je peux essayer de proposer quelque chose mais il me semble intéressant que tu tentes aussi. :)

Les deux premières parties pourraient faire l’objet d’un (voire deux) tutoriel(s) à part. Ça rentre dans l’esprit "avoir des building blocks sur ZdS pour nos contenus".

Merci.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte