Source-to-source compiler 有啥用?
"Source-to-source"这个概念,认真来讲,是很模糊的;因为编译器本来就是“把一种语言变成另一种”的程序,本质上就是这样;令 你感到不解的,应该是,你常见的编译器,最后输出汇编(汇编码)或者可执行程序(机器码), 而突然有一个编译器输出了C代码你感到不习惯...但你仔细想想,其实他们都同样是“把一种语言变成另一种”而已;从这个角度讲,C在这里扮演的角色和很 多“传统”编译器中最后的机器码程序或者汇编码程序没什么不一样,不必感到不解;至于为什么它选择的target到C上,你提供的那个链接由于wikipedia反SOPA/PIPA运动我暂时看不到,不知道上面说了些什么;但我谈谈我的理解:其 实haskell的编译器,也是将haskell源码target到C上的,再调用C的编译器去做最后的编译;这么做的好处就是:不用为haskell在 每种硬件平台、每种操作系统都做一份编译器——因为C这种流行语言的编译器已经遍布各个平台和操作系统,haskell编译成C其实是图了方便、坐享其 成;其实在这里,C语言就扮演了早期汇编语言的角色——为编译器隔离各种平台相关性;另外,开个玩笑:从这个观点来看,把那些搞翻译的人叫做“自然语言编译器”也不错,搞同声传译的直接就是interpreter
■网友
广义上讲,所有的compiler 都是source to source的。狭义的讲,这样可以不用给很多语言在一些硬件上去构建新的编译器,只需要将其source to source到一个已经有编译器支持的语言就可以了。
■网友
kripken/ammo.js · GitHub
■网友
第一个c++的编译器就是这么来的
■网友
编译器的作用就是将一种语言编译成另一种可以在某个平台上运行的语言,这个平台并不局限于x86或者arm这种后端,也可以是其他支持源码的平台。比如mozilla的emscripten,就是将LLVM bitcode编译成为javascript,从而可以让一些应用在web平台上运行
推荐阅读
- 有啥方法,网站,项目可以自己练习计算广告学
- 100W——150W有啥好的车
- 最近有啥样的交友软件比较好玩呢
- 最近有啥好期待的网游玩
- 电子信息工程考研有啥偏软件类的专业可以报考
- 淘宝上有啥体验不错的假货,赝品或者山寨货?
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 端口到底是啥概念和ip之间有啥关系能形象+抽象的从技术角度描述一下吗
- QQ那个戴头盔吸烟的表情有啥来历
- 天猫买东西电话,家庭住址,姓名被泄露,阿里有啥措施
