Skip to content

Lampese/PLCT-J139-Tasks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 

Repository files navigation

PLCT 实验室-MoonBit-J139-可做任务清单

该清单为 PLCT 实验室 J139 MoonBit 软件开发实习生岗位的可做任务清单、技术栈要求及对应的参考资料。

大家可以在群里和我说或者发 PR 来认领任务,任务的参与人数是不限的,但是要保证你们合作的成员之间有足够的沟通和交流。

而且在有 Assignment 之后也可以给对应的产出仓库发 pr,因为它们不一定做完了所有要求或者额外任务。

目前我们岗位还很缺人!很缺人!很缺人!欢迎在校生来投递简历!

MoonBit Core 社区贡献

  • Publisher: @Lampese

  • Assignment: -

任务内容

MoonBit Core 是 MoonBit 目前的标准库,在它的 Issues 中有许多标着 Good First Issue 这样 Label 的 Issue,它的意思是鼓励参与社区贡献的新人参与的,和其他部分耦合程度不高,比较容易完成的任务。

我们可以选择其中自己可以完成的部分去完成,通过提交 Pull Request 来参与贡献。

要求

需要一定的社区沟通能力和进阶的 Git 操作能力。

参考资料

XML/YAML Parser

  • Publisher: @Lampese
  • Assignment(XML): @RuifengFu
  • Assignment(YAML): -

任务内容

XML (Extensible Markup Language) 与 YAML (YAML Aint Markup Language) 均为现在市面上较为常用的标记语言 (虽然 YAML 说他们重心不在这里),前者被广泛用于信息传递,而后者广泛用于配置文件的编写。而编写他们的 Parser (即完成从 Text -> MoonBit enum) 是十分有意义的工作。

另外,JSON (JavaScript Object Notation) 是一种数据交换格式,MoonBit 的标准库 Core 中已经编写了其 Parser,用于 JSON 文本的解析。

要求

需要一定的学习技能和资料查询能力。

任务预期

初步编写 XML 或 YAML 的解析器并存在放某个仓库中,可以优先学习和尝试 Parser-Combinator 的方法来体验 Functional-Programming 的乐趣 :),但是不用它也可以,最后编写相关测试确保解析库运行正常。

项目完善后可以向 moonbitlang/x 提出 PR 并且合并该功能进入存储库,作为 MoonBit 标准库拓展的一部分。

额外任务

MoonBit 官方提供了一个属性测试框架 moonbitlang/quickcheck,对于测试 Parser 类的软件非常有用,可以自己学习并且用它来测试我们写的 Parser。

也可以考虑不止支持从 String 中进行解析而是从 Iter[Char] 中解析来获得更高的性能。

参考资料

这部分资料明显不全,希望大家可以自己发挥自己的能力运用搜索引擎和 AI 查找编写 Parser 的方法等等。

产出

xml: https://github.com/RuifengFu/XMLParser

libtorch 的 MoonBit 绑定

  • Publisher: @Lampese @tonyfettes
  • Assignment(XML): -

任务内容

libtorch 是 pytorch 的 C++ 版本,支持 CPU 端和 GPU 端的部署和训练,发行方式为 dll 或者 so,在 C++ 上可以非常简单的使用。

当前 MoonBit 在计算需求上需要在 Native 后端上增加一个 libtorch 的绑定,让 MoonBit 代码编译为 Native 代码之后也可以调用 libtorch,这可能还会帮助 torch.mbt 的进一步开发。

要求

需要一定的 C 编程能力,对 pytorch 或者 libtorch 的 API 比较熟悉。

任务预期

用 C 配合 MoonBit 编写出 libtorch 的 MoonBit Bindings,并且发布到 mooncakes。

可以先支持某个系统(如 Windows 或 Linux)的某个计算平台(如 CUDA 或 CPU 甚至 ROC),然后再编写另一个平台的 bindings。

额外任务

可以尝试使用自己辨析的 libtorch 库复现一些十分简单的论文和 torch 的需求。

参考资料

MoonBit 字符串格式化库

  • Publisher: @Lampese
  • Assignment: @kesmeey

任务内容

很多编程语言都有一个输出流函数叫做 prinf,它的意思是 print with format,也就是按照某种格式输出,比如我们在 C/C++ 中想要输出一个保留三位小数的 double 类型变量,我只需要这样做:

double xunyoyo = 1114514.19190810;
printf("%.3lf", xunyoyo);

也有其他语言提供了更加泛化的思路,他们提供了一个单独的 fmt 库(比如 Go,虽然它们也做了 fmt.Printf),你可以用 fmt 来格式化字符串并输出。

我们的任务就是做出这样一个库,来更加方便字符串的格式化输出。

要求

需要一定的学习技能和资料查询能力。

任务预期

编写一个 MoonBit 的 fmt 库并发布在 mooncakes 上。

Formatter 的格式模仿 C/Cpp 或者其他语言均可,可以在 API 设计上下功夫,看看如何设计更加合理。

该库完全有机会加入 moonbitlang/x 甚至 moonbitlang/core。

额外任务

我 (Lampese) 之前写过一个把字符串加上终端格式或者字体样式的库 moonbit-chalk,可以把它拿过来用并且给 fmt 加一个颜色/格式语法。

参考资料

产出

https://github.com/kesmeey/fmt

MoonBit Path 路径处理库

  • Publisher: @Lampese

  • Assignment: @xunyoyo @kesmeey

任务内容

在各种各样语言的标准库中 Path 仓库经常是一个不可或缺的存在,它们是一种路径的抽象,可以对路径之间进行拼接或者安全的 back 和 forward 操作。

注意所有在此之中的过程都应该是纯函数,而不应该涉及系统 IO。

该需求的仓库完全有需求合入 moonbitlang/x。

要求

(可能)需要对不同平台的路径有一定了解,包括对转义和他们之间的差异。(其实接到任务之后开始学习也可以的)

参考资料

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published