首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果JVM语言编译过程有像Haskell这样的STG阶段,会发生什么变化?

如果JVM语言编译过程有像Haskell这样的STG阶段,会发生什么变化?
EN

Stack Overflow用户
提问于 2016-01-01 09:17:07
回答 1查看 227关注 0票数 3

我有个朋友说:

对我来说,Haskell最有趣的不是语言和类型。这是它背后的无刺无标记图片机。

因为哈斯克尔人总是在谈论类型,这句话引起了我的注意。现在我们可以查看Haskell编译过程像这样

  1. 解析
  2. 类型检查
  3. 去加林+几个转盘和钻头
  4. 翻译为核心
  5. 最大的优化份额
  6. STG语言翻译
  7. STG语言到C-
  8. C-装配或llvm

我们可以将其简化为:

  1. 。。前端的东西..。
  2. 将IL翻译成STG语言
  3. 将STG语言编译成C/ASM/LLVM/Javascript

Ie -在将Haskell编译到LLVM/C等之前,会有一种中间的“图形语言”被编译,并在此进行各种优化。

这与如下所示的JVM语言编译过程形成了对比:

  1. 将JVM语言代码转换为类中的Java字节码。
  2. 在Java虚拟机上运行字节码。

假设可以在Java编译过程中添加一个中间STG编译步骤,我想知道这个更改会产生什么影响?编译后的代码会发生什么变化?

(我知道,您需要一种纯函数式语言来最大限度地利用无刺无标记的图形机器,所以如果回答这个问题很有帮助,那么假设我们正在为弗雷格编译Haskell。)

我的问题是:如果JVM语言编译过程有像Haskell这样的STG阶段,那么会发生什么变化?

EN

回答 1

Stack Overflow用户

发布于 2016-01-01 09:48:57

您需要澄清您是指Java语言还是在JVM上运行的某种语言。

我对Java语言的了解仅限于阅读了规范,而我对您正在谈论的Haskell IR一无所知。然而,根据规范,Java是一种动态语言,执行任何使用每个结束类文件之外的任何信息的AOT xform都是非法的。

当然,不使用这些特性的项目可能会违反这些规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34554926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档