【发布时间】:2017-06-10 23:22:03
【问题描述】:
我现在正在学习一些 Typed Racket,我有一个哲学上的困境:
Racket 声称是一种语言开发框架,Typed Racket 就是在它之上实现的一种语言。文档提到,由于使用了类型,编译器现在可以进行更多/更好的优化。
具体问题:
这些优化发生在哪里?
1) 在编译/扩展部分(作为语言构建框架的一部分“可编程”)
-或-
2) 在(字节码)优化器(它是用 C 语言编写的,不能通过框架直接修改)中更进一步。
如果 2) 为真,这是否意味着类型信息在编译/扩展阶段之后丢失,随后由优化器“重建/猜测”,或者中间表示已更改为适应类型信息并通知后续阶段关于他们?
我问这个特定问题的原因是因为我想了解 Racket 语言框架的真正通用性,即对于静态类型语言也是可行的,而无需在后端进行任何修改,而类型系统只是一个前端的东西,而运行时的代码仍然是动态类型的(但当然是静态检查的)。
谢谢。
【问题讨论】:
标签: compiler-optimization typed-racket