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 :

Création d'un langage de programmation


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Points : 52
    Points
    52
    Par défaut Création d'un langage de programmation
    Bonjour à tous.
    ça fait un moment que je programme dans de multiples langage, et aimerais créer le mien. Voilà le problème : je sais absolument pas comment faire. Je ne sais pas comment programmer un traducteur, et encore moins un IDE. J'ai entendu parlé de Lexx, Yacc, Flex, et Bison mais ne voit vraiment, mais vraiment pas ce que c'est. Merci de bien vouloir éclairer mes lanternes.

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut
    Bonjour
    Si tu veux programmer ton propre compilateur veux dire t'es courageux je te félicite
    Passe moi ton e-mail en privé je te file un pdf je le trouve utile pour comprendre tout les étapes pour crée un compilateur
    Enfin pour lex et yacc j'ai une copie pour Delphi si tu veux programmé en Delphi sinon tu peux les trouvés sur net puisque sont libre de droit

    Bonne journée

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par SoftAbdou Voir le message
    Passe moi ton e-mail en privé...
    Pourquoi en privé, fais en profiter le forum, s'il est vraiment bien ce PDF ou un peu trop gros et qu'il ne présente pas de problèmes de copyright, on trouveras peut être un moyen pour lui donner un peu plus de visibilité à ce document.

  4. #4
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut yes pas de problème
    Bonjour

    Très Bien
    Bien sûr je donne le fichier pour le forum
    Mais juste c'est en anglais
    La taille de fichier (zip)=886 Ko
    pour le problème de copyright je pense pas qu'il existe pas un problème car c'est une documentation de l'université de Damascus University et j'ai télécharger le fichier dans le site officiel de l'université mais le problème je trouve pas le lien du pdf

    Bon journée

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Bonjour à tous.
    Pour la documentation : merci d'avance.
    Ensuite pour lexx et yacc, je le redit, ça me fait plus penser à un nom de médicament qu'une quelconque méthode. Lexx & yacc en delphi : je ne me suis pas mis au delphi car je n'aipas trouvé de tutoriel. Je pense que je vais aller vers le C/C++ (rien de bien complexe), ou alors vers l'assembleur si ça tourne "mal" (et c'est vraiment l'envie qui m'en manque).
    Merci pour vos solution et vos futures réponses, et à bientôt.

  6. #6
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut
    Bonjour

    Tu programme avec n'importe quel langage c'est pas un problème la méthode création d'un compilateur reste la même
    Et pour Lex et yacc sont des outils de génération d'analyseurs lexicaux (Lex) et syntaxiques (Yacc)
    j'espère que tu connais les notions de base de théorie de langage.
    enfin la taille de fichier est grand en attendant que ram-0000 trouve une solution ne perde pas le temps envoyer moi ton e-mail .
    Bonne courage

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    bonjour,

    commence donc pas faire de la recherche sur tout ce qui est "création d'un compilateur" ou "compilation".

    Dans un premier temps il va te falloir définir les spécificité de ton langage :
    - Objet ou non
    - le type de grammaire
    - ...

    Une fois que tu sauras à quoi ressemble ton langage, tu pourras commencer à créer ton compilateur (analyseurs lexical, syntaxique et sémantique). Lexx et Yacc sont deux bons utilitaires mais tu peux aussi tout reprogrammer (ça se fait assez bien si on a un bon niveau).

  8. #8
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Pourquoi en privé, fais en profiter le forum, s'il est vraiment bien ce PDF ou un peu trop gros et qu'il ne présente pas de problèmes de copyright, on trouveras peut être un moyen pour lui donner un peu plus de visibilité à ce document.
    Salut,
    Enfin j'ai trouvé une copie similaire sur google j'espère que je vais profiter le forum.

    Je vous donne le fichier PDF mais une remarque c'est pas la même version que j'ai utilisé malgré tout il est bien pour un débutant
    Télécharger PDF (à l'aide de se tutoriel j'ai réussi a faire mon mini compilateur)

    Bon courage

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut le lien du pdf ne marche plus =(
    s'il vous plait le lien ne marche plus remplacez par un lien qui marche.
    merci

  10. #10
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    Citation Envoyé par lolo_momo Voir le message
    s'il vous plait le lien ne marche plus remplacez par un lien qui marche.
    merci
    Passe moi ton email en MP, je vais t'envoyer le PDF

  11. #11
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    Citation Envoyé par Crabe05 Voir le message
    ou alors vers l'assembleur si ça tourne "mal" (et c'est vraiment l'envie qui m'en manque).
    Merci pour vos solution et vos futures réponses, et à bientôt.
    tu sera obligé d'avoir un minimum de bases en asm...car, apres tout, ce que fais un compliateur c'est traduire un langage humainement comprehensible ver le langage machine (a.k.a assembleur)

    avant de te lancer dans tout ce qui est analyse lexical/syntaxique, je te conceil d'abord de prendre connaissance du fonctionnement global d'un compilo existant comme gcc par exemple:
    comment les arguments sont passés a une fonction, comment une fonction retourne une valeur , ou sont stockée variables globales, locales ou allouées...
    bref, ne te plonge pas directement dans du code, tu ne ferai que perdre ton temps.

    une fois que tu aura compris toutes ces notions, tu pourra commencer a decrire ton langage et enfin t'attaquer au code...

    mais ca demande du temps...beaucoup de temps...
    et sinon l'IDE ne fais pas partie du compilateur, c'est juste un éditeur de texte + coloration syntaxique + options = generalement usine à gaz.
    j'oubliais...il faut aussi connaitre le format d'un executable sous l'OS que tu utilisera comme cible...

    bon courage à toi en tout cas !

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 141
    Points : 12 245
    Points
    12 245
    Par défaut
    Il y a aussi trois autres moyens pour vérifier que ton nouveau langage à un intérêt, et cela à moindre coût:
    - la trans-compilation, c'est convertir le code source écrit dans ton langage de haut niveau en un autre langage de haut niveau et d'utiliser le compilateur de cette autre langage.
    - l'utilisation de moteur de script comme l'Active Scripting Host de M$ qui permet de facilement créer des langage de script.
    - l'utilisation de meta-compilateur comme le projet Phoenix de M$, qui est un ensemble d'outil pour la création et l'extension de langage de programmation.

  13. #13
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    Citation Envoyé par bacelar Voir le message
    - la trans-compilation, c'est convertir le code source écrit dans ton langage de haut niveau en un autre langage de haut niveau et d'utiliser le compilateur de cette autre langage.
    pas bête, et utile pour la portabilité de ton code.
    et le tu pourra te passer de l'assembleur ^^
    mais bon, c'est toujours interessant de comprendre les mecanismes d'un compilo !

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Déjà, que cherches-tu à faire comme type de langage?
    • Langage interprété : Langage de scripts, aucune connaissance de l'assembleur requise.
    • Langage semi-interprété (genre VB et anciennes versions de Java) : Connaissance de l'assembleur non-obligatoire, mais c'est bien de savoir comment ça marche puisque tu vas faire un équivalent.
    • Langage connaissance de l'assembleur nécessaire, et à moins d'utiliser un logiciel assembleur en plus (genre celui de GCC), tu devras aussi connaître les codes machine correspondant à tes instructions assembleur.

  15. #15
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par bacelar Voir le message
    - la trans-compilation, c'est convertir le code source écrit dans ton langage de haut niveau en un autre langage de haut niveau et d'utiliser le compilateur de cette autre langage.
    C'est d'ailleurs ce qui est le plus souvent enseigné, car plus rapide et moins complexe. D'autant plus que dans la plupart des cas, le résultat répond parfaitement au besoin.

  16. #16
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    C'est d'ailleurs ce qui est le plus souvent enseigné, car plus rapide et moins complexe. D'autant plus que dans la plupart des cas, le résultat répond parfaitement au besoin.
    le plus souvent enseigné
    on peut savoir où ?


    pour infos, étant dans ce petit domaine, j'ai surtout vu en première application, la création d'une machine virtuelle et une compilation vers cette machine virtuelle... c'est l'approche retenue dans les masters de recherche, et en début d'école d'ingénieurs. certaines écoles allant même jusqu'à la création d'un compilation vers source asm avec utilisation d'un assembleur externe
    il existe des projets qui "compilent" vers un sous-ensemble de C, mais ils ont des vocations "utilitaristes" et pas du tout pédagogiques (ex: Lustre)

  17. #17
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    le plus souvent enseigné
    on peut savoir où ?

    pour infos, étant dans ce petit domaine, j'ai surtout vu en première application, la création d'une machine virtuelle et une compilation vers cette machine virtuelle... c'est l'approche retenue dans les masters de recherche, et en début d'école d'ingénieurs. certaines écoles allant même jusqu'à la création d'un compilation vers source asm avec utilisation d'un assembleur externe
    il existe des projets qui "compilent" vers un sous-ensemble de C, mais ils ont des vocations "utilitaristes" et pas du tout pédagogiques (ex: Lustre)
    Le jugement d'Hephaistos est très hâtif. Je doute qu'il ait fait une recherche dans un panel représentatif d'université au monde ou même seulement dans celles de France.

    Ici la compilation est apprise en trois temps : assembleur, automate et grammaire, technique de compilation à proprement parler. Depuis qqs années il n'y a plus de créations de code assembleur, mais c'est l'approche qui est induite. Les autres approches ne sont pas vraiment vues.

  18. #18
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Pour en revenir au sujet initial : si Crabe05 ne sait pas par où partir, c'est qu'il n'est pas prêt à faire un langage. Je lui conseillerais donc de continuer à étudier et d'attendre d'être prêt. Ça prendra une coupe d'années je pense. Désolé de casser ton fun

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Ho crois-moi, tu ne casse absolument pas mon fun !!!
    Je comprend de plus en plus que je ne suis pas près. Je n'ai pas assez d'expérience dans le domaine. Je retiens ce topic, qui peut me servir dans beaucoup de domaine, et peut-être un jour la création d'un langage.
    Je ne peux me lancer dans une telle entreprise pour... faute de temps, faute d'expérience, et que je suis tout seul !
    En tout les cas, merci mille fois de vos réponses si nombreuses, auxquelles tout le monde peut contribuer, afin d'aider d'autre personne. Vous pouvez fermer le topic si vous le désirez, car je pense que presque tout y est.

    Encore merci, Crabe05.

  20. #20
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Crabe05 Voir le message
    Bonjour à tous.
    ça fait un moment que je programme dans de multiples langage, et aimerais créer le mien. Voilà le problème : je sais absolument pas comment faire. Je ne sais pas comment programmer un traducteur [...]
    Il me semble vraiment que tu ne poses pas *du tout* la bonne question ! Quand on veut "créer" un nouveau langage, la question n'est pas de savoir si on va le compiler vers x86 ou vers la JVM et dans quel langage on va écrire le compilo !

    Les vraies questions sont plutôt :
    • Qu'est ce que je veux de particulier dans mon langage (est ce que ce sera un langage généraliste, un langage de manipulation de texte (à la perl), un langage de graphisme, un langage pour le web, ou que sais je encore) Va-t-il apporter quelque chose à l'existant ou est-ce juste pour le fun ?
    • Dans quelle grande famille de langage va-t-il se situer ? Un langage impératif, un langage objet, un langage fonctionnel ? Puis quelle sera la "philosophie" du langage ? Du 100% tout objet ? Du fonctionnel pur ? Du très bas niveau ? Un mix d'un peu tout ça ?
    • Est ce que je veux un langage typé ou non ? Si oui, quel genre de système de types ? Un truc faiblard à la C, un truc avancé à la Haskell/OCaml ? Si non, quel permissivité ? Tout accepter à la PHP ? Etre plus strict à la python/ruby ?
    • Il faut ensuite définir une syntaxe (pas forcément directement à la virgule et au mot clé près, mais au moins les grandes lignes, genre la structure des arbres de syntaxe abstraite)
    • Définir une sémantique de ton langage (si j'ai tel programme, que veut-il dire ? Comment va-t-il s'exécuter ?) Je ne dis pas qu'il faut le faire formellement, mais au moins s'en faire une bonne idée. Vérifier la cohérence !
    • Si tu as choisi d'avoir un langage typé, regarder l'algorithme de typage. Est ce de l'inférence, ou est ce qu'il faut que le programmeur annote tout son code ?

    Après seulement tu pourras fixer la syntaxe en écrivant un parseur, puis un typeur (si besoin est) et enfin un interpréteur (c'est un bon début avant de se lancer dans de la compilation...). Quand tu auras tout ça, tu pourras sans doute te demander si la compilation est une bonne idée. Mais c'est quand même un peu plus tard dans le cheminement intellectuel de la création de langage que vient vraiment se poser cette question

Discussions similaires

  1. [Bénévole] Projet Open Source (Java) dev's : création d'un langage de programmation
    Par izanagi1995 dans le forum Autres
    Réponses: 0
    Dernier message: 10/01/2014, 10h46
  2. [Questions]Le langage de programmation Binaire existe t-il ?
    Par Nasky dans le forum Langages de programmation
    Réponses: 30
    Dernier message: 16/11/2012, 09h09
  3. Qui a inventé le concept de "langage de programmation?
    Par Biane dans le forum Langages de programmation
    Réponses: 10
    Dernier message: 11/02/2004, 10h11
  4. Création d'un langage de programmation
    Par liquid_stone dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 09/11/2003, 16h44
  5. Nombre de langage de programmation total
    Par Adrael dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 22/07/2003, 00h06

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