方舟编译器,最近几个月始终地处科技界热词的顶端。

这来自于它本身的架构级优化,也来自于其在特殊时间背景下,与鸿蒙OS的关系。此外还有一点,就是自诞生之日起,方舟编译器就宣布将会开源。

对于中国软件开发者来说,开源是一个既熟悉又陌生的词汇。熟悉的是差不多人人都用GitHub,陌生的是似乎还没有移动端的中国底层软件技术走向过开源之路。

在不久前的华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表。而不到一个月,8月31日,华为方舟编译器开源官网正式上线,框架开源代码如约与广大关注方舟编译器的爱好者、开发者见面。

据悉,本次方舟编译器的开源版本,开放了编译器框架部分源码,包括编译器中间表达(IR)+语言编译实现,开发者可以通过官方网站及代码托管网站获得相关代码和文档,供参考学习、了解方舟编译器的架构和代码。

而向更广阔的未来看,这次开源不仅是一种技术的外放。基于方舟编译器,华为引领行业共同构建生态与社区,这是中国底层软件开源之路的探索。

“方舟”和“开源”,或许有理由把这两件事融合到一起来看。因为软件开源与社区建设,长时间以来都被认为是中国软件行业必须补完的关键环节。而方舟编译器的战略价值,恰好成为了一个契机与窗口。

开源是路,而方舟是匙。二者结合时,我们或许已经可以窥见中国移动产业与软件行业的生态未来。

五十年,软件开源史与产业洪流

想要明白方舟开源对行业的价值,必须先解释这样一个问题:软件开源为什么重要。

这个问题要回到五十年的漫长历史中去回答。事实上,整个信息革命进程,始终伴随着软件开源事业的不断发展和深化。一部开源史,也是一部信息技术与互联网的产业革命史。

1969年,AT&T 贝尔实验室开发出了 UNIX。此后的10年,业界可以以低廉的成本获取 UNIX 源代码,并在此基础上进行革新改进。事实上,UNIX和贝尔实验室在当时已经打造了原始版本的开源意识和社区化思想。虽然之后AT&T出于商业考虑,停止了免费的UNIX版本更新,但软件开发者的自由与分享意识已经觉醒。此后的计算机时代,始终伴随着软件工作者对开源事业的热爱与执念。

1984年,理查德·斯托曼发起了 GNU 项目,目标是创建一个完全自由且向下兼容 UNIX 的操作系统。次年,他围绕GNU建立了自由软件基金会,至此首个推广自由软件的民间非营利性组织诞生,为软件行业正式启动开源工作奠定了基础。

1991年,影响至今的Linux 内核诞生。事实上,大名鼎鼎的Linux在当时采用了GNU的系统软件集,可以说是对GNU项目的发展和继承。Linux内核很快也被开源了出来,其开发生态直接影响了互联网产业的进程。

我们耳熟能详的安卓,就是采用Linux 内核编写的移动端操作系统。而安卓的开源与生态化建设,直接造就了繁盛的移动互联网和智能手机时代。相比于iOS的封闭,安卓的开源虽然有很多问题,但它的高开放度、低门槛,也带来了行业普惠价值,以及极强的成长空间。

而开源之路并没有就此终止,2008年大名鼎鼎的 GitHub 发布。这一平台的价值在于,它是一个开源的分布式软件版本控制系统,各种开源项目都可以在平台上进行公开公平的软件开源,从而与全世界开发者共同打造更优软件体验。如今GitHub已经成为了被广泛认可的开源民主化平台,其社区生态影响着全球各领域的软件开放进程。

回顾五十年的开源史,我们会发现开源平台与技术,是在时代需要与前辈技术基础上逐步发展起来的。而更优质、更彻底、更自由的底层软件开源,并不会降低一家公司的竞争力。相反这可以推动行业共识和生态繁荣,用所有开发者的智慧共同做大技术红利。

所以,开源史带给世界的结论,是平台化技术的开源是长期红利的基础,是产业繁荣的先导。不断适应时代需求的开源技术与开源社区生态,是叠层筑造的软件高塔。在这座高塔之上,软件用全球开发者的智慧让自己变得更好,再反哺世界科技的发展。

生态开源的底层模式、技术民主化,以及贡献越大话语权越大的社区机制,用五十年时间奠定了软件产业持续进化的基础能力与全球产业共识。遗憾的是,这场宏伟变革中中国软件人更多处在应用者与学习者,而非变革推动者的角色。

当然,这一境况若干年来正在发生变化。比如华为等中国公司正在持续拥抱开源事业。目前华为在有重大国际影响力的开源社区中拥有十多个董事席位,及200多个TSC、PTL、Core Committer席位。作为Linux基金会白金成员,华为对Linux kernel累计贡献6800+补丁,是TOP 5中唯一的亚洲厂商。

在开源事业中不断积累的华为,今天准备在移动生态这片软件沃土上,开启由中国科技公司主导的开源平台建设。

历史的时针,或许就此拨动。

今日,方舟的船舵

从历史中回看,底层软件开源之路带来的行业红利,主要由这样的模式产生:软件本身具有极大应用价值,开源后各厂商与开发者可以获得直接效用;而广大开发者反过来重新思考、雕琢和优化这一软件,汇聚而成开源社区。这个社区既是底层技术的不断优化,也是产业共识的自然建立。

而方舟编译器的开源,显然满足这一逻辑的基础。

对于广大APP厂商、软件开发者、互联网企业来说,对方舟编译器的理解和应用可以带来核心价值,即对自身应用体验的直接提升。而向长远角度看,方舟编译器背后的技术思路与生态价值,更是对行业具有长线推动作用。

这次开源的方舟编译器框架代码,可以完成Java静态编译,包括类层次关系分析、虚方法表和接口表的生成、native函数的处理等,以及基于引用计数的内存管理方式,提供朴素的RC插入功能。

这一阶段的框架开源,主要满足编译器领域专家及爱好者研究学习的需要,同时华为将继续优化其他编译器组件,以便让源代码更适应开源社区的开发环境。同时,开发者可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。

从近到远,我们可以看到方舟编译器开源,到相关社区与贡献制度建立,对于整个软件行业来说具备三重价值:

1、开发者可以通过加强对方舟编译器的理解,加强自身产业竞争力。

方舟编译器具备多语言联合优化能力、高效的内存回收机制、灵活的编译优化方式和极低的学习使用成本等特点。如今方舟编译器已经在产业合作中,广泛渗透到各APP开发领域,成为用户体验提升的新技术撬点。而方舟开源本身,对于这些APP开发者以及移动应用开发行业来说,是通过提升理解,加强自身产业与方舟编译器耦合的机会。在同质化竞争激烈的移动互联网产业,这也是差异化竞争力的又一来源。

2、理解跨语言编译机制,提升自身业务能力和面向未来的移动端编程能力。

方舟编译器本身是一种新的编译机制,尤其具备跨语言编程的能力。这在极大程度上是对现行编程基础的一次优化与提升。业内人士都知道,跨语言编译虽然已经成为行业主流,但却存在大量痛点。比如JNI和反射机制开销巨大;Java代码和C/C++代码互相不可见;跨语言的全程序优化无法实施等等。

此次开源的方舟编译器框架代码,包括编译器中间表示(IR)和语言编译实现。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。如此,开发者可以通过熟悉方舟编译器的架构思想,提升自身在跨语言编程领域的业务能力和理解水准——通过对方舟的“拆招解式”,实现行业基础软件水准的共同进步。

3、参与方舟生态建立,在成长的开源环境中获得长期红利。

编译器是个庞大的软件工程,需要建立生态逐步完善。而对于软件开发者、高校研究者和终端厂商来说,此时方舟开源推动建立的开源社区,可以说是中国移动软件开源社区的基础,是寻求未来产业共识的良好平台。此时加入,不仅可以短期加强业务竞争力,更有助于通过长期贡献,积累未来社区中的话语权。方舟编译器的陆续开源进程中,将通过建立托管平台,实行按贡献大小决定话语权、走向开放治理机制,最终形成社区生态。这是中国终端软件的一次全新尝试,无论是补完产业链,还是走向未来,都将源源不断激发技术与社区红利。这些红利将长期释放给行业和开发者生态,尤其对于早期参与者和积极贡献者来说。

就像很多伟大的底层技术一样,方舟编译器也会开源开放给所有聪明的大脑。而开发者在此刻拥抱方舟时,一定会注意这样一件事:这艘方舟,正航向哪里?

路与远方

移动时代之后,科技产业的下一个时代从何而来?我想现在这个问题应该已经具备了初步共识:5G提升联接能力;AI改变交互;IoT设备作为硬件形态,共同编织成了下一个时代。

而对于软件和移动产业来说,今天最关键的问题就是:我应该如何迈进这条路?

要知道,AI、5G、IoT的想象力相辅相成,但其中涉及太多的技术难点,并且在草创阶段严重缺乏技术共识。比如AIoT的芯片、网络、应用、算法,以及未来演进方向,这些在今天都充满了不确定性,甚至自相矛盾的产业现状。

如何让这条未来之路真正打开呢?吸取五十年的信息技术史,我们会发现开源和技术民主,是确定行业底层技术共识的最佳途径。

5G交融AI的智能时代,是中国和中国开发者首次完整抓住的科技产业革命,但这是机会同时也是考验。当我们需要开源生态和社区化的长期红利,首先要建设生态与社区。未来技术大门需要一把钥匙去开启,开源社区与技术生态需要第一捧泥土去堆积。

从哪开始呢?又何不从方舟开始呢?

我们知道,方舟编译器是鸿蒙OS的重要工具,而鸿蒙OS则是面向IoT全场景生态的底层操作系统,也是AI和5G融入新硬件时代的关键接口。

如果我们把方舟的开源到鸿蒙的开源,看作一个长期执行、长期生态化的系统工程,就会发现华为事实上在基于刚刚发生的方舟开源,打开面向未来,中国开源社区的第一步。

方舟开源和完善,是一个不间断的过程,是系统化的工程,也是行业红利释放的长期轨迹。接下来,2020年方舟编译器将开放Java编译器工具链,支持Java程序编译;2021年方舟编译器将开放对JavaScript语言的支持能力,可用于JS应用的编译。

同期,鸿蒙OS的开源工作也将陆续展开,华为将把软件方面的技术能力在社区中不断贡献给行业,与行业一起探寻更好的、更符合时代需求的软件技术。

沿着这条路径,我们已经可以在今天想象很多事,比如基于AIoT逻辑的杀手级应用和明星公司成长起来;比如IoT产业迎来大量共识,快速提高产业效率;比如软件开发行业普遍效率得到提升,将有更多创造性思维与人才聚集到软件中来。

未来还长,但钥匙已在手中。过去,当我们追问中国软件产业,为什么总是追随者而不是创造者的时候,其实很多时候答案很简单,因为没有人踏出第一步,没有人选择最苦最累的工作完成,没有开源开放的共识与思维。

而如今,很多事情已经改变。从方舟到开源,从开源到生态——鸿蒙已开,春来草自青。

路与远方:从方舟开源,说到中国软件行业的生态未来相关推荐

  1. 从零开始社区之路,手把手教你开源自己的Python包

    2019独角兽企业重金招聘Python工程师标准>>> 要融入社区,第一步当然是要撰写一个自己的包.整个过程主要分为五步: 项目创建 搭建虚拟运行环境 编写项目代码 编写安装脚本 上 ...

  2. Baize_ServoDriver_esp8266-(arduino32路舵机驱动板)(开源可自制,附程序和固件以及烧录方法)

    导航在这里:白泽六足机器人_arduino_v1 介绍 先放资料 github:GitHub - Allen953/Baize_ServoDriver_esp8266 立创开源地址:https://o ...

  3. 远丰电商|ERP软件开源是中国软件行业未来之路

    远丰电商了解到:ERP软件开源是中国软件行业未来之路,原因是什么?一起看看吧! 观点一.行业软件不是中国软件的出路 中国软件行业的未来到底是什么?很多人士都在表达自己的观点,有人认为做软件外包,也有人 ...

  4. ERP软件开源是中国软件行业未来之路

    一盘散沙各自为政的开发模式不会帮助中国软件行业腾飞,依靠资本途径收购不同行业软件的做法由于无法消化也不会产生伟大的公司,我坚信只有通过开源模式,ERP平台厂商为社会贡献一个平台化.开放源代码.具有普遍 ...

  5. 阿里云数据库产品HybridDB简介——OLAP数据库,支持行列混合存储,为用户提供基于开源 OLTP、OLAP、BigData 生态的一站式解决方案...

    12 月 9 日,阿里云宣布数据库产品 HybridDB 正式商业化. HybridDB(ApsaraDB HybridDB)是一款在线 MPP 大规模并行处理数据仓库的服务.它基于 Pivotal ...

  6. 阿里巴巴开源 Sentinel,进一步完善 Dubbo 生态

    为什么80%的码农都做不了架构师?>>>    阿里巴巴开源 Sentinel,进一步完善 Dubbo 生态 Sentinel 开源地址:https://github.com/ali ...

  7. 鸿蒙os开源邀请全球开发者,全场景无缝连接 鸿蒙OS开源邀请全球开发者共助生态发展...

    原标题:全场景无缝连接 鸿蒙OS开源邀请全球开发者共助生态发展 万众瞩目之下,鸿蒙OS终究还是亮相了. 在今日开始的华为开发者大会(HDC)上,我们熟悉的消费者业务CEO余承东首个登场,在回顾了华为消 ...

  8. 医疗项目 开源_医疗保健受开源影响最大的行业之一

    医疗项目 开源 医疗保健是当今时代最紧迫的社会经济问题之一. 今年,Opensource.com看到了许多有关采用开源方式和开源软件(包括工具)来缓解医疗保健行业所面临的许多问题的新闻和专题报道. 这 ...

  9. 中国开源视频编辑软件行业市场供需与战略研究报告

    出版商:贝哲斯咨询 获取报告样本: 企业竞争态势 该报告涉及的主要国际市场参与者有KDE.Heroine Virtual.OpenShot Studios, LLC.Meltytech, LLC.Fl ...

最新文章

  1. java thread 无法执行_哪位大神帮我讲一下这段代码,为什么线程不能继续执行
  2. FPGA之道(30)编写自己的vhdl库文件
  3. 用python结束exe进程
  4. 深入分析 Java 中的中文编码问题--转
  5. vmware虚拟机安装win7_图文分享虚拟机怎么安装win7系统
  6. DrawArc绘制弧线
  7. basler 相机使用出现的问题
  8. 改变Tomcat的端口de方法
  9. 系统学习机器学习之神经网络(十) --BAM网络
  10. java事件监听机制 概述
  11. MX3从flyme5降级至flyme3
  12. The error may involve defaultParameterMap ### The error occurred while setting paramete
  13. [C语言] 制作一个控制台的电子时钟
  14. Unity 制作两个按钮分别控制两个声音组件
  15. maven项目中,添加依赖后,出现Dependency 'xxxx‘ not found解决过程
  16. 生成返回PYTHON__生成器和普通函数的区别
  17. HTML5七夕情人节表白网页制作【html5全屏七夕表白页面滚动模板】HTML+CSS+JavaScript
  18. 伺服电机与步进电机的区别
  19. 转:oracle ebs po模块一揽子采购协议小结
  20. camera调试:RK3588 MIPI/DVP camera关键配置

热门文章

  1. linux 系统中判别固态硬盘(SSD)和机械硬盘(HDD)
  2. 民用飞机着陆阶段着陆方法_8个出色的WordPress主题与可销售的着陆页
  3. 万向区块链元宇宙系列报告:对工业元宇宙的认知
  4. php ppt read_php基础教程精讲.ppt
  5. DRN 与 GAN相关知识
  6. (收藏必备)cuda、cudnn、jetson等下载加速英伟达nvidia官网访问加速
  7. Allegro导出和导入PRM即GERBER设置相关教程
  8. git 从分支拉取代码到本地,并修改后提取代码到该分支
  9. frcnn系列错误: TypeError: 'numpy.float64' object cannot be interpreted as an index 的解决方案
  10. 对口高考计算机知识点总结,对口高考计算机试题及答案