分享大三学生如何从事专业编译器开发?

原文链接:https://mp.weixin.qq.com/s/sdW11tAZX8VlP3zJKFNJ4Q

探索不止,代码不休。

MoonBit实习告一段落!

六个月的经历见证他的成长

初出茅庐的他,如何在DII大展身手?

参与编译器开发?

让我们跟随他的脚步,揭开成长历程的篇章!

实习生介绍:

柴汉锋,XX大学大三在读生

2023年9月加入IDEA研究院基础软件中心MoonBit项目组

MoonBit马里奥游戏的作者

初入职场还需高人指点

线上远程+线下实践,经验1+1>2

随着寒假的结束,我在基础软件中心的实习也暂时告一段落。现在回想起在基础软件中心的时光,不由感慨这实在是一段独特而难忘的经历。 第一次接触 MoonBit,还是在 2023 年的暑假。当时基础软件中心刚刚发布云端 IDE,能够在不借助后台服务器的情况下编辑、编译、运行 MoonBit 代码。这一独特的发布方式吸引了我,我对这一切背后的原理感到非常好奇。 机会很快就到来了,开学没多久,我就在 PL 群里看到了基础软件中心招聘实习生的信息。机会不容错过,我立刻就投递了简历。在经历了两轮简短的面试之后,我顺利成为了基础软件中心的软件开发实习生。这也是我人生中的第一份实习。 遗憾的是,由于学业繁忙,直到寒假我才有机会去深圳参加基础软件中心的线下实习。怀着迫不及待的心情,期末考试结束的第二天,我就坐飞机来到深圳。 由于飞机晚点,我到达基础软件中心时已经比较晚了。尽管如此,宏波老师还是热情地接待了我,向我介绍了基础软件中心的同事们,以及 MoonBit 背后的技术原理。 经过宏波老师的讲解,我终于对 MoonBit 背后的技术原理有了基本的了解。原来 MoonBit 的编译器是用 OCaml 语言编写的。也许很多人并不熟悉 OCaml 语言,但事实上,这一函数式编程语言历史悠久,影响广泛,有着极其稳定的工具链,甚至还获得过 2023 年 ACM 编程语言软件奖。

我年纪太小,没经验,有挑大梁的机会吗?

年纪尚浅?大三完成开发编译器

OCaml 语言既能编译成高效的 Native 文件,也能编译成方便调试的字节码,甚至能编译到 JavaScript,因此在基础软件中心的云端 IDE 上,MoonBit 编译器以 JavaScript 的形式存在,把 MoonBit 代码编译到 WebAssembly,然后再运行 WebAssembly 代码,这样整个流程都不必借助后台服务器,可以直接在浏览器端完成一切。 接下来的几天,我初步学习了 OCaml 语言,接着便开始理解 MoonBit 编译器的源代码。让我惊讶的是,尽管 MoonBit 是一门力求保持简单的编程语言,但 MoonBit 的编译器却非常完备。举例来说,在 Parsing 阶段,工具生成的 Parser 效率较高,但是错误提示不够友好;而手写的 Parser 能够提供更加友好的错误提示,但是在效率上不如工具生成的 Parser。出人意料的是,尽管 MoonBit 还在起步阶段,却明确表示既要效率又要用户友好,同时维护了两套 Parser,这样一来,用户在编译依赖的时候能够获得极致的速度,而在开发的时候则能获得友好的错误提示,实在是太贴心了。 编译器内部的 IR 一层又一层,我都看得有些头晕了。好在这时宏波老师给了我一个简单的练手任务:支持多行字符串。因为在语义上多行字符串和和普通字符串没有区别,所以我暂时只要关注编译器前端就可以了。这就大大减轻了我理解代码的负担。接下来的一个星期,我便专注于多行字符串支持。 在和 Lexer, Parser, Formatter 鏖战的过程中,基础软件中心的同事也给了我不少帮助。在此期间又发生了一件让我惊讶的事情:有一次我向同事询问如何在 VS Code 中调试 OCaml 代码,没想到 VS Code 的 OCaml 调试插件就是由同事中的一位开发的。这实在是让我感慨,小伙伴们的技术实力真是深不可测啊。 除了高超的技术水平,同事 review 代码的细致也让我叹服。由于对代码库不够熟悉,有时我的代码虽然产生了预期的效果,但并不符合最佳的写法,测试也覆盖得不够全面。这些同事都会一一为我指出,让我加以改进。这种对代码的高标准,让我叹为观止。 终于,在经历了一个星期的努力以后,我的代码合入了主线,达成这一成就让我高兴了好几天。在对代码仓库的有了基本的了解之后,之后的工作也顺利了许多。

团队氛围up,融入team伐木累

工作之余,基础软件中心也会组织一些有趣的活动。在每周一次的分享会上,同事们会轮流不限题材和形式地向大家分享自己觉得有意思的事情。有时候是前沿的 PL 研究成果,有时候是别出心裁的电子游戏,参加这样的分享会真是一种有趣的体验。此外,我还赶上了 IDEA 研究院组织的春节露营派对,在深圳午后温暖的阳光下,和同事们一起扔飞镖、滚铁环、猜谜语、抽奖品,给我这第一次的实习经历留下了非常难忘的回忆。 短暂的寒假转瞬即逝,很快我就不得不离开了,回想我在基础软件中心的实习经历,不禁发觉潜移默化中我已受益颇多。当初我还在怀疑第一份实习是不是找一个中规中矩的大厂更加合适,如今我则十分庆幸跟从自己的兴趣来到了基础软件中心。如果有小伙伴和我一样对如何创造一个编程语言的全套工具链感兴趣,加入基础软件中心一定是一个理解一切的好机会。

心动了? 我们还在招募👇

开发者工具工程师(实习)
程序语言工具开发(实习)
AI 大模型推理(实习)
MoonBit 校园大使……
更多招聘资讯!请关注公众号MoonBit哦~
📮简历投递邮箱:jichuruanjian@idea.edu.cn

在这里插入图片描述

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值