Comment créer un langage de programmation : 15 étapes (avec images)

Table des matières:

Comment créer un langage de programmation : 15 étapes (avec images)
Comment créer un langage de programmation : 15 étapes (avec images)

Vidéo: Comment créer un langage de programmation : 15 étapes (avec images)

Vidéo: Comment créer un langage de programmation : 15 étapes (avec images)
Vidéo: Astuce Hardware : comment nettoyer les ventilateurs de son PC fixe ? Tutoriel 2024, Peut
Anonim

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 de manière plus abstraite, tandis que d'autres n'aiment pas implémenter des fonctionnalités qu'ils souhaitent être « standard ». Que vous soyez un professionnel de l'informatique ou simplement un amateur, vous souhaiterez souvent créer un nouveau langage de programmation.

Pas

Créer un langage de programmation Étape 1
Créer un langage de programmation Étape 1

Étape 1. Familiarisez-vous avec la technologie

Vous ne pouvez pas créer un langage de programmation si vous ne savez pas utiliser un ordinateur.

Créer un langage de programmation Étape 2
Créer un langage de programmation Étape 2

Étape 2. Familiarisez-vous avec la terminologie

Les rédacteurs de compilateurs utilisent souvent une terminologie inconnue. Renseignez-vous sur les compilateurs avant de continuer. Assurez-vous de savoir tout ce que vous devez savoir.

Créer un langage de programmation Étape 3
Créer un langage de programmation Étape 3

Étape 3. Décidez du problème que votre langue résout

S'adresse-t-il à un problème spécifique à un domaine ou s'agit-il d'un langage à usage général ?

Créer un langage de programmation Étape 4
Créer un langage de programmation Étape 4

Étape 4. Réfléchissez à la sémantique de votre langue et à ses concepts

  • Allez-vous autoriser l'accès direct au pointeur 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 ? Allez-vous utiliser un ramasse-miettes ou une gestion manuelle de la mémoire ? (Si vous utilisez un ramasse-miettes, préparez-vous à en écrire un ou adaptez-en un existant à votre langue.)
  • Comment allez-vous gérer la simultanéité? Allez-vous utiliser un modèle simple de threading/locking ou quelque chose de plus complexe comme Linda ou le modèle d'acteur ? (De nos jours, les ordinateurs ont plusieurs cœurs.)
  • Y a-t-il des fonctions primitives intégrées dans le langage ou tout viendra-t-il d'une bibliothèque ?
  • Quel est le ou les paradigmes de votre langue ? Fonctionnel? Orienté objet ? Prototype (comme JavaScript) ? Orienté aspect ? Orienté modèle ? Ou quelque chose d'entièrement nouveau ?
  • Comment votre langage va-t-il s'interfacer avec les bibliothèques et langages existants (principalement C) ? Ce point est important si vous construisez un langage spécifique à un domaine.
  • Enfin, certaines des réponses à ces questions trouveront une réponse dans la deuxième étape et vous aideront à répondre à l'étape suivante.
Créer un langage de programmation Étape 5
Créer un langage de programmation Étape 5

Étape 5. Pensez à certaines tâches spécifiques que quelqu'un voudrait pouvoir effectuer avec votre langue

Par exemple, « ils peuvent vouloir ordonner à un robot de 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 ».

Créer un langage de programmation Étape 6
Créer un langage de programmation Étape 6

Étape 6. Expérimentez avec des idées de syntaxe (le texte du langage) pour les exemples ci-dessus

Veillez à garder votre langue dans la catégorie des langues sans contexte ou quelque chose à l'intérieur. Votre générateur d'analyseur syntaxique et vous l'apprécierez plus tard

Créer un langage de programmation Étape 7
Créer un langage de programmation Étape 7

Étape 7. Écrivez une grammaire formelle pour la syntaxe

Créer un langage de programmation Étape 8
Créer un langage de programmation Étape 8

Étape 8. Décidez si le langage sera interprété ou compilé

Cela signifie que dans le monde interprété, votre utilisateur éditera généralement votre programme dans un éditeur et l'exécutera directement sur l'interpréteur; tandis que dans le monde compilé, votre utilisateur éditera votre programme, le compilera, enregistrera l'exécutable résultant quelque part et l'exécutera.

Créer un langage de programmation Étape 9
Créer un langage de programmation Étape 9

Étape 9. Écrivez le scanner et l'analyseur frontal ou trouvez un outil qui vous aide avec cela

Pensez également à la façon dont votre compilateur/interprète avertira votre utilisateur des programmes erronés et des erreurs de syntaxe

Créer un langage de programmation Étape 10
Créer un langage de programmation Étape 10

Étape 10. Utilisez les informations de l'analyseur pour écrire le code objet ou une représentation intermédiaire

Demandez à l'analyseur de créer un AST, puis 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.

De plus, selon votre langue, vous pouvez également vouloir créer des tables de pointeurs virtuels ou des tables d'informations pour vos classes (afin de prendre en charge la réflexion ou le RTTI)

Créer un langage de programmation Étape 11
Créer un langage de programmation Étape 11

Étape 11. Écrivez l'exécuteur ou le générateur de code qui liera tout ensemble

Créer un langage de programmation Étape 12
Créer un langage de programmation Étape 12

Étape 12. Écrivez de nombreux programmes de test pour tester la langue

Vous voulez créer des programmes qui mettent l'accent sur les charges de votre grammaire formelle afin de voir que votre compilateur accepte tout ce qui est à l'intérieur de votre définition et rejette tout ce qui est à l'extérieur

Créer un langage de programmation Étape 13
Créer un langage de programmation Étape 13

Étape 13. Considérez comment l'utilisateur déboguera ses propres programmes

Créer un langage de programmation Étape 14
Créer un langage de programmation Étape 14

Étape 14. Si votre langage utilise une bibliothèque standard, vous voudrez l'écrire

Avec un ramasse-miettes ou d'autres fonctionnalités d'exécution si vous en avez besoin.

Plus précisément, si vous écrivez un compilateur, vous aurez besoin du code que le système d'exploitation exécutera pour commencer à exécuter le code utilisateur (par exemple, allouer toutes les variables globales)

Créer un langage de programmation Étape 15
Créer un langage de programmation Étape 15

Étape 15. Publiez votre langue, ainsi que ses spécifications et quelques exemples de ce que vous pouvez y faire

N'oubliez pas de documenter comment vous pouvez intégrer les bibliothèques et langages existants et comment 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

Des astuces

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

Mises en garde

  • Pensez si vous avez vraiment besoin d'une nouvelle langue et de ce que votre langue a de nouveau que les autres langues n'ont pas (cela peut être une combinaison de fonctionnalités ou une seule fonctionnalité).
  • Écrire des langues est difficile si vous ne savez pas ce que vous faites. Cela demande aussi beaucoup de pratique.
  • Préparez-vous à passer du temps dans la conception de langage, car vous n'aurez pas la possibilité de changer de langage une fois que vous aurez écrit le compilateur et dépassé le point de conception.
  • N'essayez pas de baser vos fonctionnalités sur une union de plusieurs langues, par exemple en disant que votre langue sera une union de la langue X, de la langue Y et de la langue Z. L'histoire nous a montré que les langues créées de cette manière ne connaîtront jamais le succès, ou tout le monde programmerait PL/1 au lieu de quelque chose basé sur C.

Conseillé: