木兰重生:$ 的妙用,更多编辑器高亮

2020年09月26日

所有相关源码在码云

这几天复现了木兰编程语言中 $ 的功能(细节见第二部分)。编辑器的“代码段”类原本(左侧)有 12 处 self,改写后(右侧)看起来就简洁了一些:

后三个函数原本形参只有一个 self,现在变为没有形参,括号也可以省了。话说这种 $ 的用法也许 PHP 开发者会有特别的感觉?另外,是否要对 $ 打头的标识符进行高亮处理呢?

之前 @水木易安 (开源中国)指出了编辑器尚未对内置函数(如 map、print)、类型(如 str、list)进行高亮,于是作了些改进。配色比较随意,望 UX 大佬指点:

匿名函数中的“->”,感觉语义和函数定义的“func”相近,于是用了同样高亮风格。

$ 的两种语义

1. $ 打头的标识符

意为属于当前个体。如开头例程中的“$词性”等价于“self.词性”。

如果是函数,第一个形参自动设为 self。如例程中的

func $开始() {...} 

等价于

func 开始(self) {...} 

2. 单指 self

与“true/false/nil“类似,可如下使用:

type 人 {
  func $起名(名字) {
    $名字 = 名字; return $
  }
}
println(人().起名("木兰").名字)

代码统计

下面是几个主要部分的代码行数统计,格式为:上次->现在。

  • 木兰代码量
    • 编辑器,包括实现与测试都是木兰代码:163 -> 184
    • 木兰测试用例:1966 -> 2001

 

  • Python 代码量(包括测试部分):2321 -> 2338
    • 分析器/语法分析器.py:913 -> 925
    • 分析器/词法分析器.py:190 -> 195
    • 未变
      • 分析器/语法树.py:178
      • 测试/运行所有.py,检验所有木兰测试代码片段:181
      • 环境.py,加载木兰模块:150
      • 交互.py,交互环境(REPL):138
      • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:78
      • 功用/反馈信息.py:49
      • 中.py,主程序:40
      • 分析器/错误.py:17
      • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:67
      • 测试/unittest/交互.py,交互环境相关测试:28
展开阅读全文
0 收藏
分享
加载中
精彩评论
能够在谩骂中坚持做自己喜欢的事,非常了不起。虽然我还不能明白你的应用场景,但是能够独立去搞一个语言就很了不起。单单是语法分析,没有硬实力就是搞不定的,喷子由他们去吧
2020-09-26 12:50
7
举报
这么玻璃心? 中英文混合编程啊 写个代码还要中英文切换 某种意义上 语言也算一款产品 如果你是为了炫技 我认为你很厉害 如果你是打造一款产品 不好意思 这款产品很垃圾
2020-09-27 10:44
3
举报
不愿意看到不同的声音,所以这个也就是你一个人的玩具而已。
2020-09-28 09:05
2
举报
要搞中文编程就用¥ 用$ 什么意思
2020-09-27 08:56
2
举报
你这种说法太无礼了、太文人化了。现有书写方式,即使全是中文,也不会顺眼的,你不懂的依旧不懂。只会想当然的提出要求,而不去自己实践,盲目坚持自己的观点。
2020-09-26 16:39
2
举报
最新评论 (61)
汉话都是违规词
2020-09-28 10:38
0
回复
举报
哦天呐,我上新闻了。
2020-09-27 15:45
0
回复
举报
呵呵,习惯就好。请多指教。
2020-09-27 15:57
0
回复
举报
前面加了几个字发不出来,不要中文英文标识符混用,太难受了。比如:type 改为 定义类型,func 改为 定义函数,这样不是更明确吗?还有某点横,这样看起来很痛苦,应该改为 某点的横属性,把变量的点改为的字,打通语义翻译,让编程成为说话,这样才能区别于国外的程序,否则还不如直接用python舒服。
2020-09-27 09:05
0
回复
举报
我 python 也用中文命名。看源码库。
不为区别而区别,为项目更易维护。
2020-09-27 10:14
0
回复
举报
用全中文不是更好,就像说话一样,告诉计算机要做的事情。。。这才是中文编程,如果仅仅是把格式中文化,那就没啥意思,这几个单词还是能记住的。
2020-09-27 11:23
0
回复
举报
“就像说话一样,告诉计算机要做的事情”——就问一个问题:哪个英文编程语言达到这个要求了?
再再强调一次,木兰语法不是中文的,我用中文标识符,看不惯可以不强迫自己看,谢谢。
2020-09-27 11:45
0
回复
举报
不愿意看到不同的声音,所以这个也就是你一个人的玩具而已。
2020-09-28 09:05
2
回复
举报
嘴巴一嘴,打通语义翻译--你讲讲你的方案。定义类型、定义函数--你满屏看着大量汉字"定义",看你是啥感觉。
2020-09-27 17:41
0
回复
举报
萝卜白菜罢了
2020-09-28 09:09
0
回复
举报
要搞中文编程就用¥ 用$ 什么意思
2020-09-27 08:56
2
回复
举报
木兰语法不是中文的。用中文标识符而已。
哦对了,看不惯自己改啊就会喷?
2020-09-27 10:15
0
回复
举报
这么玻璃心? 中英文混合编程啊 写个代码还要中英文切换 某种意义上 语言也算一款产品 如果你是为了炫技 我认为你很厉害 如果你是打造一款产品 不好意思 这款产品很垃圾
2020-09-27 10:44
3
回复
举报
没有场景 这款语言的优势场景是什么 没有定位 定位也不清晰 只有博眼球的亮点 跟有些产品经理的脑洞需求一样 设计的很牛 但是外强中干 没有什么用户
2020-09-27 10:47
0
回复
举报
汉字编程,徒增心智负担,不如字母易读,输入也更麻烦
map(某点 -> [某点.横 + 横偏移, 某点.纵 + 纵偏移], 某范围.所有点)
map(p -> [p.x + offsetX, p.y + offsetY], area.Points)
2020-09-27 08:33
0
回复
举报
我很适应,不烦劳心。
2020-09-27 10:22
0
回复
举报
你这例子就是只能用数学式书写。徒增心智负担--看样子,你看英文的速度比看中文快,来来,把nim的源代码全中文化,看看里面古怪的命名,怎么让你喝一壶。
2020-09-27 17:48
0
回复
举报
用e语言的才是大佬
2020-09-26 20:30
0
回复
举报
直接告诉我用python
2020-09-26 17:12
0
回复
举报
能够在谩骂中坚持做自己喜欢的事,非常了不起。虽然我还不能明白你的应用场景,但是能够独立去搞一个语言就很了不起。单单是语法分析,没有硬实力就是搞不定的,喷子由他们去吧
2020-09-26 12:50
7
回复
举报
重现时很大程度参照了木兰原始可执行文件逆向出的代码,否则光靠试 exe 的功能是几乎无法复原的。
很感叹,原本木兰早早开源的话,估计也不会有那样的风潮,项目估计也会顺利继续。
现在这样磕磕绊绊地复原,就像从观察出土文物分析它的制作方法和设计思路、创造意图一样,虽不至于举步维艰,但终归困难重重而且难见全貌。
2020-09-26 13:23
0
回复
举报
请不要恶心我们好了吗?python都够恶心了
2020-09-26 12:42
0
回复
举报
祝你可以抛开道听途说来的成见和偏见,亲自认真看看木兰的实现和设计,相信会有收获。
基于我写了上千行木兰代码(包括测试和实用小程序)的体会,它的确有可圈可点之处。
2020-09-26 13:44
0
回复
举报
那你解释下为什么刚开源就说自主开发,后来是包皮项目?你的出发点都是让人接受不了,希望你认真回复下?
2020-09-26 21:51
0
回复
举报
就问他,学这门语言能不能吃饭 ,不能就当笑话看看就行
2020-09-26 23:26
0
回复
举报
能吃饭,你就来舔。吃白食的不要太嚣张了。
2020-09-27 18:26
0
回复
举报
这不算白食吧,我不靠他吃饭啊,而且这语言就跟蔡徐坤一样博人眼球,懂的都懂
2020-09-27 18:54
0
回复
举报
回复 @开源中国首席看批官 : 这有点媚洋了。语言这东西老外做就不是博人眼球了!个个都是毫无问题?
2020-09-28 12:27
0
回复
举报
回复 @dwcz : 是啊,但是他的语言能让我们吃饭,这个行吗,
2020-09-28 12:30
0
回复
举报
回复 @开源中国首席看批官 : 你这媚的无语,你吃饭的语言是一个老外做的?一个老外做的也不能让你吃饭啊。这双标的也太无脑了,吃白食吃的。。
2020-09-28 12:41
0
回复
举报
我不知道你想要什么回答。
木兰原始项目,就我的了解,非常遗憾地,在第一条新闻出现前并未由官方开源。更遗憾地,到了满城风雨时,也没有及时开源以正视听。
作为有一点特殊的第三方(第一时间看到了首发新闻并发了《「木兰」编程语言有什么特色?》知乎问题》,因此比绝大多数人目睹了更完整的事件走向),我所有对木兰的认识和理解都写在了知乎文章,其中大部分集合在了《木兰编程语言》知乎专栏:https://zhuanlan.zhihu.com/ulang
本项目是我基于原始木兰可执行文件和之前知友制作的逆向工程进行的逐条语法和功能复现。
不知道你到现在对木兰有何了解?
2020-09-27 00:04
0
回复
举报
还不如易语言。
2020-09-26 11:26
0
回复
举报
哪些方面不如呢?请注意木兰编程语言的语法并非中文的。
2020-09-26 11:29
0
回复
举报
更多评论
61 评论
0 收藏
分享
返回顶部
顶部