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.
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.
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 !
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
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.
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.
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 ?Envoyé par @v@lon
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
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 ?
Une seule question : pourquoi inventer un langage de plus ?
En répondant à cette question, tu répondras à toutes les autres.
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 !
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.Envoyé par Patriarch24
Absolument d'accord. Mais pourquoi ne pas commencer par étudier des langages déjà créés dans ce cas ?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.
Enfin bref, @v@lon ne répondant pas, on n'en saura pas plus pour l'instant![]()
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.Envoyé par Patriarch24
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
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![]()
Partager