重磅!华为方舟编译器招募 2000 程序员!
作者 | 胡巍巍
出品 | 程序人生(ID:coder_life)
华为北京研究所的食堂,周末也好热闹!
9月7日,笔者到华为北研所,参加华为方舟编译器(以下简称“方舟”)的开源主题沙龙。
正赶上饭点,点了个安徽板面。
各个档口的师傅,热情招呼着。
“瓜哥凉面”的档口,还排起了队,要知道这可是周六!
看来华为的“不休息”,果然名非虚传。
OK~言归正传,来聊聊本次“方舟”开源沙龙。
沙龙合影
沙龙上,一位开发小哥哥,动情讲述了“方舟”的前世今生。
这不是挪亚的方舟,这是华为的方舟!
方舟,英文名叫“ark”,来源于《圣经》:一名叫做挪亚的男子,用歌斐木造船,船名叫“方舟”。
洪水来临时,挪亚让一家八口人、和各样动物的一对公母,上船躲避洪水、并让人类和动物得以繁衍后代。
华为把编译器起名“方舟”,笔者认为,拯救当下编译器的困境,一定是其初心之一。
事实上,华为做编译器,已有近10年历史。
2009年,华为首个编译器团队“方舟”成立,后来,很多国内外编译器人才,也陆续加入。
对于刚成立的“方舟”来说,一是解决华为产品的性能问题,再就是解决手写汇编问题。
当时,团队基于GCC(GNU Compiler Collection,GNU编译器套件),做了DSP(Demand-Side Platform,需求方平台)的编译器后端,这样就可以发挥整个DSP的性能优势。
2014年,“方舟”团队日渐葳蕤 ,一些著名教授和博士也开始加入。
Fred Chow便是团队中一位著名的华人教授,他还是Open64的鼻祖。
2015年,无线基站又面临一个问题,即在DSP编程时,很多人都是用手写汇编。而手写汇编存在的问题是:每一代芯片更新换代时,它都得去适配。
为解决该问题,“方舟”团队想出一个方法:将C语言和MATLAB结合起来,在C语言中加上MATLAB的数据类型和操作,最终形成CM语言。
这个定制语言,仿佛一个杠杆,为“方舟”省去大量开发工作。
在华为内部,各个部门会按照重要性来分级。最初,方舟编程语言实验室和编译团队,都是4级部门。
2016年,华为对编译器和编程语言,越来越看重,遂成立编译器与编程语言实验室。
2016年之后,华为手机卖得不错,但也遇到很多问题。
从那时开始,华为在思考,能否搞一个全新的编译器,来铲除产品痛点?
“被迫”诞生的“方舟”:没有粮?自己种!
正如神话传说中,每一个英雄的诞生,都是为了拯救而来。
“方舟”也不例外。
当时华为遇到的困局是:一般编译器,都是用虚拟机的运行方式。它的原始模式,是从Java转成DEX文件,然后在手机上安装,安装完之后,再进行运行安装。
但整个虚拟机,使用的是混合式执行模式,它在执行这个模式时,会不断地切换、并产生一些开销。为这个问题,华为内部讨论颇久。
很多人说,应该在现有虚拟机上改,还有另外一种方案,即华为另起炉灶,自己做一套能够执行Java的运行环境和编译器。
当时,很多人赞同走第一条路,因为第一条路最省事,投入也不大,还能快速看到效果。
但是,“方舟”团队认为,直接在虚拟机上改,只是治标不治本,华为可以优化GC(Garbage Collector,垃圾收集器),也可以优化JIT(Just In Time,准时制生产方式)。但这样无法彻底解决问题。
最终,华为亲自上!
据介绍,“方舟”前期工作耗时巨长,光是梳理MAPLE框架,就花费两年时间,而从IR(Intermediate Representation,中间语言)的设计、到整个编译器过程,从Demo到产品化,也需要时间。
一篇论文成为方舟编译器的“航海灯塔”
后来,Fred Chow教授的一篇论文,起到点石成金的作用。他在这篇论文中指出,IR应该具备的特征、以及好的IR“长啥样”......
Fred Chow这篇论文,让团队开始自问:“方舟”能不能做一个统一的IR,既支持多种语言表示,又能支持后端多种芯片代码指定生成?
答案是可以。日后来看,这篇论文,堪称“方舟”的指路灯塔。
在灯塔的指引下,“方舟”团队发现,基于MAPLE IR,可以做更复杂的优化、以及更广义的控制流分析。
而MAPLE IR能让开发者,看到更多程序信息,能给编译器提供更多优化机会。可以说,“方舟”的立项,既是华为的技术选择,也是华为的自我挑战。
后来的日子中,作为“水手”的“方舟”开发者们,卯足劲去研究LLVM等业界技术。
“方舟”往事:“小黑屋”噼里啪啦到天明
冰心曾说:“成功的花,人们只惊慕她现时的明艳!然而当初她的芽儿,浸透了奋斗的泪泉,洒遍了牺牲的血雨!”
2017年5月,“方舟”团队终于把Java程序的HelloWorld跑出来,这标志着,整个编译器框架开发完成!
沙龙现场,方舟编译器架构师讲述“方舟始末”
2017年12月,“方舟”团队在Android系统里,增加一个方舟MAPLE Zygote,目的是用于孵化方舟应用,即把Mygote的运行方式,换成“方舟”的运行方式。
这件事,则标志着“方舟”团队把整个Mygote程序从只能启动,做到可以运行起来,并且能够支持方舟计算器运行。
在此之间,“方舟”团队一行一行地调代码。为专心工作,工程师们在杭州方舟编译器的“小黑屋”里,没黑没夜大干一个月......
2018年春节,“方舟”团队把整个SystemServer(Android系统中的核心进程)运行起来。光SystemServer这个进程,就有500万行代码、180个服务!
后来,团队又历时半年多,进行调优、解Bug、和产品化......
2018年9月1日,方舟编译器开始商用!
“方舟”开源:听人劝,吃饱饭
开源之前,华为内部走访很多厂商和高校,请教“方舟”社区后续该如何发展,他们给出的意见,竟然惊人的一致——开源。
在沙龙现场演讲的小哥哥表示,“方舟”会持续开源,而开源是一个循序渐进的过程,他们内部还有很多代码,要整理和合规认证。
但,可以肯定的是,到2020年,“方舟”所有代码都会开源。
2019年,曾有记者问,任正非信奉的人生信条是什么?他只说四个字:合作共赢。
如果盘点2019年华为的关键词,开放,一定算一个。
这种开放,体现在任正非频繁接受采访,体现在鸿蒙OS和“方舟”的开源......
而本次举行的首场“方舟”开源沙龙,不过是“方舟”开放的起点。
它还有更伟大的征程:计划招募2000名左右的代码贡献者。
“方舟”希望贡献者做什么?
共建方舟IR
“方舟”IR的标准,还没有完全制定好。因为,不同的高级语言,有不同的特征,它们的的类型系统不一样、内存管理机制不一样,内存对象模型也不一样。
故此,“方舟”希望听取业界和学术界的意见,从而逐渐制定出标准。
共同开发多语言前端
目前,“方舟”只做Java,C++还在开发。JS等其他语言的开发,很缺少力量,所以亟需支援。
共同开发多芯片后端
当下,“方舟”内部只做出ARM64的后端,ARM32还在规划中。此外,可能还有一些厂家在用X86。因此,外部贡献者可以结合自己的芯片,做一些后端开发,也可以把“方舟”用在自家产品中(“方舟”官网:https://www.openarkcompiler.cn )。
后记
曾有记者问,下一个倒下的是不是华为?任正非说,一定是。
市面上,也有一本名为《下一个倒下的会不会是华为》的书籍。
别说下一个倒下的,会不会是华为,就连下一个倒下的,是不是我们自己,都很难说。
这是一个瞬息万变的世界,一朝繁华,一朝梦碎。
计划赶不上变化的年代,个人也好,公司也好,可以学学华为,把自己“开源”,该求助就求助,该合作就合作,众人拾柴火焰高,这是永恒不变的道理!
【END】
啃完python基础,你要这样做才行
https://edu.csdn.net/topic/python115?utm_source=csdn_bw
如何少走弯路,利用不同区块链的数据结构实现项目上链?
数据架构是区块链的重要组成部分,了解数据架构,可以让我们对于自身业务是否适合上链做出明智的判断。
9月19日,【dfuse小聚:区块链数据应用讨论会】将在上海举行,dfuse CTO&联合创始人、EOS加拿大联合创始人 Alex Bourget;慢雾科技合伙人兼安全产品负责人启富(Keywolf);MYKET联合创始人/EOS Cannon联合创始人Ricky胖哥,与你一起深度探索区块链应用搭建以及区块链数据结构的奥秘,让你明白到底你的业务该如何上链!长按下方二维码报名:
热 文 推 荐
难怪各家抢滩物联网!真实原因竟是……
不识 Pandas,纵是老手也枉然?
为什么我在实时编码时失败了?
☞2亿日活,日均千万级视频上传,快手推荐系统如何应对技术挑战?
☞Docker容器化部署Python应用
☞给面试官讲明白:一致性Hash的原理和实践
☞预警,CSW的50万枚尘封BTC即将重返市场?
☞她说:行!没事别嫁程序员!
你点的每个“在看”,我都认真当成了喜欢
重磅!华为方舟编译器招募 2000 程序员!相关推荐
- 华为方舟编译器招募 2000 人!
作者 | 胡巍巍 出品 | 程序人生(ID:coder_life) 华为北京研究所的食堂,好便宜! 9月7日,笔者到华为北研所,参加华为方舟编译器(以下简称"方舟")的开源主题沙龙 ...
- 华为方舟编译器开源!前华为人重磅解读!
[CSDN 编者按]8月31日,华为方舟编译器正式开源.据华为内部人士表示,华为员工为了这次开源,连续30小时没有合眼. 早在在8月9日的华为开发者大会上,华为消费者业务CEO余承东,就宣布将在8月底 ...
- 重磅:华为方舟编译器开源代码「正式发布」
loonggg 读完需要 2 分钟 速读仅需1分钟 就在今天,8 月份的最后一天,华为方舟编译器开源官网正式上线了. 本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR,Interme ...
- 谷歌art和华为方舟编译器_Google Art Project – Chrome扩展程序
谷歌art和华为方舟编译器 As my career progresses, I see more apps and services which try to invade my space. N ...
- 华为方舟编译器 PK 微软苹果谷歌编译器,到底谁胜出?
记者 | 胡巍巍 受访者 | 刘新铭 出品 | CSDN(ID:CSDNnews) 近日,华为方舟编译器终于正式开源,兑现了在2019年8月开源的承诺. 与此同时,其代码不在GitHub,而是在自家开 ...
- 万字长文详解华为方舟编译器的荣光和使命
本文由MO编辑部出品,文字超1万,查阅的资料多达上百万文字,并且与华为方舟编译器的专家做过深度访谈.其不仅解析了华为在编译器和手机系统方面做的多年准备,也向读者展现了波澜壮阔的软件产业发展史. 201 ...
- 华为方舟编译器PK微软苹果谷歌编译器,到底谁胜出?
记者 | 胡巍巍 受访者 | 刘新铭 来源 | CSDN(ID:CSDNnews) 近日,华为方舟编译器终于正式开源,兑现了在2019年8月开源的承诺. 与此同时,其代码不在GitHub,而是在自家开 ...
- 中国首个芯片大学最快于本月底在南京挂牌;华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条
整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...
- 支付宝澄清使用华为方舟编译器;三星苹果遭遇集体诉讼;PHP 7.4.0 beta4 发布 | 极客头条...
快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...
最新文章
- 秒杀系统架构解密与防刷设计 - 高可用架构系列
- 请教,一个解决方案中包含多个相互引用的项目,该如何配置?
- 鸿蒙安卓翻版,鸿蒙是PPT、翻版安卓?对于黑粉:鸿蒙要失败了还有谁能成功?...
- Missing artifact jdk.tools:jdk.tools:jar:1.6
- 自组织神经网络的实现
- LAN交换机自学习算法
- 申请Bing Search API
- phantomjs搭建输出js渲染后的html接口
- 微信在朋友圈强行置顶视频号直播分享,引网友疯狂吐槽:又丑又烦!
- MyBatis--工具类模板
- Microsoft SQL Server 2008 R2出现索引超出数组界限
- glibc源码下载在线阅读地址
- 新建销售群开场语句_销售会议开场白台词
- GSM网络识别参数-移动国家号(MCC)|移动网号(MNC)|位置区码(LAC)|小区识别(CI/cellid)...
- enovia PLM : add new value to SPEO
- 谈 DevOps 自动化时,也应该考虑到 SOX 等法案
- Unity 5.5.0f3发行说明
- 微信小程序(视图与逻辑)
- Not Shading英语翻译
- tcc275CAN报文发送多帧只发送一帧的原因
热门文章
- 2013年想学的东西。。。
- 嵌入式系统--ARM微处理器概述
- C++【EasyX】俄罗斯方块
- python not instance_Python检查类的实例
- 兼容超大图片的处理_N年都没弄明白!PS保存的图片格式都啥意思?
- 一师一优课转码工具_一师一优课流程详细整理
- Linux Shell编程笔记6 sed流编辑器
- 胆道取石内镜篮行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 2021年中国带LED显示屏的温度调节器市场趋势报告、技术动态创新及2027年市场预测
- linux运维有前途,想去做linux运维,不知道有前途么?