Journal L'oeuf ou la poule ?

Posté par  .
Étiquettes : aucune
0
18
fév.
2004
Chère journal,
En me couchant hier soir, je me suis poser une question hyper existentiel qui m’a empêcher de m’endormir pendant au moins 10 bonne minutes.
Qui était là en premier le binaire ou le compilateur. Parce que sans compilateur, comment obtenir le binaire. Et pis sans le binaire du compilateur comment compiler ?
D’ailleurs comment on fait un compilateur sans compilateur ? Et un binaire sans binaire ?
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 1.

    le language machine, tu connais ?
    • [^] # Re: L'oeuf ou la poule ?

      Posté par  . Évalué à 2.

      Non.
      Je suis pas développeur. Mais par déduction j'imagine que tu parle de l'assembleur.
      • [^] # Re: L'oeuf ou la poule ?

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

        Pire l'assembleur est compréhensible ... le langage machine moins ... et ne nécéssite pas de compilateur. Enfin, c'est toi le compilateur dans ce cas ;-)
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 4.

          Oui, mais l'avantage c'est qu'en langage machine, tous les logiciels sont open-source !! :)
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 2.

    Les premiers compilo ont du etre ecrit en "assembleur", et a partir de ceux-ci on a pu ainsi creer des compilos plus evolués et ainsi de suite ... (d'ailleur la complexité des langages suit cette évolution)

    Quelqu'un a une autre idée ?
    • [^] # Re: L'oeuf ou la poule ?

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

      Oui mais ton compilateur en langage d'assemblage, il faut bien de transformer en un fichier binaire qui va se charger en RAM. En fait la seule solution consiste à prendre ton listing en assembleur et convertir à la main les mnémoniques en codes binaires.
      • [^] # Re: L'oeuf ou la poule ?

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

        Il y a aussi des dieux qui programmaient en langage machine. Je me souviens avoir vu une intro de 3Ko intitulee "mars" qui etait un voxel representant un paysage martien, et quand on bougeait la souris le paysage bougeait avec. J etais reste bluffe.
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 2.

          Ouais, je m'en rappelle de ce truc la c'etait terrible !

          3Ko et fluide sur un 486SX25.

          Allez, il faudrait quoi comme machine pour fairela meme chose qui tourne sous XP ? Au moins un P4 2.4 et une GeForce 4, non ?

          Le type qui m'avait montre ca avait decide de refaire son driver souris, parce qu'il n'en trouvait pas de moins de 5Ko.
        • [^] # Re: L'oeuf ou la poule ?

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

          http://www.pouet.net/prod.php?which=4662(...)

          Mais bon c'est de l'assembleur je pense, il faut être un peu timbré pour coder en code machine sur x86
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 2.

          Rectification ...

          J'ai pas mal développé en assembleur (et direct en hexa parce que les mnémoniques c'était plus long), mais je suis pas un dieu pour autant.

          Plus simplement, on n'avait pas le choix :)

          M
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 1.

          Ahh, les bons souvenirs

          Sinon, il y avait les catégories mions de 256 octets :)
          j'ai déjà vu un code source, c'est assez impressionnant, que des opérations en virgules flotantes qui donnent un résultat magnifique

          Et pour gagner un octet et rester dans la catégorie, le gars ne refermait pas le mode graphique, on pouvait lire en commentaire :
          ; mov ax, 3
          ; int 10h
          et juste un petit "ret" a la fin :)
      • [^] # Re: L'oeuf ou la poule ?

        Posté par  . Évalué à 1.

        Bonne remarque, mais en se replongeant dans les annees 60-70, au temps des premiers ordinateurs, ceux-ci n'etaient pas concu de la meme maniere (pas de RAM, ...). En fait les programmes en assembleurs etaient directement interpretes par la machine (c'est l'epoque des cartes perforees), la traduction assembleur->code binaire etaient faite en hardware. Me trompe-je ?
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 1.

          Les premiers ordinateurs datent de 1945 et même avant (ENIAC).
          Personnellement, j'ai programmé en FORTRAN dès 1964 !
          • [^] # Re: L'oeuf ou la poule ?

            Posté par  . Évalué à 1.

            Chui un ptit jeune moi, alors tout ce qui est avant 1980 ca se melange un peu ;)

            En fait j'ai pris comme reference un calculateur acheté par ma fac dans les annees 60 foncitonnant a base de carte perforée (dixit l'une de mes profs qui a connue cette epoque la, et elle n'a pas 60 piges, d'ou ma fourchette 60-70)

            C'est vrai ke les premiers ordinateurs datent de la seconde guerre, mais leur utilisation par des vrais informaticiens et par ceux qui ont inventés l'informatique est bcq plus tard.
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 2.

    Avec un interrupteur tu fais du binaire.... avec du binaire tu fais un compilateur (bon la, je saute pas mal d'etapes mais bon), et avec un compilateur tu fais un meilleur compilateur etc etc...

    Ce n'est donc pas aussi complique. Par contre pour l'oeuf et la poule... aucune idee...
  • # Re: L'oeuf ou la poule ?

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

    là, c'est plus imple que l'oeuf ou la poule. Il est possible d'écrire des binnaires sans compilateur ...
    Quand j'étais au lycée, on s'amusait à faire des jeux en assembleur sur HP48G(X), et il n'y a pas de compilateur ... il faut donc écrire sur papier ton code assembleur, le traduire à la main (par ex : add => 7E ce qui est faux car j'ai pas mon bouquin sous les yeux) , inverser les octets (j'ai jamais compris pourquoi) et enfin le rentrer dans la machine (sans faire de faute de frappe) et voila, tu a un binnaire exécutable sans compilateur ;op
    • [^] # Re: L'oeuf ou la poule ?

      Posté par  . Évalué à 1.

      Inverser les octets ? hmm.... verifie ta nappe IDE :))
    • [^] # Re: L'oeuf ou la poule ?

      Posté par  . Évalué à 3.

      l'inversion des octets vient du codage interne de la machine (une histoire de petits indiens et de grands indiens (big endians and little endians))
      • [^] # Re: L'oeuf ou la poule ?

        Posté par  . Évalué à 2.

        endian ne veut pas dire indiens en anglais mais boudhiste ...
        • [^] # Re: L'oeuf ou la poule ?

          Posté par  . Évalué à 1.

          ooops j'ai ripe sur le dh, il fallait lire "t" a la place ;)
          • [^] # Re: L'oeuf ou la poule ?

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

            Et pourtant, un gros bouddhiste... :-)

            (Précision, big endian/little endian c'est une référence aux voyages de gulliver, dans lequel deux pays s'affrontent sur la manière dont on mange les oeufs à la coque: par le petit bout ou par le gros bout. D'où la traduction.)
    • [^] # Re: L'oeuf ou la poule ?

      Posté par  . Évalué à 2.

      inverser les octets
      C'est pas une histoire de little endian / big endian* ? (rappel : en little endian l'octet de poid faible est stocker avant l'octet de poid fort)

      Sur x86 on est en little endian le 68000 en big endian il me semble

      * en français : petit boutiste / gros boutiste :-/
    • [^] # Re: L'oeuf ou la poule ?

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

      ba ? tu ne connaissais pas le compilateur Asmflash ?
      A l'époque de la GX, il y avait longtemps qu'il était sorti :-)

      Bon, sinon, tu me rappelles de bons souvenirs :-)

      l'auteur d'AsmFlash a codé son compilateur comme tu as décrit.

      Dans le même principe, j'avais codé un compilateur beaucoup plus évolué, J-ASM. j'utilisais Asmflash pour le compiler. jusqu'au jour où la version de dev a été suffisement mature pour compiler ses propres sources. Et hop, j'ai viré asmflash. du coup, j'ai pu intégrer les nouveautés dans les sources qui m'ont permis alors d'améliorer encore plus le compilateur etc..

      Bref, assez amusant je trouve de voir un programme, comment dirais-je.. qui a la capacité de se regénérer lui même :-)

      Bon sinon, l'assembleur du processeur Saturn de la HP, ça roxor quand même pas mal pour une tite machine comme celle-là. Processeur 4 bits, mais avec des registres 64bits. Assez atypique ne trouvez vous pas :-)
      • [^] # Re: L'oeuf ou la poule ?

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

        Dans le même principe, j'avais codé un compilateur beaucoup plus évolué, J-ASM.

        Je me suis toujours demandé si ton compilateur etait mieux que celui d'Hpmad : MASD.

        Processeur 4 bits, mais avec des registres 64bits.

        Et bus de 20 bits ! Effectivement ca doit etre atypique :)
        • [^] # Re: L'oeuf ou la poule ?

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

          > Je me suis toujours demandé si ton compilateur etait mieux que celui d'Hpmad : MASD.

          mieux, je ne sais pas. Disons que la syntaxe évoluée qu'ils proposent est différente, et donc on aime ou on aime pas.

          Pour ma part, j'avais opter pour une syntaxe qui se rapproche plus de la philosophie C que MASD, si mes souvenirs sont bons.
          Et puis aussi pour des expressions plus naturelles, avec priorité des opérateurs etc (ce que ne faisait pas la version MASD de l'epoque) (je ne sais plus si j'avais fait le support des parenthèses)

          Un autre truc, assez innovant à l'époque sur HP, c'est que J-Asm pouvait générer des fichiers objets. (Je ne sais plus si MASD permettait de le faire, mais je crois que non). Et donc on pouvait compiler son programme par morceau, et assembler le tout à la fin.
          Cela avait l'avantage :
          1) de ne pas avoir toutes les sources sur la machine, de ne garder que les fichiers objets des bouts du programmes qui étaient stabilisés
          2) d'economiser de la mémoire lors de la compilation
          3) de compiler plus rapidement

          bref, le truc qui m'a été super utile, surtout quand J-Asm pouvait se compiler lui même. Ca m'économisait beaucoup de temps et de mémoire (je n'avais que seulement 64ko pour compiler et stocker les sources.. ma carte de 128ko, protégée en écriture, contenant tout les outils de dev et le compilateur..).

          Hélas, j'ai eu une démotivation sur la fin, d'autres projets, et J-ASM n'en est resté qu'à sa version 0.92 :-/. manquait plus qu'une interface un peu plus conviviale pour en faire une version finale. arg..

          tiens, faudrait que je pense à libérer les sources un de ces 4.
          • [^] # Re: L'oeuf ou la poule ?

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

            Et puis aussi pour des expressions plus naturelles, avec priorité des opérateurs etc (ce que ne faisait pas la version MASD de l'epoque) (je ne sais plus si j'avais fait le support des parenthèses)

            Oui, si je me souviens bien MASD a toujours ete limité dans l'evaluation des expressions ...

            Un autre truc, assez innovant à l'époque sur HP, c'est que J-Asm pouvait générer des fichiers objets.

            MASD supporte desormais la generation des objets, je pense meme qu'hpmad a du te piquer ton idee :)

            tiens, faudrait que je pense à libérer les sources un de ces 4.

            Je tenais a jour une liste de soft libres pour HP4x, tu pourrais me contacter le jour ou tu libere les sources ? Ca m'interesserai :)

            En tout cas, merci pour ton J-asm, et aussi merci pour ton Jytris qui etait tres joli ! :)
  • # Re: L'oeuf ou la poule ?

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

    Ces documents pourront t'intéresser:
    http://portal.acm.org/citation.cfm?id=197336&coll=portal&dl(...)
    http://www.scifac.ru.ac.za/compilers/cha03g.htm(...)

    ça ne parle pas du premier compilateur, mais de comment en faire de nouveaux.

    Le premier compilateur est A-0, écrit en langage machine par Grace Hopper et son équipe en 1952:
    http://en.wikipedia.org/wiki/Grace_Hopper(...)
    http://en.wikipedia.org/wiki/A-0(...)
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 2.

    il y a un super langage qui fait des
    000000000010101010100011010111111 ...
    (ou plutot des 01 FE 5D ...) : c'est celui que ta machine comprend

    après, t as un autre langage qui se traduit presque directement dans le précédent et qui fait
    STO, ADD INC ... : l'assembleur

    et après t'as des langages structurés, qui sont tous traduits en 0 et en 1 lors de leur exécution.

    Bref, le 1e compilateur, il a été écrit directement en binaire (d'ailleurs à l'époque ça devait être des cartes perforées)
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 1.

    lex et yacc!!

    /o\
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 3.

    Les premiers compilateurs binaires étaient les hommes tout simplement ...

    "<John> Hey! Roger ! c'est toi qu'a merdé sur le bit #342367 paragraphe 8765 ?"
    "<Roger> Heu! Au temps pour moi, tu peux le remplacer stp ! ... un bout de scotch ?"
  • # Re: L'oeuf ou la poule ?

    Posté par  . Évalué à 1.

    Donc en résumé, on a compilé la poule qui compile des oeufs qui compilent des poulent qui compilent des oeufs qui compilent.... Voilà la vraie évolution de l'humanité !
    • [^] # Re: L'oeuf ou la poule ?

      Posté par  . Évalué à 2.

      non on n'a pas compilé la premiere poule , on l'a construite atome par atome.

      on a joué a Dieu , quoi :-)
      • [^] # Re: L'oeuf ou la poule ?

        Posté par  . Évalué à 1.

        Dieu crée la Terre.
        Dieu crée l'Homme.
        Avènement de l'Homme.
        Dieu décède.
        L'homme crée la poule.
        La poule crée l'oeuf.
        La suite de l'évolution c'est la mort de l'Homme et l'avènement de l'oeuf ???

Suivre le flux des commentaires

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