Je ne pense pas que vous puissiez programmer sans créer un nouveau langage, il est donc bon de comprendre que c'est ce que vous faites et de comprendre les problèmes.
- Qu'est ce qu'une langue?
Vocabulaire, syntaxe et sémantique.
Un langage standard tel que VB, Java, C #, etc. n'est qu'un langage de base . Dès que vous ajoutez des classes, des méthodes, etc., vous avez ajouté du vocabulaire et de la sémantique. Il existe de nombreuses façons d'implémenter les langages: analyse et traduction, analyse et interprétation, macros superposées à un langage existant, ajout de classes et de méthodes à un langage existant.
- Que voulez-vous qu'une langue fasse?
Soyez bon pour exprimer des problèmes avec concision.
Comment savez-vous si vous avez fait cela? La mesure que j'utilise est le nombre de modifications . Si l'exigence d'une phrase A se présente, je procède à la mise en œuvre de l'exigence dans le code. Lorsque j'ai terminé et que tous les bogues ont été résolus, je vérifie le code et le référentiel de code me fournit une liste des modifications apportées, B. Plus le nombre B est petit, meilleur est le langage. En moyenne sur l’espace des besoins réels et possibles, cette mesure me dit à quel point la langue est "spécifique à un domaine".
- Pourquoi la concision est-elle bonne?
Parce que cela minimise les bugs.
S'il faut N changements de code pour implémenter 1 exigence et que vous faites parfois des erreurs, alors le nombre de bogues que vous introduisez est approximativement proportionnel à N. Dans la limite où N = 1, il est presque impossible d'introduire un bogue sans essayer.
Notez qu'il s'agit d'un défi direct au "gonflement du code" que nous voyons aujourd'hui.
ADDED: En réponse à votre demande d'exemple, voir l' exécution différentielle . Je ne dirai pas que cela peut être compris rapidement, mais cela réduit considérablement le code de l'interface utilisateur.