Développer un langage de programmation

Beaucoup de gens ont des problèmes ou des frustrations avec les langages de programmation qu`ils utilisent tous les jours. Certains souhaitent que les choses soient traitées de manière plus abstraite, tandis que d`autres détestent la mise en œuvre de fonctionnalités qui devraient être « standard ». Que vous soyez un professionnel de l`informatique ou simplement un amateur, vous souhaiterez souvent pouvoir créer un nouveau langage de programmation.

Pas

Image intitulée Créer un langage de programmation Étape 1
1. Familiarisez-vous avec la technologie. Vous ne pouvez pas développer un langage de programmation si vous ne savez pas utiliser un ordinateur.
Image intitulée Créer un langage de programmation Étape 2
2. Familiarisez-vous avec la terminologie. Les rédacteurs de compilateurs utilisent souvent une terminologie inconnue. En savoir plus sur les compilateurs avant de continuer. Assurez-vous de savoir tout ce que vous devez savoir.
Image intitulée Créer un langage de programmation Étape 3
3. Décidez du problème que votre langue doit résoudre. Le problème est-il que le langage va s`attaquer à un domaine spécifique, ou le langage devrait-il être adapté à toutes sortes d`applications?
Image intitulée Créer un langage de programmation Étape 4
4. Réfléchissez à la sémantique de votre langage et à ses concepts.
  • L`accès direct au pointeur est-il possible ou non?
  • Quels sont les types de données de votre langue?
  • Est-ce un langage statique ou dynamique?
  • Quel est votre modèle de mémoire? Utilisez-vous un ramasse-miettes ou une gestion manuelle de la mémoire? (Si vous utilisez un ramasse-miettes, gardez à l`esprit que vous devrez en écrire un ou en adapter un existant à votre langage de programmation.)
  • Comment allez-vous gérer la concurrence? Utilisez-vous un modèle de filetage/verrouillage simple ou quelque chose de plus complexe comme Linda ou le modèle « acteur »? (Parce que les ordinateurs d`aujourd`hui ont plusieurs processeurs.)
  • Y a-t-il des fonctions simples intégrées dans le langage ou tout provient d`une bibliothèque?
  • Quel est le paradigme ou quels sont les paradigmes de votre langage de programmation? Fonctionnel? Orienté objet? Prototype (comme JavaScript)? Orienté aspect? Orienté modèle? Ou quelque chose de complètement nouveau?
  • Comment votre langage communique-t-il avec les bibliothèques et langages existants (principalement C)? Ce point est important si vous développez un langage spécifique à un domaine.
  • En fin de compte, certaines de ces questions trouveront une réponse dans la deuxième étape et vous devrez répondre à l`étape suivante.
    Image intitulée Créer un langage de programmation Étape 5
  • 5. Pensez à des tâches spécifiques que quelqu`un aimerait pouvoir effectuer avec votre langue. Par exemple : faire suivre une certaine trajectoire à un robot, ou développer des programmes de bureau ou des applications Web relativement portables.
    Image intitulée Créer un langage de programmation Étape 6
    6. Expérimentez avec des idées de syntaxe (le texte du langage) pour les exemples ci-dessus.
    Assurez-vous de garder votre langue dans la catégorie des langues indépendantes du contexte, ou quelque chose dans cette catégorie. Votre générateur d`analyseur syntaxique et vous en serez reconnaissant à la fin.
    Image intitulée Créer un langage de programmation Étape 7
    sept. Écrire une grammaire formelle pour la syntaxe.
    Image intitulée Créer un langage de programmation Étape 8
    8. Décider d`interpréter ou de compiler le langage. Cela signifie qu`avec un programme interprété, l`utilisateur éditera un programme dans un éditeur, puis l`exécutera directement depuis l`interpréteur ; si le programme est compilé, l`utilisateur écrira le programme dans un éditeur, le compilera, enregistrera l`exécutable résultant quelque part, puis l`exécutera.
    Image intitulée Créer un langage de programmation Étape 9
    9. Écrivez le scanner et l`analyseur frontal ou trouvez un outil qui peut vous aider avec cela.
    Pensez également à la façon dont vous avertirez les utilisateurs du compilateur/interprète des erreurs de programme et des erreurs de syntaxe.
    Image intitulée Créer un langage de programmation Étape 10
    dix. Utiliser les données de l`analyseur pour écrire le code objet, ou pour une représentation préliminaire. Laissez l`analyseur créer AST et créez votre code objet à partir de l`AST en utilisant « trois codes d`adresse » ou son grand frère SSA, puis créez une table de symboles pour définir vos fonctions, variables globales, etc.
    Selon votre langue, vous pouvez également vouloir créer des tables de pointeurs virtuels ou des tables de données pour vos classes (pour prendre en charge la réflexion ou RTTI).
    Image intitulée Créer un langage de programmation Étape 11
    11. Écrivez l`exécuteur ou le générateur de code qui rassemble tout.
    Image intitulée Créer un langage de programmation Étape 12
    12. Écrire de nombreux programmes de test pour tester votre langue.
    Surtout, écrivez des programmes qui remettent en question la grammaire formelle de votre langage pour vous assurer que votre compilateur accepte tout ce qui correspond à votre définition et rejette tout ce qui n`en relève pas.
    Image intitulée Créer un langage de programmation Étape 13
    13. Considérez comment l`utilisateur déboguera ses propres programmes.
    Image intitulée Créer un langage de programmation Étape 14
    14. Si votre langage utilise une bibliothèque standard, vous devrez l`écrire. Avec un ramasse-miettes ou d`autres fonctions d`exécution, si vous en avez besoin.
    Surtout si vous écrivez un compilateur, vous avez besoin du code qui exécute le système d`exploitation pour exécuter le code utilisateur (par ex.: affectation de toutes les variables globales).
    Image intitulée Créer un langage de programmation Étape 15
    15. Publiez votre langue, avec sa spécification et quelques exemples de ce que vous pouvez en faire.
    N`oubliez pas la documentation pour l`intégration avec les bibliothèques existantes, les langages et comment utiliser les fonctions d`exécution et/ou la bibliothèque par défaut.

    Des astuces

    • Commencez à concevoir votre langage sans écrire de code, jusqu`à ce que vous soyez satisfait et que vous ayez répondu à toutes (ou à la plupart) des questions ou problèmes associés à votre conception, car il est plus facile de modifier la conception au début, puis à un stade ultérieur.
    • Connaissez votre plate-forme cible (OS et bibliothèques) pour votre compilateur/interprète, car vous les utiliserez et les manipulerez.

    Mises en garde

    • Demandez-vous si vous avez vraiment besoin d`une nouvelle langue et quelles sont les nouveautés de votre langue que les autres langues n`ont pas (il peut s`agir d`une combinaison de fonctionnalités ou d`une seule fonctionnalité).
    • Vous devrez passer du temps sur la conception du langage car vous n`aurez pas la possibilité de changer de langue après avoir écrit le compilateur et dépassé la phase de conception.
    • Écrire un langage de programmation est difficile si vous ne savez pas ce que vous faites. Il faut aussi beaucoup de pratique.
    • N`essayez pas de mélanger les fonctions de différentes langues, comme une langue en tant que combinaison des langues X, Y et Z. L`histoire nous dit que les langages créés de cette manière ne réussissent jamais, sinon tout le monde programmerait en PL/1 au lieu de quelque chose basé sur C.

    Nécessités

    • Patience.
    • Connaissance des fonctions du langage et de la conception du langage (lire éventuellement Programming Language Design Concepts par David A. watts).
    • Connaissance de la théorie du compilateur (car vous allez écrire un compilateur/interprète pour votre langage et votre implémentation sera l`implémentation de référence).
    • Utilisations utiles pour votre langage (sachez que certains des langages les plus couramment utilisés, tels que C ou Lisp, ont été créés pour faire quelque chose de spécifique, comme créer Unix ou faire des calculs symboliques).

    Оцените, пожалуйста статью