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 les fonctionnalités d'implémentation qu'ils souhaitent être «standard». Que vous soyez un informaticien ou un simple amateur, vous voudrez souvent créer un nouveau langage de programmation.
Pas
- 1 Se familiariser avec la technologie. Vous ne pouvez pas créer un langage de programmation si vous ne savez pas utiliser un ordinateur.
- 2 Se familiariser avec la terminologie. Les auteurs de compilateurs utilisent souvent une terminologie peu familière. Lisez les compilateurs avant de continuer. Assurez-vous de connaître tout ce que vous devez savoir.
- 3 Décidez quel problème votre langue est en train de résoudre. S'agit-il d'un problème spécifique à un domaine ou s'agit-il d'un langage général?
- 4 Pensez à la sémantique de votre langue et à ses concepts.
- Allez-vous autoriser ou non l'accès direct au pointeur?
- 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 dans votre langue.)
- Comment allez-vous gérer la concurrence? Allez-vous utiliser un modèle simple de filetage / verrouillage ou quelque chose de plus complexe comme Linda ou le modèle d'acteur? (Depuis les ordinateurs actuels ont plusieurs cœurs.)
- Y a-t-il des fonctions primitives intégrées dans la langue ou tout viendra-t-il d'une bibliothèque?
- Quel est le paradigme ou les paradigmes de votre langue? Fonctionnel? Orienté objet? Prototype (comme JavaScript)? Orienté vers l'aspect Orienté modèle? Ou quelque chose de complètement nouveau?
- Comment votre langue va-t-elle interagir avec les bibliothèques et les langages existants (principalement C)? Ce point est important si vous créez un langage spécifique à un domaine.
- Enfin, certaines des réponses à ces questions seront traitées à la deuxième étape et vous aideront à répondre à la prochaine étape.
- 5 Pensez à certaines tâches spécifiques que quelqu'un voudrait pouvoir effectuer 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 ce programme».
- 6 Expérimentez avec des idées de syntaxe (le texte du langage) pour les exemples ci-dessus.
- Veillez à conserver votre langue dans la catégorie de langue sans contexte ou à l'intérieur de celle-ci. Votre générateur de parseurs et vous l'apprécierez plus tard.
- 7Ecrivez une grammaire formelle pour la syntaxe.
- 8 Décidez si la langue sera interprétée ou compilée. Ce qui signifie que dans le monde interprété, votre utilisateur modifie généralement votre programme dans un éditeur et l'exécute directement sur l'interpréteur. alors que dans le monde de la compilation, votre utilisateur va éditer votre programme, le compiler, enregistrer le fichier exécutable résultant quelque part et l'exécuter.
- 9 Ecrivez le scanner frontal et l’analyseur ou trouvez un outil qui vous aide.
- Pensez également à la manière dont votre compilateur / interprète avertira votre utilisateur des programmes erronés et des erreurs de syntaxe.
- 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 un code à trois adresses ou son grand frère 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 pointeurs virtuels ou des tables d'informations pour vos classes (afin de prendre en charge la réflexion ou les informations RTTI).
- 11Ecrivez l'exécuteur ou le générateur de code qui liera tout ensemble.
- 12 Ecrire de nombreux programmes de test pour tester la langue.
- Vous voulez créer des programmes qui soulignent le poids de votre grammaire formelle afin de voir que votre compilateur accepte tout ce qui se trouve dans votre définition et rejette tout ce qui est en dehors de celui-ci.
- 13Considérez comment l'utilisateur va déboguer ses propres programmes.
- 14 Si votre langue 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 pouvoir exécuter le code utilisateur (par exemple, allouer toutes les variables globales).
- 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 existantes, les langages et comment utiliser les fonctionnalités d'exécution et / ou la bibliothèque standard.
Facebook
Twitter
Google+