全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学道会
511 1
2019-08-08
0808华为编译器  尽力了 太专业
总结部分:
1.机器及软件的历史发展:0和1进制是机器的基础语言,最初是为了修正航海表而用的。20世纪30-40年代后续发展机电计算机和电子计算机,软件的发展就是如何将人类语言转化为机器的0和1的语言,也即编译器。先期出现汇编语言,然后再发生基于汇编语言的高级语言FORTRAN适合科学计算,ALOGOL适合事务处理,LISP适合人工智能计算,COBOL适合商业处理,这些高级语言仍旧适用于专业人才,随后BASIC语言为基础的C\\C++\\等编译语言,JAVA等预编译语言。高级编程语言、编译器、操作系统、数据库是软件行业的4类最重要的内容。
2.编译器的历史:
最早的编译器是Grace奶奶发明的A-0编译器。
第二个被大规模应用的编译器,则是和FORTRAN编程语言配套的FORTRAN编译器
windows使用CL编译器,LINUX使用GCC编译器,安卓最初使用JAVA目前加入JIT和AOT编译机制,IOS使用已由GCC编译器调为Clang + LLVM。
3.安卓的问题:自身必须使用编译器,所以使用JAVA时自带编译器,使用的内存过高,翻译过慢就加入JIT和AOT机制来解决问题;与其他语言相互转化需要硬件资源 ;为保证语言统一,优化空间压缩;占用内存过高时,全部停止JAVE程序。
4.华为的努力:解决了JAVA需要编译器的问题,自造编译系统。解决了安卓四个问题。如何解决?见下:

一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线
方舟编译器通过编译阶段和运行阶段的双向加持,将静态编译动态语义最大的两大难点一一解决:一是设计数据模型,二是如何在运行时高效获得动态信息。方舟编译器团队基本遍历了Java的动态语义,进行了大规模的数据建模。同时,大大提高了编译时动态语义分析的精度,特别是涉及跨语言调用时;另外,华为设计了一套具有核心专利的动态语义匹配机制,有效降低了运行时动态语义的开销。
方舟编译器采用了引用计数法(RC,Reference Counting)来进行内存的实时回收,并且配合使用了专门的消除环算法(消除对象互相引用带来的无法回收问题),来避免GC集中式回收带来的系统卡顿。相比GC,方舟的内存回收是实时的而非集中式的,且不需要暂停应用进程,这样便大大消除了卡
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-8-8 21:04:00
充实训练营作业奖!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群