Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

+2
chocolat
prométhéus
6 participants

Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par prométhéus Lun 25 Juil 2016 - 21:43

J'aimerais vous présenter ce bijou pédagogique extraordinaire, en provenance de deux professeurs du MIT.
Le projet se nomme nand2tetris, une reconstruction de l'ordinateur de son cœur (un ensemble de porte logique ) au système d'exploitation pouvant faire tourner un petit jeu, un ordinateur certes aux capacités modestes, en cela on serait plus proche de l'architecture d'une game boy, il est possible d'ultérieurement faire son propre hardware et d'implémenter à son goût le software.

Le cours se compose de chapitres et de slide , un ensemble d'outils est à télécharger (programme java) pour faciliter le travail et tester son travail.

Chapitre 1: Logique booléenne
Chapitre 2: Arithmétique booléenne (additionneur, multiplexeur,démultiplexeur, ALU)
Chapitre 3: Logique séquentielle (bit, registre, Ram, ROM, compteur de programmes
Chapitre 4: Langage Machine
Chapitre 5: Mémoire ( mappage ), CPU , ordinateur complet
Chapitre 6: Réalisation de l'assembleur
Chapitre 7: Langage intermédiaire à machine virtuelle, traducteur (langage assembleur -> langage intermédiaire)
Chapitre 8: idem (se concentre sur la notion de sous programme )
Chapitre 9: Prise en main du Java.like nommé Jack
Chapitre 10: Réalisation du compilateur de jack
Chapitre 11: idem
Chapitre 12: Creation de l'OS


http://www.nand2tetris.org/





prométhéus
prométhéus

Messages : 361
Date d'inscription : 26/04/2015
Age : 43
Localisation : troisième planète du système solaire

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par prométhéus Mer 3 Aoû 2016 - 12:58

Pour les gens qui serait intéressés par cette aventure, mais qui sont un peu effrayés ...
Ce fil peut tout à fait servir d'aide pour ceux qui seraient attirés par cette aventure mais bloqueraient à certaines parties.

Pour ma part je suis actuellement dans l'élaboration du compilateur de jack.
J'ai utilisé l'éditeur vim, ce qui m'a posé le plus de problème pour le moment est le câblage du CPU, et l'implémentation de la structure programme sous-programme dans le traducteur machine virtuelle -> assembleur.
Je me suis beaucoup servi des expressions régulières, ce qui a beaucoup simplifié les choses, j'ai codé en python 2.
Je me suis parfois dangereusement écarté des recommandations .

C'est vraiment sympa, on voit de visu cette notion d'informatique construit comme un oignon.
prométhéus
prométhéus

Messages : 361
Date d'inscription : 26/04/2015
Age : 43
Localisation : troisième planète du système solaire

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par chocolat Sam 6 Aoû 2016 - 21:39

Merci pour le lien! Smile
chocolat
chocolat

Messages : 144
Date d'inscription : 22/01/2014
Localisation : IDF

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Stauk Sam 6 Aoû 2016 - 21:56

Je connais depuis un moment ce cours (j'avais même acheté le bouquin, que j'ai perdu depuis), mais je n'ai jamais eu le courage de tout faire. ( ou même en fait, de faire quoi que ce soit ...)

Ca doit demander un investissement assez conséquent. Tu partages ce que tu fais (sur un blog ou autre) ?
Stauk
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par prométhéus Mar 6 Sep 2016 - 22:30

Stauk a écrit:
Ca doit demander un investissement assez conséquent.
C'est l'impression que cela m'en a donné quand j'ai balayé les objectifs, mais c'est une aide savamment dosée, ni trop peu pour ne pas être perdu, ni trop et finalement ne faire que du recopiage :/ , les outils à disposition aide aussi beaucoup.

(Bon faudrait que je m'y remette   Mad   )

Stauk a écrit:
Tu partages ce que tu fais (sur un blog ou autre) ?
Je le mettrais sur mon blog, quand je créerais un blog.
Bon sinon je peux partager mon "travail", bien que je ne pense pas que cela soit particulièrement une référence.
prométhéus
prométhéus

Messages : 361
Date d'inscription : 26/04/2015
Age : 43
Localisation : troisième planète du système solaire

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Stauk Mar 6 Sep 2016 - 22:45

prométhéus a écrit:
Bon sinon je peux partager mon "travail", bien que je ne pense pas que cela soit particulièrement une référence.

Ben si c'est ici, ça fera de mal à personne. Si ça intéresse pas, les gens regarderont pas. Et puis si ça intéresse, ça fait un truc à suivre en temps réel, avec un peu plus d'émotion que si c'était ailleurs.
Stauk
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Pango Jeu 6 Juil 2017 - 21:45

Je remonte le topique, un peu ancien mais toujours d'actualité !
Je me suis inscrit, se sera mon premier MOOC !
Merci énormément pour le lien, c'est exactement ce que je cherchais sans complétement y croire... Merci encore ! Yahoo !
Pango
Pango

Messages : 384
Date d'inscription : 10/04/2017
Age : 35
Localisation : Châtellerault, là où les rêves........ viennent pour crever

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Jora Sam 16 Sep 2017 - 16:11

Merci pour le lien! Very Happy Je n'aurais pas le temps de faire ça pour l'instant, mais ça m'intéresse complètement. Vous en êtes où du coup depuis le premier post les uns, les autres?
Jora
Jora

Messages : 82
Date d'inscription : 13/09/2017

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par prométhéus Mer 20 Sep 2017 - 22:52

Pango a écrit:Je remonte le topique, un peu ancien mais toujours d'actualité !
Je me suis inscrit, se sera mon premier MOOC !
Merci énormément pour le lien, c'est exactement ce que je cherchais sans complétement y croire... Merci encore ! Yahoo !

Difficile de ne pas vouloir faire partager, ce superbe projet, bon l'ensemble est bien rôdé, la difficulté augmente crescendo et l'aide apportée par les chapitres du livre cesse au chapitre 10, y a comme un goulot d'engorgement, donc au 3/4 du chemin soit tu t'arrêtes brutalement soit tu achètes le livre.

Mais en cherchant un peu mieux sur internet, on trouve assez facilement le reste des chapitres ...

Jora a écrit:
Merci pour le lien! Je n'aurais pas le temps de faire ça pour l'instant, mais ça m'intéresse complètement. Vous en êtes où du coup depuis le premier post les uns, les autres?


J'avais un peu laissé tombé, j'ai récemment tout refait, en faisant un code plus clair et plus court.
Je suis actuellement au chapitre 10, la mission est de transformer le code écrit en jack vers un code XML structuré, la tâche se découpe en deux parties, d'abord
discriminer les mots dans le texte (tokeniser) puis une phase de hiérarchisation (le parser) et donc rendre un code écrit en XML, qui sera dans le chapitre suivant traduit dans un langage compréhensible par la machine virtuelle (qui a été créée au chapitre 8 )

Je suis précisément en train de faire le parser.
Le tokeniser est lui fini.

Le programme hello.jack

Code:

class Main
{
  function void main()
  {

    /*commentaire à supprimer!

    */
    do Output.printString("Hello World!"); // test3
    //test 4
    do Output.println();
    return;
  }
/* rab de commentaire inutile
*/
}

Le tokeniser sort un truc comme çà:

Code:

<tokens>
<KEYWORD> class </KEYWORD>
<IDENTIFIER> Main </IDENTIFIER>
<SYMBOL> { </SYMBOL>
<KEYWORD> function </KEYWORD>
<KEYWORD> void </KEYWORD>
<IDENTIFIER> main </IDENTIFIER>
<SYMBOL> ( </SYMBOL>
<SYMBOL> ) </SYMBOL>
<SYMBOL> { </SYMBOL>
<KEYWORD> do </KEYWORD>
<IDENTIFIER> Output </IDENTIFIER>
<SYMBOL> . </SYMBOL>
<IDENTIFIER> printString </IDENTIFIER>
<SYMBOL> ( </SYMBOL>
<STRING_CONST> Hello World! </STRING_CONST>
<SYMBOL> ) </SYMBOL>
<SYMBOL> ; </SYMBOL>
<KEYWORD> do </KEYWORD>
<IDENTIFIER> Output </IDENTIFIER>
<SYMBOL> . </SYMBOL>
<IDENTIFIER> println </IDENTIFIER>
<SYMBOL> ( </SYMBOL>
<SYMBOL> ) </SYMBOL>
<SYMBOL> ; </SYMBOL>
<KEYWORD> return </KEYWORD>
<SYMBOL> ; </SYMBOL>
<SYMBOL> } </SYMBOL>
<SYMBOL> } </SYMBOL>
</tokens>





Dernière édition par prométhéus le Mar 26 Sep 2017 - 18:22, édité 2 fois
prométhéus
prométhéus

Messages : 361
Date d'inscription : 26/04/2015
Age : 43
Localisation : troisième planète du système solaire

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Jora Dim 24 Sep 2017 - 1:33

Le Jack m'est familier à la vue, ça me rappel le Java (j'avais débuté un MOOC, sans réussir à le finir). Par contre le tokeniser... c'est illisible pour moi pour l'instant.
Jora
Jora

Messages : 82
Date d'inscription : 13/09/2017

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Fab. Fabrice Dim 24 Sep 2017 - 16:23

Enlève tout ce qui est entre <> et tu comprendra qu'on a juste encadré les "morceaux" de langage classique de token ( balises si tu préfère) mais l'utilisateur du code tokenisé n'est pas destiné à être lu par l'humain, il va être interprété et/ou transformé par un programme
Fab. Fabrice
Fab. Fabrice

Messages : 1328
Date d'inscription : 13/06/2015
Age : 55
Localisation : Entre Moules-Frites et Huitres-Melon

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Pango Lun 25 Sep 2017 - 17:44

Il m'a fallu un petit temps d'adaptation pour bien me mettre dans la logique requise ensuite c'est passé très vite.
Je conseils les chapitres 1 à 3 à tous les curieux appréciant les problèmes de logiques en général.

Cet assemblage d'un seul type de porte logique en un tout aussi complexe et cohérent me donne le vertige...
Je vois mon ordinateur différemment, maintenant, je devrais lui vouer un culte. Se prosterne

J'ai laissé de côté un petit moment pour pouvoir apprendre à programmer en Python et ainsi réaliser l'assembleur (chapitre 6) je devrais bientôt mis remettre, j'ai hâte.


Dernière édition par Pango le Mer 8 Jan 2020 - 19:38, édité 1 fois
Pango
Pango

Messages : 384
Date d'inscription : 10/04/2017
Age : 35
Localisation : Châtellerault, là où les rêves........ viennent pour crever

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par prométhéus Lun 25 Sep 2017 - 21:54

Jora a écrit:Le Jack m'est familier à la vue, ça me rappel le Java (j'avais débuté un MOOC, sans réussir à le finir). Par contre le tokeniser... c'est illisible pour moi pour l'instant.
Comme l'a très bien expliqué Fab.fabrice, ce n'est qu'un intermédiaire,
Ces balises servent à dire : ce mot est de tel type .
ainsi si l'on prenait la phrase : Le chat joue avec la pelote de laine
cela donnerait un truc comme çà:

Code:

<article> le </article>
<nom> chat </nom>
<verbe> joue </verbe>
<preposition> avec </preposition>
<article> la </article>
<nom> pelote </nom>
<preposition> de </preposition>
<nom> laine </nom>


@pango
Oui un changement de perception au moment de traverser la couche d'abstraction.
Une totale impossibilité d'apprécier l'ensemble en se plaçant dans les couches inférieures, car l'ensemble semble à ce niveau n'être qu'une étendue informe et illimitée, voyage grisant et déroutant.

Sinon pour l'écriture de l'assembleur, la bibliothèque re m'a beaucoup simplifié la vie, sans elle, cela aurait été particulièrement fastidieux.

Pour python, il existe cette incontournable ressource:
C'est un noob to pro

http://www.diveintopython.net/
prométhéus
prométhéus

Messages : 361
Date d'inscription : 26/04/2015
Age : 43
Localisation : troisième planète du système solaire

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Jora Mar 26 Sep 2017 - 0:41

Merci Fab.Fabrice et Prométhéus, c'est plus clair maintenant!
Jora
Jora

Messages : 82
Date d'inscription : 13/09/2017

Revenir en haut Aller en bas

Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ... Empty Re: Vous voulez en savoir plus sur le fonctionnement d'un ordinateur ...

Message par Fab. Fabrice Mar 26 Sep 2017 - 19:58

Les passions se partagent aisément Wink
Fab. Fabrice
Fab. Fabrice

Messages : 1328
Date d'inscription : 13/06/2015
Age : 55
Localisation : Entre Moules-Frites et Huitres-Melon

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum