Возможно ли встраивание кода в html для статически типизированного языка JIT?
Можно ли спроектировать JIT-язык со статической типизацией для создания веб-фреймворка, такого как Ruby on Rails, чтобы получить скорость статически типизированного языка?
Встроенный Ruby (eRuby) в html - это особенность Ruby on Rails, которую я не вижу очевидного способа реализовать на статически типизированном или откомпилированном языке JIT.
Я не знаком с внутренними компонентами реализации Ruby on Rails, но в более широком смысле существуют ли другие функции Ruby on Rails, которые было бы очень трудно реализовать в статически типизированном JIT-компилируемом или скомпилированном языке?
1 ответ
Конечно. Он не обязательно достигнет того, чего вы хотите (динамическая типизация - лишь одна из многих вещей, которые усложняют оптимизацию, "быстрые" языки, которые вы знаете, делают множество компромиссов помимо статической типизации для достижения этой производительности), но это вполне возможно. На самом деле, это делается. ASP.NET MVC уже давно имеет движок Razor, который имеет статически типизированный язык шаблонов. Несколько ограничений по сравнению с C#/VB.NET (например, я не думаю, что вы можете объявлять классы) являются проектными решениями, а не техническими проблемами. По сути, все, что вам нужно сделать, это проанализировать шаблон, отделить (например) HTML от кода и сгенерировать код, который выводит строки, которые должны быть выведены в соответствии с шаблоном.
Сейчас Ruby on Rails активно использует динамические возможности Ruby. В то время как многие "статически типизированные" языки имеют функцию отражения, которая может достичь чего-то похожего (хотя и гораздо более многословного), а другие конструкции метапрограммирования могут быть набраны просто отлично, я сомневаюсь, что вы могли бы просто перенести RoR для запуска обычного статически типизированного языка, особенно если вы хотите, чтобы конечный результат был где угодно, как удобно. Вероятно, лучше создать новый фреймворк, вдохновленный уже существующими. И это уже сделано. Тысячи раз. По языку.