2009-08-12 5 views

Répondre

21

Le plus difficile sera de concevoir un langage de programmation efficace. Beaucoup de gens ont consacré leur carrière entière à la tâche. Comme il y a eu beaucoup de questions sur la conception du langage et les questions d'analyse générale, je vais me concentrer spécifiquement sur l'aspect du ciblage du CLR.

Avantages

  • code octet Génération sous forme binaire est assez simple en utilisant l'espace de noms System.Reflection.Emit et les nouveaux System.Linq.Expressions impressionnants capacités dans .NET 4.0. Cette configuration est l'une des principales motivations dans mon désir personnel de cibler le CLR.
  • Votre code bénéficiera de nombreuses optimisations intégrées au JIT et au gestionnaire de mémoire du CLR.
  • En général, vous pouvez créer un compilateur de travail pour votre langue en moins de temps si vous choisissez de cibler le CLR plutôt que de créer votre propre code natif.

Inconvénients

  • Il ne fera que sur les plates-formes exécutent le framework .NET est exécuté. Si vous évitez les appels P/Invoke, cela ne devrait pas être le problème avec l'aide du projet Mono.
  • Vous devrez inférieur les constructions sémantiques dans votre langue à une forme représentable dans les instructions CIL et le modèle d'objet CLI. Pour les langages procéduraux, fortement typés, éventuellement orientés objet, c'est plutôt simple. Pour les langues fonctionnelles ou typées dynamiquement, cela peut être un véritable défi, mais vous pouvez obtenir de l'aide du DLR si vous avez besoin de ces fonctionnalités.
  • En général, vous n'avez pas un accès pratique aux fonctions intrinsèques de la machine, donc pour un langage ciblant l'informatique scientifique haute performance/vectorisée, vous pouvez rencontrer des problèmes de performances avec les implémentations actuelles. Mono travaille activement sur le problème, mais ni Mono ni le .NET Framework ne le considèrent comme une «technologie établie».

Difficultés (sans compter le front-end de langue et compilateur)

  • aspect le plus « intéressant » est la pose de votre méthode d'expression des constructions sémantiques de votre langue sous les restrictions du CLR.
  • Il n'y a pas beaucoup plus à dire ici. Comparé à d'autres cibles, il est assez facile de cibler le CLR.

Résumé

La CLI est une excellente option pour les personnes travaillant sur de nouvelles implémentations linguistiques. Cela vous permet de vous éloigner du back-end commun du compilateur et de vous concentrer sur la sémantique du langage lui-même. Je ne peux pas recommander quelqu'un créer une nouvelle langue, mais si vous décidez de, la CLI sera un bon ami sur votre voyage.

+0

Wow c'est une bonne réponse! – RCIX

Questions connexes