【问题标题】:Embedded code in html for a statically typed JIT'ed language possible?用于静态类型 JIT 语言的 html 中的嵌入代码可能吗?
【发布时间】:2012-11-25 07:15:45
【问题描述】:

是否有可能设计一种静态类型的 JIT 语言来构建像 Ruby on Rails 这样的 Web 框架,以尝试获得静态类型语言的速度?

在 html 中嵌入 Ruby (eRuby) 是 Ruby on Rails 的一项功能,我看不到在静态类型的 JIT 或编译语言中实现的明显方法。

我不熟悉 Ruby on Rails 实现的内部结构,但更一般地说,Ruby on Rails 是否还有其他功能很难用静态类型的 JIT 或编译语言实现?

【问题讨论】:

    标签: ruby-on-rails jit eruby


    【解决方案1】:

    当然。它不一定能实现您想要的(动态类型只是使优化更难的许多事情之一,您所知道的“快速”语言在静态类型之外进行了许多权衡以实现该性能),但这是完全可能的。事实上,它正在完成。 ASP.NET MVC 拥有 Razor 视图引擎已经有一段时间了,它具有静态类型的模板语言。与 C#/VB.NET 相比,少数限制(例如,我认为您不能声明类)是设计决策,而不是技术问题。基本上,你需要做的就是解析模板,从代码中分离(例如)HTML,并生成代码来输出应该根据模板输出的字符串。

    现在,Ruby on Rails 大量使用了 Ruby 的动态特性。虽然许多“静态类型”语言确实具有反射功能,可以实现类似的东西(尽管更冗长),并且其他元编程结构可以很好地输入,但我怀疑你可以简单地将 RoR 移植到运行静态类型语言,尤其是如果您希望最终结果在任何地方都方便。受现有框架的启发,创建一个新框架可能会更好。这已经完成了。一千次。每种语言。

    【讨论】:

    • 这个用于 ASP.NET MVC 的 Razor 视图引擎如何为编译语言执行嵌入在 html 中的代码?它不能只是简单地将代码插入到已编译的二进制文件中。
    • 我对实际的实现很模糊,但有两个选择:(1) 在构建的早期输出 C#(或其他),并像任何其他源文件一样编译它。 (2) 生成一个单独的程序集(可能然后将其与“真实”程序集合并,或者在请求模板时在运行时动态加载它)。
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多