2012-12-07 1 views
0

Serait-il possible de concevoir un langage JIT'ed typé statiquement pour construire un framework Web comme Ruby on Rails, une tentative pour gagner la vitesse d'un langage typé statiquement?Code intégré en html pour un langage JIT'ed typé statiquement possible?

Ruby incorporé (eRuby) en html est une caractéristique de Ruby on Rails que je ne vois pas de façon évidente de mettre en œuvre dans un langage JIT'ed ou compilé statiquement typé.

Je ne suis pas familier avec les implémentations internes de Ruby on Rails, mais plus généralement existe-t-il d'autres fonctionnalités de Ruby on Rails qui seraient très difficiles à implémenter dans un langage JIT'ed ou compilé?

Répondre

0

Bien sûr. Cela ne va pas nécessairement réaliser ce que vous voulez (le typage dynamique n'est qu'une des nombreuses choses qui rendent les optimisations plus dures, les langages "rapides" que vous connaissez font de nombreux compromis à côté de la typage statique pour atteindre cette performance). En fait, c'est fait. ASP.NET MVC a eu le moteur de vue Razor depuis un certain temps maintenant, qui comporte un langage de modèle statiquement typé. Les quelques restrictions par rapport à C#/VB.NET (par exemple, je ne pense pas que vous pouvez déclarer des classes) sont des décisions de conception, pas des problèmes techniques. Fondamentalement, tout ce que vous devez faire est d'analyser le modèle, de séparer (par exemple) le code HTML du code et de générer du code qui génère les chaînes qui doivent être éditées en fonction du modèle. Maintenant, Ruby on Rails utilise spécifiquement les fonctionnalités dynamiques de Ruby. Alors que beaucoup de langages "statiquement typés" disposent d'une réflexion qui peut aboutir à quelque chose de similaire (bien que beaucoup plus verbeux), et d'autres constructions de métaprogrammation peuvent être très bien typées, je doute que vous puissiez simplement porter RoR à un run du langage statiquement typé, en particulier Si vous voulez que le résultat final soit aussi pratique que ce soit. Il est probablement préférable de créer un nouveau cadre inspiré des cadres existants. Et cela a déjà été fait. Un millier de fois. Par langue.

+0

Comment ce moteur de vue Razor pour ASP.NET MVC exécute-t-il du code incorporé en html pour un langage compilé? Il ne peut pas simplement insérer du code dans le binaire déjà compilé. – user782220

+0

Je suis flou sur l'implémentation réelle, mais deux options sont: (1) Sortie C# (ou peu importe) au début de la construction, et compilez-la comme n'importe quel autre fichier source. (2) Générer un assembly séparé (éventuellement en le fusionnant avec le "réel", ou le charger dynamiquement au moment de l'exécution lorsque le template est demandé). – delnan

Questions connexes