探索不止,代碼不休。
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
原文鏈接:https://mp.weixin.qq.com/s/sdW11tAZX8VlP3zJKFNJ4Q