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

Voir le sujet précédent Voir le sujet suivant Aller en bas

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

Message par prométhéus le Lun 25 Juil - 19: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/





avatar
prométhéus
Rayures apprivoisées
Rayures apprivoisées

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

Revenir en haut Aller en bas

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

Message par prométhéus le Mer 3 Aoû - 10: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.
avatar
prométhéus
Rayures apprivoisées
Rayures apprivoisées

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

Revenir en haut Aller en bas

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

Message par chocolat le Sam 6 Aoû - 19:39

Merci pour le lien! Smile
avatar
chocolat
Rayures apparentes
Rayures apparentes

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

Revenir en haut Aller en bas

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

Message par Stauk le Sam 6 Aoû - 19: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) ?
avatar
Stauk
Rayures flamboyantes
Rayures flamboyantes

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

http://www.staukwood.com/

Revenir en haut Aller en bas

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

Message par prométhéus le Mar 6 Sep - 20: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.
avatar
prométhéus
Rayures apprivoisées
Rayures apprivoisées

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

Revenir en haut Aller en bas

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

Message par Stauk le Mar 6 Sep - 20: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.
avatar
Stauk
Rayures flamboyantes
Rayures flamboyantes

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

http://www.staukwood.com/

Revenir en haut Aller en bas

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

Message par Pango le Jeu 6 Juil - 19: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 !
avatar
Pango
Rayures toutes fraîches
Rayures toutes fraîches

Messages : 5
Date d'inscription : 10/04/2017
Age : 28
Localisation : Châtellerault

Revenir en haut Aller en bas

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

Message par Jora le Sam 16 Sep - 14: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?
avatar
Jora
Rayures apparentes
Rayures apparentes

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

Revenir en haut Aller en bas

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

Message par prométhéus le Mer 20 Sep - 20: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 - 16:22, édité 2 fois
avatar
prométhéus
Rayures apprivoisées
Rayures apprivoisées

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

Revenir en haut Aller en bas

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

Message par Jora le Sam 23 Sep - 23: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.
avatar
Jora
Rayures apparentes
Rayures apparentes

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

Revenir en haut Aller en bas

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

Message par Fab. Fabrice le Dim 24 Sep - 14: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
avatar
Fab. Fabrice
Rayures indélébiles
Rayures indélébiles

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

Revenir en haut Aller en bas

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

Message par Pango le Lun 25 Sep - 15:44

Il ma fallu un petit temps d'adaptation pour bien me mettre dans la logique requise ensuite c'est passer 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 devrai lui voué 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.
avatar
Pango
Rayures toutes fraîches
Rayures toutes fraîches

Messages : 5
Date d'inscription : 10/04/2017
Age : 28
Localisation : Châtellerault

Revenir en haut Aller en bas

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

Message par prométhéus le Lun 25 Sep - 19: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/
avatar
prométhéus
Rayures apprivoisées
Rayures apprivoisées

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

Revenir en haut Aller en bas

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

Message par Jora le Lun 25 Sep - 22:41

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

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

Revenir en haut Aller en bas

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

Message par Fab. Fabrice le Mar 26 Sep - 17:58

Les passions se partagent aisément Wink
avatar
Fab. Fabrice
Rayures indélébiles
Rayures indélébiles

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

Revenir en haut Aller en bas

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

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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