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 :

Comment créer un langage de programmation ?


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 146
    Par défaut Comment créer un langage de programmation ?
    Mille merci, puisque vous lisez ces lignes c'est que vous êtes intérésser à mon soit disant IDEE.
    Bon, je cherche des cours et des explications pour créer un nouveau language de programmation, je crois que j'ai tous dit, et merci encore.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ca risque de ne pas être une chose très aisée mais si tu y tiens... Il te faut des outils donc voici quelques liens:

    http://dinosaur.compilertools.net/
    http://ds9a.nl/lex-yacc/#download
    http://www.linux-france.org/article/devl/lexyacc/

    Puis je pense que tu peux voir pour le sujet de la Théorie des langages mais c'est un assez gros sujet qui est découpé en plusieurs modules donc tu as de la lecture devant toi.

    Pour finir tu vas avoir une très très grosse partie sur la conception même du langage que tu veux créer et donc définir la syntaxe, les règles de syntaxe et de sémantiques, etc... Suivant la compléxité que tu recherche et les fonctionnalités, ca peut s'avérer être un projet de plusieurs années


    Bon courage
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Alors, tu souhaites créer un langage de programmation, c'est quelque chose de réellement difficile. Ca dépend à quel point du souhaite le créer.

    Tu as déjà une grosse étape qui va consister à Compiler ton langage source vers un langage cible de plus bas niveau. Il faut définir le langage cible pour essayer de voir à quel point cela sera difficile (par exemple en C, en C++, ou en assembleur).

    Dans la phase de compilation, il y a plusieurs étapes : analyseur lexical (implémentable par un automate normal), analyseur syntaxique (implémentable par un automate à pile). Pour réaliser ceux-ci, tu peux utiliser des bibliothèques tout fait (disponible en C, java ou encore camL) tel que lex et yacc. Je viens de parler d'analyse syntaxique, cela requiert de déterminer la grammaire de ton langage (ce qui implique de connaître la théorie des langages également)
    Connaissance requise : Automate, automate à pile, théorie des langages (grammaires), techniques d'analyse syntaxique et lexical

    Ensuite vient la partie d'analyse sémantique, il n'y a, à ma connaissance, aucune bibliothèque permettant d'automatiser cela (il faut connaître certaines notions supplémentaires, tel que : table des chaines (implémentable par une table de hachage), table des symboles).
    Il faut donc connaître les notions de : analyse sémantique, table des symboles

    Ensuite, ça dépend un peu du langage cible. Tu peux par exemple convertir ton code en C.
    Parfois, on le convertit en code 3 adresses (dans ce cas, il y a des phases d'optimisation complexes). Puis en code assembleur (il y a encore des phases d'optimisation poussées et complexes).

    Si ton langage de départ est un langage de type fonctionnel ou logique, c'est encore plus compliqué. Il y a énormement de techniques pour rendre ce type de langage en langage impératif (d'autres sauront mieux te préciser ce point).



    Il y a des cours sur la théorie de la compilation en ligne (dans théorie des langages) :
    http://general.developpez.com/cours/

    Suivi les termes que j'ai mis en gras, tu verras le boulot que tu as à faire pour réaliser ce que tu souhaites. Et même en sachant ceci, ce n'est pas dit que ton langage soit bien (c'est à dire, performant, portable, disposant d'une bibliothèque standard assez complète, et même innovante). Mais ça fait un très bon exercice, même si c'est pas complet et pas innovant

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    De maniere interessante, les reponses deja donnees donnent des pistes principalement pour la realisation d'une implementation. La premiere etape (a laquelle Frank fait allusion), c'est de definir ton langage. Et pour etre capable de faire ca, il faut bien connaitre les langages semblables a celui que tu desires -- et etre capable d'articuler ce qui ne te convient pas chez eux -- et les theories qu'il y a derriere. Deux bouquins relativement abordables:
    - Concepts, Techniques, and Models of Computer Programming de Van Roi et Haridi pour la partie semantique
    - Types and Programming Languages de Pierce pour le systeme de type.

    Le sujet revient periodiquement sur Lambda the Ultimate, tu peux chercher dans leurs archives.

  5. #5
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Je me permet également de donner un chtit conseil, même si je n'y connais rien dans le domaine. Avant de créer un langage de programmation, comme l'a dit Jean-Marc, il faut que fasses un cahier des charges très précis, et que tu te demandes ce que ton langage pourra faire de "plus" que les autres. Par de plus, je n'entend pas forcément inventer un nouveau concept, mais faciliter ce que certains langages ne permettent que difficillement.

    Donc attarde toi sur le cahier des charges et sur la "conception" de ton langage avant de te lancer dans le code. Pendant ce temps, tu pourras étudier (si tu ne connais pas déjà le sujet bien entendu) tous les domaines qu'à cité millie.

  6. #6
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par @v@lon
    Bon, je cherche des cours et des explications pour créer un nouveau language de programmation, je crois que j'ai tous dit, et merci encore.
    Non, tu n'as pas tout dit : quelle est la finalité ? Est-ce un projet personnel juste destiné à te faire plaisir, un projet didactique, ou avec une visée plus amibitieuse, est-il destiné à une plateforme microprocesseur ou microcontrôleur, doit-il répondre à des contraintes particulières ?

    Non pas que la réponse à toutes ces questions va changer grand chose au fait que tu devras assimiler toutes les connaissances citées par millie, mais au moins cela permettra d'évaluer tes chances de réussite selon ton niveau de départ.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    ce serait cocasse si le langage que veut créer @v@lon existait déja

    quels sont les langages qu'il connait ?

    en quoi ces langages sont insatisfaisants ?

  8. #8
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Une seule question : pourquoi inventer un langage de plus ?

    En répondant à cette question, tu répondras à toutes les autres.

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Faudrait déjà qu'il réponde
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Patriarch24
    Une seule question : pourquoi inventer un langage de plus ?

    En répondant à cette question, tu répondras à toutes les autres.
    Personnellement, je trouve que c'est un excellent exercice de faire cela. Ca permet vraiment d'élargir ses connaissances dans le domaine de la Compilation.

  11. #11
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Personnellement, je trouve que c'est un excellent exercice de faire cela. Ca permet vraiment d'élargir ses connaissances dans le domaine de la Compilation.
    Absolument d'accord. Mais pourquoi ne pas commencer par étudier des langages déjà créés dans ce cas ?
    Enfin bref, @v@lon ne répondant pas, on n'en saura pas plus pour l'instant

  12. #12
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Patriarch24
    Une seule question : pourquoi inventer un langage de plus ?

    En répondant à cette question, tu répondras à toutes les autres.
    La réponse peut vraiment varié d'une personne à l'autre mais en général le but du jeu c'est de savoir "comment ça marche". C'est de ce genre de petites choses que sont parties des petits langages (aux grandes possibilités) comme Io. La simple volonté d'apprendre le BNF, de définir une grammaire après s'être décidé pour un (ou plusieurs!) paradigmes. Et enfin la phase d'implémentation.
    Je t'assure que la première fois que tu le fais, même qud ce n'est qu'un tout petit langage avec 5 mots clés mais que "ça marche" t'es vraiment content
    Un livre vraiment sympathique et pe plus accessible que celui de Van Roy au début c'est la réédition du LISP de Queinnec chez Paracamplus

  13. #13
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 146
    Par défaut C'est pas simple d'être toujours là lorsqu'on est un soldat
    messieurs dames, permetez moi de vous dire que çe n'est pas simple pour moi, de me connecter sur internet au quotidien puisque je suis un officier élève au sein de l'academie royale militaire marocaine.
    En mettant cette question sur le forum de ce site, je m'attender à une douzaine de fichiers PDF, quelque sites web au des livre de 400 pages. Mais je vois que je vais aussi faire de l'economie.
    pour Franck.H ==> je vous remercie infiniment pour ces sites, mais je ne suis pas aussi bon en anglais (3eme année).
    Pour Millie ==> aucun reproche, c'est excellant.
    Pour Jean-Marc.Bourguet ==> un syntaxe fraçais, ou même arabe.
    Pour Woufeil ==> Je crois que c'est déjà fait, merci beaucoup.
    Pour GrandFather ==> C'est un projet entre élèves de l'academie militaire, une sorte de façon de dire à nos superieurs que nous ne sommes des simples soldats, sur tout que je suis en section electronique informatique, et je vais me spécialisé sur ce dernier, je veux que mon language soit sur une plateform microprocesseur, portable, simple à aprendre, extensible, et sur tout libre.
    Pour HRS ==> je metrise le VB 6.0 VB.NET, C/C++, un peut de Java et Python, pour VB6/.NET, pour Windows seulement, pour C/C++/Java il te faut une étérnité pour les apprendre, pour python pas assé de documentation sur le language.
    Pour Patriarch24 ==> Pourquoi il y'a plusieurs marques de voitures? et pour les languages déjà créer, c'est pas mon truc de recopier.
    Pour Gnux ==> C'est pour celà qu'on fait encore des bébés.
    Bref merci à vous tous, je suis toujours en attente de vos reponces, et je vous promet d'être plus souvent sur le forum.
    .:Les forum sont faites pour developpez les idées pas pour les détruire:. proverbe créer par mon frère

Discussions similaires

  1. Comment créer un langage de programmation?
    Par Terfas dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 06/01/2015, 10h53
  2. Réponses: 1
    Dernier message: 01/05/2013, 21h56
  3. Comment créer des ALIAS par programme
    Par HASSIOMAR dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/11/2010, 09h30
  4. Créer un langage de programmation pour ensuite interpréter du PHP
    Par psgkiki dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 25/06/2008, 10h08
  5. Comment créer plusieurs TEdit par programmation?
    Par rebelor dans le forum Delphi
    Réponses: 2
    Dernier message: 02/06/2007, 17h30

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