Comment créer une langue de programmation

Beaucoup de gens ont des difficultés ou des frustrations avec les langages de programmation qu`ils utilisent tous les jours. Certains veulent que les choses soient traitées plus de manière abstraite, tandis que d`autres n`aiment pas la mise en œuvre des fonctionnalités qu`ils souhaitent être «standard». Que vous soyez professionnel informatique ou juste un amateur, plusieurs fois, vous pouvez vous retrouver vouloir créer un nouveau langage de programmation.

Pas

  1. Image intitulée Créer une langue de programmation Étape 1
1. Se familiariser avec la technologie. Vous ne pouvez pas créer de langage de programmation si vous ne savez pas comment utiliser un ordinateur.
  • Image intitulée Créer une langue de programmation Étape 2
    2. Se familiariser avec la terminologie. Les écrivains compilateurs utilisent souvent une terminologie inconnue. Lire les compilateurs avant de continuer. Assurez-vous de savoir tout ce que vous devez savoir.
  • Image intitulée Créer une langue de programmation Étape 3
    3. Décider du problème de votre langue résoudre. Est-ce que cela traite-t-il d`un problème spécifique au domaine, ou s`agit-il d`une langue à usage général??
  • Image intitulée Créer une langue de programmation Étape 4
    4. Pensez à la sémantique de votre langue et les concepts de celui-ci.
  • Allez-vous permettre l`accès direct du pointeur ou non?
  • Quels sont les types de données de votre langue?
  • Est-ce une langue statique ou dynamique??
  • Quel est votre modèle de mémoire? Allez-vous utiliser un collecteur ordures ou une gestion de la mémoire manuelle? (Si vous utilisez un collecteur de déchets, préparez-vous à en écrire un ou à adapter un existant à votre langue.)
  • Comment vont gérer la concurrence? Allez-vous utiliser un modèle de filetage / verrouillage simple ou quelque chose de plus complexe comme Linda ou le modèle Acteur? (Depuis de nos jours, les ordinateurs ont plusieurs cœurs.)
  • Y a-t-il des fonctions primitives intégrées dans la langue ou tout va-t-il d`une bibliothèque?
  • Quel est le paradigme ou les paradigmes de votre langue? Fonctionnel? Orienté objet? Prototype (comme jаvascript)? Axé sur l`aspect? Orienté modèle? Ou quelque chose de tout à fait nouveau?
  • Comment votre langue va-t-elle interfacer avec les bibliothèques et les langues existantes (principalement c)? Ce point est important si vous construisez une langue spécifique au domaine.
  • Enfin, certaines des réponses à ces questions seront répondues à la deuxième étape et vous aideront à répondre à la prochaine étape.
  • Image intitulée Créer une langue de programmation Étape 5
    5. Pensez à certaines tâches spécifiques que quelqu`un voudrait pouvoir jouer avec votre langue. Par exemple, "ils peuvent vouloir diriger un robot pour suivre une ligne" ou ", ils peuvent vouloir créer des programmes de bureau relativement portables" ou "ils peuvent vouloir créer des applications Web avec elle".
  • Image intitulée Créer une langue de programmation Étape 6
    6. Expérimentez avec des idées de syntaxe (le texte de la langue) pour les exemples ci-dessus.
  • Soyez prudent de garder votre langue dans la catégorie de langue sans contexte ou quelque chose à l`intérieur. Votre générateur d`analyseur et vous l`apprécierez plus tard.
  • Image intitulée Créer une langue de programmation Étape 7
    7. Écrivez une grammaire formelle pour la syntaxe.
  • Image intitulée Créer une langue de programmation Étape 8
    8. Décider si la langue sera interprétée ou compilée. Signification que dans le monde interprété, votre utilisateur modifiera généralement votre programme dans un éditeur et exécutez-le directement sur l`interprétation, dans le monde de la compilion, votre utilisateur modifiera votre programme, la compilez, enregistrez l`exécutable résultant quelque part et exécutez-le.
  • Image intitulée Créer une langue de programmation Étape 9
    9. Écrivez le scanner et l`analyseur avant d`extrémité ou trouvez un outil qui vous aide à vous.
  • Réfléchissez également à la manière dont votre compilateur / interprète fera avertir votre utilisateur sur des programmes erronés et des erreurs de syntaxe.
  • Image intitulée Créer une langue de programmation Étape 10
    dix. Utilisez les informations d`analyse pour écrire le code d`objet ou une représentation intermédiaire. Demandez à l`analyseur créer une AST, puis créez votre code d`objet à partir de l`AST à l`aide de trois types d`adresses ou de son Big Brother SSA, puis créez une table de symboles pour définir vos fonctions, Variables globales, etc.
  • De plus, en fonction de votre langue, vous pouvez également créer des tables de pointeur virtuels ou des tableaux d`information pour vos classes (afin de supporter la réflexion ou la RTTI).
  • Image intitulée Créer une langue de programmation Étape 11
    11. Ecrivez l`exécuteur ou le générateur de code qui liera tout ensemble.
  • Image intitulée Créer une langue de programmation étape 12
    12. Écrivez de nombreux programmes de test pour tester la langue.
  • Vous souhaitez créer des programmes qui soulignent les charges de votre grammaire formelle afin de constater que votre compilateur accepte tout ce qui se trouve dans votre définition et rejette tout ce qui est en dehors de celui-ci.
  • Image intitulée Créer une langue de programmation Étape 13
    13. Considérez comment l`utilisateur déboquera ses propres programmes.
  • Image intitulée Créer une langue de programmation Étape 14
    14. Si votre langue utilise une bibliothèque standard, vous voudrez l`écrire. Avec un collecteur ordures ou d`autres fonctionnalités d`exécution si vous en avez besoin.
  • Spécifiquement, si vous écrivez un compilateur, vous aurez besoin du code que le système d`exploitation sera exécuté afin de commencer à exécuter le code d`utilisateur (par exemple, affectation de toutes les variables globales).
  • Image intitulée Créer une langue de programmation Étape 15
    15. Publier votre langue, ainsi que les spécifications pour cela et quelques exemples de ce que vous pouvez faire.
  • N`oubliez pas de documenter la manière dont vous pouvez intégrer avec les bibliothèques, les langues et les moyens d`utiliser les fonctionnalités d`exécution et / ou la bibliothèque standard.
  • Vidéo

    En utilisant ce service, certaines informations peuvent être partagées avec YouTube.

    Conseils

    Commencez par concevoir votre langue et n`écrivez aucun code, jusqu`à ce que vous soyez satisfait et que vous avez répondu à tous (ou la plupart) des questions ou des problèmes liés à votre conception car il est plus facile de modifier la conception plus tôt que la plus tard.
  • Connaissez votre plate-forme cible (système d`exploitation et bibliothèques) pour votre compilateur / interprète, après tout, vous allez l`utiliser et le manipuler.
  • Mises en garde

    Pensez si vous avez vraiment besoin d`une nouvelle langue et que votre langue n`a de nouveau que d`autres langues n`a pas (il peut s`agir d`une combinaison de fonctionnalités ou d`une seule fonctionnalité).
  • Les langages d`écriture sont difficiles si vous ne savez pas ce que vous faites. Il faut beaucoup de pratique aussi.
  • Préparez-vous à passer du temps dans la conception de la langue, car vous n`aurez aucune chance de changer votre langue une fois que vous avez écrit le compilateur et au-delà du point de conception.
  • N`essayez pas de baser vos fonctionnalités dans une union de plusieurs langues, comme indiquant que votre langue sera une union de langue x, langue y et langue z. L`histoire nous a montré que les langues créées de manière à ne jamais trouver de succès, ou tout le monde serait la programmation PL / 1 au lieu de quelque chose basé sur c.
  • Choses que vous aurez besoin

    • La patience.
    • Connaissances sur les caractéristiques linguistiques et la conception de la langue (vous voudrez peut-être lire des concepts de conception de la langue de programmation de David A. Watt).
    • Connaissance de la théorie du compilateur (puisque vous allez écrire un compilateur / interprète pour votre langue et votre mise en œuvre sera la mise en œuvre de la référence).
    • Utilisations pour votre langue (rappelez-vous que certaines des langues les plus utilisées comme c ou LISP ont été créées afin de faire quelque chose de spécifique comme création d`unix ou de calcul symbolique).
    Articles connexes