IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

L'exécutable est-il indépendant du langage qui l'a créé ?


Sujet :

Langages de programmation

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 56
    Points : 31
    Points
    31
    Par défaut L'exécutable est-il indépendant du langage qui l'a créé ?
    Bonjour,

    tout est dans le titre,
    les exécutables gardent ils ou pas une trace du langage qui les a créé ?
    Par exemple si je crée un exécutable a partir de fortran avec ifort et un autre avec gcc et les deux font le même chose (print hellow word) par exemple, auront nous exactement le même contenu binaire des deux exécutables ?

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut


    Les deux binaires seront différents (même s'ils feront la même chose). Notamment, les conventions d'appel de fonction sont différentes en Fortran et en C ("gcc"), ce qui change fondamentalement le code binaire au niveau de l'appel de la fonction d'affichage. De plus, ces deux fonctions ne seront pas forcément identiques (la bibliothèque standard C n'est pas celle de Fortran).

    Pour des cas plus simples, comme juste du calcul (sans entrée-sortie), chaque compilateur effectue des optimisations différentes, le code pourrait donc être encore une fois assez différent.

    En fait, on peut même détecter le compilateur (ce qui est plus précis encore que le langage) depuis le binaire : http://stackoverflow.com/questions/1...704449#1704449, http://www.ntcore.com/pedetective.php. Certains vont même jusqu'à comprendre la manière de générer le code assembleur pour détecter le compilateur…
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Et pour compléter,
    Citation Envoyé par tsumey Voir le message
    si je crée un exécutable à partir de fortran avec ifort et un autre avec gcc et les deux font la même chose (print hello world) par exemple, aurons-nous exactement le même contenu binaire des deux exécutables ?
    Qu'est-ce qui t'empêche de faire le test ? Générer ces deux exécutables et les examiner avec un éditeur hexa ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Qu'est-ce qui t'empêche de faire le test ? Générer ces deux exécutables et les examiner avec un éditeur hexa ?
    Au hasard, la version des compilateurs et les options utilisées

    Prévois du temps [beaucoup de temps] et un percolateur/ une perfusion de café

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 56
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses:

    Je retiens que chaque compilateur traduit le code à sa façon donc pas forcement le même exécutable. mais il le traduisent au même langage. (hexa ou binaire d'ailleurs ?)

    c'est comme si le script était une langue étrangère (anglais italien) et l'exécutable le Français. du coup chaque compilateur (traducteur) traduit à sa façon vers la même langue(Français) mais pas forcement exactement les même mots.
    c'est comme ça que je l'ai compris, dites moi si mon idée est fausse.

    sinon, c'est quoi la différence entre un exécutable et un objet ?

    Merci

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par tsumey Voir le message
    Je retiens que chaque compilateur traduit le code à sa façon donc pas forcement le même exécutable. mais il le traduisent au même langage. (hexa ou binaire d'ailleurs ?)
    C'est le principe, oui. Le fichier exécutable, c'est une suite de bits (donc du binaire) ; tu peux le représenter en groupant les bits d'une manière ou d'une autre : comme des chiffres hexadécimaux (dans un éditeur hexadécimal)… ou des caractères (ouvre un exécutable dans le bloc-notes ou un outil aussi basique).

    Pour plus de détails : le compilateur génère souvent un assembleur, c'est-à-dire une représentation des instructions envoyées au processeur, mais "lisible" pour un être humain. Ce code assembleur est alors traduit par un assembleur (d'où le nom du code) en binaire, lisible lui par le processeur.

    Citation Envoyé par tsumey Voir le message
    c'est comme si le script était une langue étrangère (anglais italien) et l'exécutable le Français. du coup chaque compilateur (traducteur) traduit à sa façon vers la même langue(Français) mais pas forcement exactement les même mots.
    c'est comme ça que je l'ai compris, dites moi si mon idée est fausse.
    C'est le principe même de la compilation : passer d'un langage à un autre.

    Citation Envoyé par tsumey Voir le message
    sinon, c'est quoi la différence entre un exécutable et un objet ?
    En compilation séparée, chaque fichier de code source est transformé en un fichier objet, qui contient le code assembleur généré pour ce code source (en approximation…). Ensuite, l'édition des liens vient générer un fichier exécutable à partir de tous ces fichiers objet.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. [AC-2010] Un oRst.Clone qui n'est pas indépendant de l'original
    Par jehhej dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/11/2013, 20h33
  2. [HTML] Le html est t'il un langage de programmation
    Par Ice-tea dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 14/12/2006, 22h51
  3. "Rentring" : est-ce un nouveau langage ?
    Par sergi_o dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 24/11/2006, 23h35
  4. [VB6]Message d'erreur si le temps d'exécution est trop long
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 14/09/2006, 16h43
  5. Réponses: 2
    Dernier message: 28/08/2006, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo