下面内容不一定及时更新。最近更新见github源repo:
重金悬赏,重现「木兰」编程语言编译器github.com本人特此声明:
任何人,可以借助于任何现有开源技术,包括 Python 编译器本身。只要实现一个解释器或编译器,能够完成 ulang-0.2.2.exe 的功能,与它的编程语言语法和结果一致(1 月 26 日补:项目目标),并且将代码公开开源,以证明实现的原创性,本人将以个人名义奖励一万元。奖金将随时间推移逐渐改变(当前收支见此)。
当然可以组队攻关(只要有明确的贡献,将会提高奖金总额,以便分配),也可以基于之前的逆向工程。
当然也可以与我一同努力(演示版已经发布:吴烜:木兰编程语言,向您拜年!),奖金同上处理。
毕竟,现在有了设计者的思路(鸣谢《刘雷关于“木兰”编程语言的情况说明》)以及之后中科院的专家分析(见处理报告),以及对逆向工程的分析,技术路线已非常明晰(吧?)。
以至于,听说这几乎是计算机本科生就能完成的类似于专业课作业的难度(吗?)。
那么,请各位千万不要让我这个半路出家、业余摸索的外行人占了先!
来吧,让我看看后浪们的实力!
请广为告之!
1 月
- 25日,搜集相关原始资料,为分析和加工打下基础,也为来者提供资料参考。在此基础上开始复现文档。
号外!悬赏发布短短数小时之后,就有首位响应者提交了实现代码。让我们一同研究一下。
开始编写「木兰」语言设计文档。 - 26 日,祝贺!第一笔款项已支付!
正式提出项目目标。 - 27 日,感激!刚收到第一笔赞助!
- 28 日,已向第一位参与者付酬金累计 ¥954.88。
创建细分悬赏任务:- 建立简易账本系统
- 对原始可执行文件的功能进行测试
- 29 日,学习rply用法并通过分析逆向工程获取while和loop的语法并通过测试代码。
用脚本自动运行循环语法的测试,暂时依赖打印输出。exe启动时间较长,大约2秒一个测试,需改进。将在摸索各语法规则时添加对应测试代码。 - 30 日,继续分析语法,if/导入模块等等。开始编写用户手册。
- 31 日,继续基于逆向工程中的 ply 代码,确认语法和功能。编写用户手册第二章——控制走向
2 月
- 1 日,尝试了基于「木兰」定制新语法,比较简单。
- 3 日,木兰编程语言知乎专栏创建,收录了之前的文章,欢迎指教。
- 7 日,编写用户手册第三章——函数和类型,类型部分还有不少没有摸索出来。
- 14 日, 摸索导入Python 模块功能,有些疑问,需要对 Python 模块导入机制作深入研究。
- 19 日,初步构建可执行文件, 但测试未完全通过, 待深究.
- 22 日,编写用户手册第四章——模块。
3 月
- 5 日,项目首月小结
- 8 日,编写用户手册第五章——数据结构
- 18 日,通过修改逆向工程中的bug,生成了exe能够通过所有当前测试用例。
- 22 日,木兰编译器技术验证——用 cmd 模块实现最简单交互控制台
- 24 日,木兰编译器技术验证——交互控制台集成 rply 语法分析器
- 25 日,木兰编译器技术验证——通过 AST 转换和 eval 实现语法定制
4 月
- 10 日 木兰逆向工程中的 bug(三)——交互控制台,以及下一步
- 12 日,木兰编译器技术验证——源文件解析与 exec
- 15 日,暂时不实现 REPL 部分,开始搭建原型加法部分
- 16 日,延伸调研 RPly 和 PyPy,作了简单性能对比试验
- 19 日,原型搭建——调用 print
- 21 日,原型搭建——整数的減、乘、除,其中除较特别
- 24 日,原型搭建——行号,多行支持
5 月
- 1 日,为方便调试改进语法树格式化输出
- 2 日,原型搭建——行列号,语法树比照
- 四日,原型搭建——赋值语句
- 11 日,原型搭建——“块”结构({})支持
- 16 日,原型搭建——条件语句(if...elif...else)
- 19 日,原型搭建——大小比较、while循环,不允许无效果表达式
- 23 日 木兰编程语言体验版更新,附带 VS Code 支持插件,通过更多测试。短期内,将基于体验版编写一些例程,过程中改进周边设施,包括对反馈信息进行中文化。此过程中原型项目将以技术验证(包括体验版中的 bug 重现和修复)为主要目的。
- 30 日 木兰编程语言体验版更新:中文交互环境、调用 Python 库. 原型项目推进到引用本地 python.
6 月
- 3 日, 原型项目: 开始类型定义部分.
- 13 日,原型项目搬家到OSChina,并发布阶段小结。下面除了继续完善语言功能,打算向编辑器方向摸索。
- 19 日,原型进展:支持列表操作,演示编辑器高亮
- 26 日,儿歌查询实例,引用模块、字符串列表操作
7 月
- 6 日,范围语法“下限..上限 by 间隔”,重构
- 10 日,无参数函数、字典基本功能,语法设计的取舍有感
- 16 日,匿名函数,lambda表达式初步
- 24 日,完善函数功能,常用字拆分数据处理实例
8 月
- 7 日,通过玩三岁游戏完善语言功能
- 8 日,小结了木兰编程语言待重现语法和功能,在此 issue 持续更新。
- 18 日,引用本地木兰模块;模拟凑十法加法
- 28 日,支持乘法省略乘号(2长+3宽)等等
9 月
- 3 日,优先级实现细节阶段小结与问题
- 7 日,阶段小结,重申悬赏
- 9 日,整理测试用例,回归测试
- 11 日,木兰 vs. Python 之语法对用户体验的影响(一)
- 14 日,交互环境复现,新添新手入门
- 21 日,150 行木兰代码为木兰自身实现高亮效果
- 25 日,$ 的妙用,更多编辑器高亮
10 月
- 1 日,更多 $ 的妙用,self 的拓展语义
- 6 日,木兰代码格式化之自动调整缩进的 150 倍性能优化
- 8 日,与 Python 生态的兼容问题;字符串插值
- 11 日,重温初见木兰的那个战场——二零二零年一月「木兰」编程语言风暴亲历记
- 14 日,PyPI 发布 ulang 0.0.14.1
- 17 日,0.0.14.3:井字棋演示,tuple、枚举等
- 21 日,0.0.14.4:中文报错信息规整,枚举引用新发现
- 25 日,0.0.14.6:网络服务演示;with...as 的替代语法