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 cho7 (site web personnel) . Évalué à 2.
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 vincent LECOQ (site web personnel) . Évalué à 10.
SOS
[^] # Re: heu ...
Posté par Woodstock . Évalué à 10.
# Hmmm
Posté par Yusei (Mastodon) . Évalué à 5.
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 Mais qui suis-je ? :) . Évalué à 3.
-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 Yusei (Mastodon) . Évalué à 10.
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 Philippe F (site web personnel) . Évalué à 2.
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 Yusei (Mastodon) . Évalué à 3.
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 LeMagicien Garcimore . Évalué à -1.
\o/ JAYCE !!!
[^] # Re: Hmmm
Posté par Yusei (Mastodon) . Évalué à 3.
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 pasBill pasGates . Évalué à 2.
# boot
Posté par Ramón Perez (site web personnel) . Évalué à 6.
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 scand1sk (site web personnel) . Évalué à 6.
Quoi ? Ah oui, --->[]
[^] # Re: boot
Posté par leahpar . Évalué à -2.
/me regarde les highscores
# un driver pour sa carte reseau
Posté par jraf . Évalué à 7.
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.
[^] # Re: un driver pour sa carte reseau
Posté par modr123 . Évalué à 2.
# boot time
Posté par TheBreton . Évalué à 10.
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 Jean Parpaillon (site web personnel) . Évalué à 3.
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 GhZaaark3 . Évalué à 1.
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 WH (site web personnel) . Évalué à 1.
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.