来自 HelloGCC公众号。
TL;DR
HelloGCC社区将联合软件所PLCT实验室,以方舟编译器作为参考实现,开设编译技术入门学习班。包含线上直播和线下教学。第一次课程开始时间大概四周后开始。
这是什么?
这是一个编译原理和虚拟机技术的入门教学课程。面向有计算机编程能力、对于编译技术/虚拟机技术/程序语言感兴趣的零基础爱好者。完全免费。包含线上直播、线下培训两种不同的形式。教学内容类似于大学高年级或研究生阶段的《编译原理》课程,区别在于我们虽然涉及原理,但是侧重点在于「编译技术的实践和实战」。
能学到什么?
基于龙书和虎书的编译原理知识,方舟编译器的实现和技术选择优劣,以及动手实现编译器中常用的分析和变换算法。学了之后,技术会有一些提升。调试程序的时候,对这个世界都会更加的平和和包容。
什么时候开始?
一开始会是线上,通过哔哩哔哩(B站)进行直播和录播。时间大概是11月中下旬。
大概春节后会开始组织线下课程,目前计划在杭州市和上海市。具体时间还没有定,场地费用还在找赞助(欢迎赞助)。北京市可能会有,也可能没有,看到时候讲师们主线项目加班程度(北京不用赞助,就在PLCT实验室)。
如何报名参加?
一开始会是线上教学。请留意后续HelloGCC公众号的消息推送,我们会在开始前两周通知直播地址、开通微信群和QQ群组。到时候通过公众号回复【报名】即可收到资料。
HelloGCC、HelloLLVM 和 PLCT实验室是什么关系
HelloGCC是国内目前成立时间最早、也是目前唯一活跃的编译技术社区。成立自2007年,2009年开始组织一年一次的 HelloGCC Workshop(即现在的 OSDT 2019 大会)。
HelloLLVM成立于2018年,是HelloGCC的姊妹社区,两个社区基本上是重叠的,名字也很大程度上可以相互替换使用。独立出来的契机是因为2018年要举办一系列围绕LLVM为核心的活动,社区成员觉得用GCC的名头去办LLVM的会,就像是用前朝的尚方宝剑砍当朝的官(笑(GCC泪目
PLCT实验室全称很长,是「中国科学院·软件研究所·智能软件研究中心·程序语言与编译技术实验室」。PLCT实验室致力于成为编译技术领域的开源领导者,推进开源工具链及运行时系统等软件基础设施的技术革新,具备主导开发和维护重要基础设施的技术及管理能力。与此同时,努力成为编译领域培养尖端人才的黄埔军校,推动先进编译技术在国内的普及和发展。
HelloGCC社区的多位活跃成员是PLCT实验室的员工,这次活动组织得到了PLCT实验室领导的大力支持(谢谢老板 ),并投入了可观的资源(研究生)来支持这项活动。
为什么是方舟编译器?
TL;DR: 当然因为想蹭热点啊
正经回答:
尽管在开源前后出了一系列的乌龙和失误,方舟编译器的开源依然是中国大陆编译技术领域的里程碑事件:这是目前为止最有话题性的中国公司主动将战略核心地位的编译和运行时系统贡献到开源领域。目前在开源领域,操作系统、数据库、中间件等都已经有不少企业和组织贡献并成功的运作,而编译器和虚拟机领域一直曲高和寡。
方舟开源之后,成立了方舟开源社区。作为国内目前成立最早的编译技术社区,HelloGCC社区非常希望能够与方舟开源社区一起推动国内编译技术的发展与人才的培养。
为什么是现在?
方舟开源编译器在8月31日开源之后,只开源了方舟编译器的IR框架,并没有开源或提供一个可以运行的Runtime,编译器的codegen部分也是闭源,导致想要接触和学习的爱好者,只能(1)下载下来源代码看(2)编译出来 maple 这个程序(3)干巴巴看看生成的汇编文件,跑不起来。
这还玩个鬼啊,摔!
但是现在不同了 。上文提到的软件所PLCT实验室,厉害了,手撕了一个能跑 Hello World 的 Toy Runtime for 方舟!(参见 https://github.com/isrc-cas/pacific 请想学习的同学多多Star,star数量多了之后我可以找老板申请更多的人力支持 点击原文即可转入repo)
所以,从10月23日开始,现在终于可以跑起来方舟编译器编译生成的代码了(目前功能有限,后续功能开发中)。这样用方舟开源编译器进行教学的基本(只是基本)的必须内容就已经有了。另一方面,(可能)由于上述说的没有Runtime的原因,目前我们从外部观察到的方舟社区的活跃度已经断崖式的下跌。这让我们感觉到,不行,趁现在还有不少爱好者在关注,要提高优先级,抓紧搞点活动,不然后面就难了。
会有 LLVM、GCC、HotSpot、Spidermonkey、ART/Dalvik 么?
学习班会涉及一些,挑简单容易理解的部分介绍和讲解。工业级的代码实现会在后续的高级研讨班中进行分析,是策划中的面向编译领域从业者的讨论班,在学完本入门学习班之后,可以挑战一下。