Je pense à éventuellement concevoir/construire un langage à un moment donné, et quels sont les avantages, les inconvénients et les difficultés de l'écrire pour fonctionner sur le. Cadre NET/CLR?avantages, les inconvénients et les difficultés d'écriture d'une langue à utiliser .NET
Répondre
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 nouveauxSystem.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.
Wow c'est une bonne réponse! – RCIX
- 1. Quels sont les avantages et les inconvénients de l'utilisation d'OpenID?
- 2. Quels sont les avantages et les inconvénients d'avoir plusieurs héritages?
- 3. Avantages et inconvénients de DotNetNuke?
- 4. Quels sont les avantages/inconvénients de py2exe
- 5. Haskell newbie: utiliser la mise en page ou pas? Quels sont les avantages et les inconvénients (utiliser des exemples)
- 6. Avantages et inconvénients de DFC et DFS?
- 7. Web Service Security: Quels sont les avantages et les inconvénients de WSE3.0 et WCF?
- 8. dactylographié par rapport à dactylographié rigoureusement quels sont les avantages et les inconvénients
- 9. Utilisation de WebServiceHostFactory Avantages et inconvénients
- 10. PHP sur IIS7 et Windows Server 2008 - Avantages et inconvénients
- 11. Quels sont les avantages et les inconvénients d'utiliser des téléphones iPhone/Android pour écrire des scripts?
- 12. Quels sont les avantages et les inconvénients du service Msmqdistributor de Enterprise Library?
- 13. Besoin de savoir les avantages et les inconvénients de l'utilisation de RAMDirectory
- 14. Avantages et inconvénients de passer à IIS 7, Windows Server 2008 pour les services WCF
- 15. Quels sont les avantages/inconvénients de l'utilisation d'un CTE?
- 16. Quels sont les avantages et les inconvénients de LinkedHashMaps vs. LinkedHashSets?
- 17. Quels sont les avantages et les inconvénients de l'utilisation d'un «index partiel»?
- 18. Quels sont les avantages et les inconvénients des différents types de champs date/heure dans MySQL?
- 19. Quels sont les avantages et les inconvénients de l'utilisation du pattern Front Controller?
- 20. Avantages et inconvénients du moteur de stockage d'archives MySQL?
- 21. Avantages et inconvénients des différents types de chaînes en C++
- 22. Quels sont les avantages et les inconvénients de l'utilisation de RMI ou JMS entre les niveaux Web et métier?
- 23. Quels sont les avantages/inconvénients de la liste générique (de type) et des collections
- 24. DSL vs appels de méthode: avantages et inconvénients
- 25. Midlet v/s Téléphone Navigateur app avantages et inconvénients?
- 26. Avantages et inconvénients des événements de base de données
- 27. Avantages et inconvénients du langage de balisage pour l'interface utilisateur
- 28. php .tpl système de gestion de contenu - avantages et inconvénients
- 29. Est-ce que quelqu'un pourrait énumérer les frameworks/bibliothèques javascript communs et les avantages/inconvénients de chacun?
- 30. EagerReadDerivation: équilibrer les avantages et les coûts
C'est une assez grande commande! – womp