La programmation du preimier ordinateur

Fermé
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015 - 7 août 2015 à 21:47
 Utilisateur anonyme - 8 août 2015 à 18:22
bonsoir, s'il vous plait je voulais savoir comment on a programmer le premier ordinateur vue q'il y avait pas pas de support pour ça ( machine pour écrire le programme). et aussi savoir si on peut programmer directement en binaire donc en quelque sorte programmer et exécuter sans avoir a passer par la compilation. et aussi savoir comment a été programmer le premier compilateur.

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 7/08/2015 à 22:00
Bonjour,

Cela dépend ce que tu appelles "ordinateur".

La première machine programmable date de 1725. À l'aide d'un ruban perforé qui permettait de définir le motif d'un métier à tisser...
Certes on est encore loin de l'iPhone mais comme la pile électrique n'a été inventé qu'en 1799 c'était déjà pas mal ;-)

Un peu de bibliographie :
https://www.commentcamarche.net/contents/480-ordinateur-histoire
https://fr.wikipedia.org/wiki/Histoire_des_ordinateursLa confiance n'exclut pas le contrôle
1
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 22:11
je te remercie. tu peut avoir une idée de comment programmer directement en binaire?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019 > divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 22:18
On ne peut pas programmer directement en binaire sur un ordinateur moderne.
Parce qu'aujourd'hui les calculs sont effectués par des processeurs, qui est le seul à traiter véritablement du binaire. Mais au niveau de l'ordinateur les instructions sont traités en langage machine, qui n'est plus du binaire.

Voir :
https://fr.wikipedia.org/wiki/Langage_machine
https://fr.wikipedia.org/wiki/Instruction_machine
https://fr.wikipedia.org/wiki/Jeu_d'instructions
0
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 22:48
donc je suppose que si tout le monde cherche a utiliser les autres langage comme le C et le JAVA c est parce que le langage machine est surement très complexe a utilisé. j avoue que ça m'excite un peu de savoir comment tous ca se pass
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019 > divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 23:14
Le langage machine n'est pas complexe en soit, mais ça ne fait quasiment rien à chaque instruction. Si par exemple tu devais programmer l'envoi d'un mail en langage machine à partir de rien... tu en aurais pour des mois avant d'envoyer ton mail, et tu devrais en recoder une grande partie pour envoyer un deuxième mail...

Si on utilise des langages de programmation c'est pour gagner en productivité, on ne pourrait pas coder des systèmes informatiques complet (internet par exemple) si on devait le faire en binaire. Donc on utilise les langages de programmation pour aller directement à l'essentiel sans tout recoder à chaque fois.

Comment fonctionne Java par exemple ?
Le code est écrit dans un fichier texte lisible (très loin du binaire) qui sera ensuite réécrit dans un langage intermédiaire (le bytecode) qui est par un autre programme (la machine virtuelle). Cette machine virtuelle a été codée en C++ et est compilé dans un langage propre au système d'exploitation (.exe pour Windows, .so pour Linux...) et c'est le système d'exploitation qui transmet les instructions machines au processeur, qui les traite en binaire.
Donc si envoyer un mail en Java c'est facile, c'est parce qu'il y a derrière des millions de lignes de codes (dans la machine virtuelle ou le système d'exploitation) qu'il faudrait reprendre de zéro pour tout refaire en instructions machines...
0
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
8 août 2015 à 10:38
OK j comprend assez maintenant. en fait si il faut programmer avec le langage machine on aurait pas besoin d'un système d'exploitation pour l'exécuter. la machine même sera a mesure de le comprendre. donc d exécuter le programme.
0
jee pee Messages postés 40480 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 27 novembre 2024 9 428
Modifié par jee pee le 7/08/2015 à 22:25
Salut,

Il y a presque 40 ans j'ai rencontré la personne qui a conçu le système d'exploitation de cette machine :


Il a écrit le programme, en a fait la version en code machine pour le processeur (je ne sais plus s'il l'a effectué à la main ou a pu faire, par exemple, un listing de conversion sur une autre machine) puis l'a entré en mémoire, bit par bit, à l'aide des clés de la face avant. Mais il a du s'y reprendre à plusieurs fois. Dans cet OS il y avait une commande pour enregistrer le contenu de la mémoire sur un lecteur de k7 (audio) et le sauvegarder. Et il y avait en mémoire morte un boot qui lisait le contenu de la K7 pour charger l'OS en mémoire. Il avait alors embryon d'OS sur lequel greffer des fonctions supplémentaires (gerer un clavier, gerer un affichage, ...).

Cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 22:51
ça a du être un sacré travail. j'aimerai bien apprendre la langage machine des processeur intel x86
0
jee pee Messages postés 40480 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 27 novembre 2024 9 428 > divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
7 août 2015 à 23:16
En dehors des génies ou des fous qui pensent en code machine, tu devrais apprendre l'assembleur qui est le langage de programmation au plus près du processeur
0
divaldo15 Messages postés 6 Date d'inscription vendredi 7 août 2015 Statut Membre Dernière intervention 8 août 2015
8 août 2015 à 10:08
merci. je pense que tu a raison.
0
Apprendre l'assembleur ou le langage machine est pareil, sauf que le langage machine est juste la traduction du langage asm (sur la même arch) en nombre (plus souvent en héxa).

Donc à toi de voir si c'est plus aisé de retenir des nombres et leurs définitions que de mots.

Après l'avantage du langage binaire sur l'asm est bien évidemment l'abandon de compilo, avoir l'impression d'être encore plus proche du CPU et de sa technologie et je pense quelques tours de passe-passe disponible qu'avec le langage binaire (déjà qu'il y en a en asm vs autres).

Tu auras juste besoin d'écrire dans un fichier à l'aide d'un éditeur hexadécimal comme HxD pour win puis tu changes l'extension en .exe et c'est tout.

https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
0
jee pee Messages postés 40480 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 27 novembre 2024 9 428 > Utilisateur anonyme
Modifié par jee pee le 8/08/2015 à 14:20
Alors je ne sais pas si on doit classer shaynox en génie ou en fou ;-)

La seule instruction assembleur dont j'ai retenu le code binaire c'est NOP

Je préfère un source texte avec LDA, STA, MOV

Souvent on se penche sur du code exécutable quand justement on n'a pas le source. Et le décodage en direct d'un programme de déjà quelques milliers de caractères, bonjour. En plus des codes il faut mémoriser si l'instruction tient sur 1,2,3,4 ... octets. On va plutôt chercher un logiciel désassembleur pour générer un source intelligible par le commun des informaticiens.

Je viens de voir que cela existe même en ligne maintenant : https://onlinedisassembler.com/odaweb/ Il y a un exemple de code machine et de sa traduction. Déjà sur juste 35 octets c'est du boulot.

Exemple, l'instruction
884c1301
signifiant
mov BYTE PTR [ebx+edx*1+0x1],cl
il faut surement être très balaise pour la coder direct en langage machine.
0