Journal L'oeuf ou la poule ?

Posté par  .
Étiquettes : aucune
0
16
fév.
2005
Petite question philosophique ( enfin presque ) . Je suis sur que certains Venerables ont connus cette epoque ( koikeu )

Imaginons un informaticien parfait ( Il connais a fond sa machine , tous les langages de prog , et code a une vitesse infinie . )

Cet informaticien est enferme dans une pieces avec un ordinateur .
Le DD de l'ordinateur est vierge , l'informaticien ne dispose que de support vierge ( Touts supports SAUF CARTES PERFOREES et assimile )

L'informaticien veut uttilise son ordinateur , pour cela il lui faut un OS , des logiciels etc ...

Que doit il ecrire en premier ?
et comment sachant qu'il n'y a strictement rien sur son ordinateur ?


P.S. 1 : je n'ai aucune idee de la reponse c'est une vraie question
  • # Beh euh...

    Posté par  (site web personnel) . Évalué à 2.

    Que doit il ecrire en premier ?
    et comment sachant qu'il n'y a strictement rien sur son ordinateur ?

    [...]
    Le DD de l'ordinateur est vierge , l'informaticien ne dispose que de support vierge
    Beh si ya que ca pour l'aider, jcrois que notre ami informaticien est dans la panade
  • # heu ...

    Posté par  (site web personnel) . Évalué à 10.

    Sur une vitre ou un truc qui peut etre vu de l'exterieur :

    SOS
    • [^] # Re: heu ...

      Posté par  . Évalué à 10.

      Dans ce cas il faut plutôt écrire 202...
  • # Hmmm

    Posté par  (Mastodon) . Évalué à 5.

    La question est: comment écrit-il sur son disque dur ? s'il a des pouvoirs mentaux qui font qu'il peut écrire sur le disque sans avoir à booter l'ordinateur, il peut peut-être s'en sortir, sinon ça va être dûr.

    Mais je pense que c'est un détail technique qui n'est pas important dans ton expérience de pensée.

    En fait, même si le disque dur est vierge, il y a déjà un "logiciel" dans l'ordinateur: le processeur. C'est suffisant, puisque le processeur fournit un langage binaire, qui permet à l'informaticien de programmer un compilateur de son langage favori vers le langage binaire, et à partir de là de coder autre chose. Pour commencer, il va programmer dans le MBR (secteur de démarrage du disque), qui sera exécuté par le BIOS lors de l'allumage du PC... rassure moi, y'a un BIOS ?
    • [^] # Re: Hmmm

      Posté par  . Évalué à 3.

      En fait ma question est a plusieurs niveaux

      -L'O.S. ou le Compilateur ( pour faire un OS il faut un compilateur mais un compilateur compile pour un OS )
      -Et vos tetes etrange voir panique Laisse supposer que finalement pour pouvoir faire fonctionner un ordinateur il faut absolument avoir acces a un autre ordi qui a un programme capable d'ecrire du binaire sur le MBREUH d'un disque . Le serpent se mord t'il la queue ?
      Le PC est normal et a un BIOS est-ce suffisant pour ecrie sur un disque ?
      Bref qu'est ce qui ecrit le prog qui ecrit sur disque ?
      (C'est la ou la carte perforee pourrais etre utile car humainement editable ... )
      • [^] # Re: Hmmm

        Posté par  (Mastodon) . Évalué à 10.

        (attention, je vais essayer d'expliquer un truc en étant théorique, c'est pas gagné)

        En fait, un ordinateur fonctionnel le plus simple possible est une machine de Turing, c'est à dire un ruban de papier (le "disque dur") et une tête de lecture (le "processeur") qui lit une lettre sur le ruban, et fait quelque chose de prédéterminé en fonction de la lettre qu'elle a lue, et de l'état dans lequel elle se trouve. Nos ordinateurs actuels sont des machines de Turing, mais de conception assez compliquée, et donc cet aspect n'est pas très visible.

        On pourrait donc, pour simplifier, poser ta question dans le cas des machines de Turing. Si j'ai un stylo, une bande de papier assez longue, et une tête de lecture qui marche, alors il suffit que j'écrive des instructions sur le papier dans un langage compréhensible par la tête de lecture. L'élément important ici, c'est que je dois avoir une tête de lecture qui sache interpréter mes instructions. Si je n'ai pas de tête de lecture (et que je ne peux pas en fabriquer une), mon papier et mon stylo ne servent à rien.

        Maintenant, revenons à notre ordinateur traditionnel. Si j'ai une mémoire de stockage, un moyen d'écrire dessus, et un processeur, alors il suffit que j'écrive dans la mémoire des instructions dans un langage compréhensible par le processeur. Mais là encore, je dois avoir un processeur en état de fonctionnement.

        Le problème de l'oeuf ou la poule tel que tu le vois, c'est "comment est apparu le premier compilateur, alors qu'on n'avait pas de compilateur pour l'écrire ?" Le premier "compilateur" (en fait un interpréteur) a été construit matériellement, pas programmé. La tête de lecture, ou le processeur, est un interpréteur de code. Et donc, avant de pouvoir écrire un programme "logiciel", on doit d'abord construire un interpréteur "matériel".

        Une fois ce premier pas effectué, on peut écrire un logiciel en "langage machine" destiné à l'interpréteur matériel. Ce logiciel sera probablement un "compilateur", parce que le langage machine est assez imbitable, donc par exemple on va coder un compilateur du C vers le langage machine. On aura:

        [Interpréteur matériel, processeur] <- [langage machine] <- [compilateur] <- [langage C]

        Le petit "déclic" pour comprendre comment ça marche est de se rendre compte que du point de vue logique, il n'y a pas de différence entre un interpréteur matériel et un interpréteur logiciel. Pour les gens qui sont à droite d'une flèche "<-", ce qu'il y a à gauche est indifférent, on est confronté à un langage, mais on ne sait pas si le truc qui comprend ce langage est construit avec du matériel ou pas. Par conséquent, seule la brique la plus à gauche de la chaine a besoin d'être matérielle.

        Voila voila, c'est compréhensible ?
        • [^] # Re: Hmmm

          Posté par  (site web personnel) . Évalué à 2.

          Donc finalement, a la question "qui de l'OS ou du compilateur est la en premier ?", tu reponds le compilateur parce que le processeur est un compilateur.

          En fait, je suis d'accord avec toi que tout repose sur le langage du processeur mais je verrai plutot celui-ci comme un systeme d'exploitation. Le processeur lit des donnees (un programme), deplace des donnes de la RAM vers les registres, des registres vers les bus materiels, etc, etc. Tout ca ressemble a un OS.

          En revanche, pour ce faire, il a fallu ecrire un interpreteur pour le langage machine, qui tourne dans le processeur. Ca ressemble encore a un OS.

          En fait, meme si a priori, le compilateur parait indispensable, c'est beaucoup moins util qu'un OS. Le compilateur ne fait que fabriquer des programmes qui pourront s'executer. Son travail peut etre remplace par un cerveau humain. En 85, je faisais de l'assembleur en ecrivant mon code sur une feille de papier, puis en cherchant dans le bouquin de reference du MSX (assebembleur Z80) les valeurs hexadecimales des instructions, puis en les codant sous forme de chaine de caractere dans un programme en basic et en faisant un appel sur l'adresse des chaines de caractere. Dans ce cas, je me passais d'un compilateur, c'est mon cerveau qui faisait le travail. Mais tout ca n'aurait pas pu avoir lieu si je n'avais pas eu un OS, en l'occurence Microsoft MSX Basic.

          Donc pour moi, la reponse est clairement que l'OS etait la avant le compilateur.
          • [^] # Re: Hmmm

            Posté par  (Mastodon) . Évalué à 3.

            «il a fallu ecrire un interpreteur pour le langage machine, qui tourne dans le processeur. Ca ressemble encore a un OS.»

            En fait, un interpréteur définit une machine virtuelle, donc ressemble très très fort à un OS. Je soupçonne que ce que j'appelle interpréteur, tu l'appellerais OS, et qu'on pense à la même chose :)

            Si je devais essayer de résumer, je dirais qu'un ordinateur c'est un empilement de machines virtuelles, dont seule celle du bas a besoin d'être fabriquée avec du matériel. L'OS étant une machine virtuelle parmis d'autres, qui fournit une abstraction par rapport à ce qu'il y a en dessous.
            • [^] # Re: Hmmm

              Posté par  . Évalué à -1.

              Je soupçonne que ce que j'appelle interpréteur, tu l'appellerais OS, et qu'on pense à la même chose :)


              \o/ JAYCE !!!
      • [^] # Re: Hmmm

        Posté par  (Mastodon) . Évalué à 3.

        Pour répondre à ta question "qu'est-ce qui écrit le prog sur le disque", en fait on peut suivre le même raisonnement. C'est forcément un "logiciel" qui écrit le prog sur le disque.

        En admettant que ton informaticien ait du matériel à sa disposition, s'il n'a vraiment pas d'autre solution il devra concevoir un processeur matériel dont le rôle sera d'écrire les données sur le disque. Comme je le disais au dessus, du point de vue logique, peu importe que ce soit programmé avec des circuits électroniques ou avec des bits dans une mémoire, c'est pareil. On peut donc remplacer:

        [ matériel ] <- [compilateur] <- [ logiciel qui dit comment écrire les données ]

        par un:

        [ matériel qui dit comment écrire les données ]

        Mais ça va être long et compliqué à faire, on a bien besoin d'avoir un informaticien "parfait" pour faire ce genre de choses :)

        (si ça t'intéresse, je te conseille "l'architecture des ordinateurs" d'andrew tanenbaum, qui explique bien le découpage en "couches" logiques d'un ordinateur.)
    • [^] # Re: Hmmm

      Posté par  . Évalué à 2.

      Le probleme c'est que vu que l'ordinateur est completement vide, il n'a aucun soft lui permettant d'ecrire ne serait-ce qu'un caractere en RAM.
  • # boot

    Posté par  (site web personnel) . Évalué à 6.

    Soit il y a absolument rien sur son ordi, et dans ce cas, ton informaticien il appuie sur le bouton ON/OFF et rien ne se passe de plus intéressant que quand tu appuies sur le bouton ON/OFF de ta cafetière.

    Soit il y a au moins un bootstrap loader en ROM, qui donne la main au clavier (car c'est ce que tu supposes, la seule entrée possible de ton ordi est le clavier). Et dans ce cas ton informaticien s'en fout complètement qu'il y ait ensuite un disque dur ou pas, des cd vierges ou pas, il code en assembleur en RAM et n'a pas besoin d'OS ni de logiciels vu que c'est un super-informaticien.
    • [^] # Re: boot

      Posté par  (site web personnel) . Évalué à 6.

      Ah mais si, quand j'appuie sur le bouton ON/OFF de ma cafetière, ça fait du café, et les PC qui font du café, c'est pas courant, même avec un OS dessus ^^

      Quoi ? Ah oui, --->[]
      • [^] # Re: boot

        Posté par  . Évalué à -2.

        ben si ! java a une tasse a cafe => les pc font du cafe

        /me regarde les highscores
  • # un driver pour sa carte reseau

    Posté par  . Évalué à 7.

    j'ai entendu dire que les gens qui portaient un OS vers une nouvelle archi commencaient par un noyo et le support reseau.

    ca permet de pouvoir booter sur le reseau et travailler a distance sur la nouvelle archi sans avoir besoin d'avoir des driver video/clavier/hdd/etc.
  • # boot time

    Posté par  . Évalué à 10.

    Si c'est uniquement un informaticien il est mort.
    Sinon, il ouvre l'ordi, repere le composant EEPROM ou flash contenant le code apellé par le proc sur reception du signal RESET. Il arrache ce composant, et en appliquant des niveaux electrique sur les pattes de la bete (adresse et donné, il doit y arriver avec l'alim du PC +5V et +12V) il commence a coder un basic input output system (bios) qui gere le clavier et l'ecran de sa machine (au minimum). Il y code un VI de base, un editeur Hex de disque dur ou de floppy puis roule.
    Ensuite il commence a coder un MBR, un Lilo, un kernel, un X... et ainsi de suite.
    Prevoit pas mal de pizza et de coca ainsi q'une prise reseau internet pour lui donner de l'espoir ....
  • # alors, c'est pas compliqué ;)

    Posté par  (site web personnel) . Évalué à 3.

    Comme quelqu'un l'a déjà dit, le seul logiciel présent sur l'ordinateur en absence d'OS est le BIOS. Or, aucun bios (à ma connaissance et sur PC) ne permet à l'utilisateur d'écrire quoi que ce soit dans la mémoire de l'ordinateurr. C'est pas plus compliqué que : impossible.
    Après, bien sûr, le premier compilateur (FORTRAN) était écrit en langage machine (qqun peut me contredire ?) et ça a pris 50 années/homme... Aujourd'hui, avec des outils tels que lex/yacc, on peut écrire un compilo basique en 1 semaine...

    "Liberté, Sécurité et Responsabilité sont les trois pointes d'un impossible triangle" Isabelle Autissier

    • [^] # Re: alors, c'est pas compliqué ;)

      Posté par  . Évalué à 1.

      et les "BIOS" Alpha, Apple ou Sparc???
      c'est sans doute "interprêtateur" que je devrais dire.


      ah, si on pouvait avoir ça sur x86...
    • [^] # Re: alors, c'est pas compliqué ;)

      Posté par  (site web personnel) . Évalué à 1.

      Bon, je prends le train en marche avec un peu de retard.

      Sur les anciens ordinateurs, en l'absence de bootloader, un interpréteur basic (en ROM) démarrait automatiquement.

      A partir du Dos, on pouvait même le lancer directement via l'interruption 18h.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.