» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

没人转吗,算是华为官方对方舟编译器的说明

posted by wap, platform: 小米
引用:
原帖由 @Tobar  于 2019-8-8 18:50 发表
Posted by Xiaomi MIX 2S
前面一大堆现状介绍都是从专业文章里面抄的,后面介绍华为的就没有任何实质性的内容

1。大数据编译器动态语义分析,编译时怎么进行动态语义分析?代码都没跑起来,是不是从哪里抄来的内容混到一起了

2。内存回收引用计数法和环消除算法,前面说华为编译器不用gc,这里又说华为破天荒用了gc里面著名的算法。还真是破天荒,java早就不用引用计数法了,而是用可达性算法(天生不存在环引用问题),华为这是开倒车?


感觉这文章就是东抄西抄凑合了一大堆文字出来,然后尬吹牛逼,这绝对不是华为官方提供的文章
有同感,涉及关键问题基本一句不提。
java代码直接变成机器码,指令集不一样怎么办?
难不成针对每套指令集做一套后端?这成本也太高了。
等源码出来再看。


TOP

posted by wap, platform: 小米
引用:
原帖由 @卖哥  于 2019-8-8 21:32 发表
就是每套指令集做一套后端

三段式编译
高等程序语言中间码可执行代码
不同的高等语言用对应的解释器转化成中间码
而不同的指令集用对应优化器生成最终可执行代码

方舟按照之前的描述,主要改动有两个,一个是前端支持混合编译,而且混的相当彻底,把java自带机制都砸了;
另一个就是软件开发者以中间码提交,这本身按照三段式编译来说是不难的,但是现实没那么美好,本来三段式都在本地进行,那么调试还是比较便利的,但是递交发行那后端优化就脱离源代码了呀。除非真的做到单一环境下通过即可编译到其他指令集其他优化配置不需调试,那就非常黑科技,真做到可以说解决了编译这件事的万年毒瘤,怎么吹都不过分。
真要是这样,这工作量确实无法想象
光前端就很麻烦了,这中间代码得复杂成什么样
另外这种做法不知道会不会影响java的一些特殊特性,比如反射之类



TOP

从软件行业从业人员的角度来说这个事。这个事在软件行业是编译原理方向,这个方向很成熟,但也很少有人懂的很深。因为一般没需求。

所以,这个方向如果有新东西出来,一般都是很nb的。

稍微往细里说一点,听起来源代码编成IR再编成机器码,逻辑挺清楚的。但实际上不是那么简单。因为java的动态特性,代码在运行期是可以修改自身的。这是java的nb之处。我对编译原理的理解也有限,不知道IR能不能做到这一点。

说实话,我觉得华为支持的“java编译成机器码”,这里的java不是完整的java,而是java语言的子集。假如真的是这样,即使只是java子集,也是很nb的想法。不过这样就有可能会出现这几种情况:1. 部分应用无法编译;2. 部分应用编译后不能正常运行; 3. 部分应用需要特定修改以绕开编译器缺陷。而这几种情况,会严重影响编译器的推广。

而且,我曾经看过“很吓人的GPU Turbo"的详细分析,https://zhuanlan.zhihu.com/p/43887961 ,华为在技术营销方面是有前科的,也就是过份夸大自己的技术优势,而选择性忽略技术的缺陷。

所以,我觉得,只能等着时间和源码来证明华为到底做了些什么吧。


TOP

发新话题
     
官方公众号及微博