为什么不为人类设计一门结构化的编程语言(中文编程语言什么的真的是 low 爆了)

2022-11-01 23:16:28 +08:00
 sadhen

我们墨者实验室正在设计一门结构化的编程语言。

https://github.com/XmacsLabs/mogan-lang

中国人不缺编程语言,而人类还缺少一门结构化的编程语言!

什么是结构化的编程语言

目前( 2022 年),大多数编程语言都是使用纯文本维护的,而结构化编程语言是使用结构化的文本( GNU TeXmacs 的文档就是结构化文本的一种)维护的。

结构化编程语言和纯文本编程语言有三个主要的区别:

  1. 结构是一等公民: 结构在实现上就是抽象语法树,结构化编程语言会序列化成结构化文本。
  2. 关键字自由:大部分编程语言所使用的关键字都是英文,这事实上剥夺了用户的关键字自由,用户可以使用自己的母语或者自己喜欢的语言中的词作为结构化语言的关键字。
  3. 文学编程:撰写结构化的编程语言的过程就是撰写结构化文档,也就是文学编程

结构化字面量(设计草稿)

结构化编程语言可以支持丰富的字面量,比如图像字面量、矩阵字面量、自然数、实数。。。

结构化表达式(设计草稿)

数学表达式是一定要支持的,比如积分、矩阵等等。

这 tm 有什么?

写个数学公式,就可以炼统计学习的丹药,不是很爽么?

你咋不上天呢?

我们从墨干编辑器这样一个结构化的编辑器开始,去探索如何设计一门结构化的编程语言。

相关链接

8564 次点击
所在节点    程序员
113 条回复
sadhen
2022-11-02 08:28:04 +08:00
@AX5N 后面做个视频回复你吧
sakura6264
2022-11-02 08:33:35 +08:00
“关键字自由”:是说我看别人项目时候还要新学一套关键字吗?
这种自由在编程当中并不需要,要是真追求自由为什么不用 goto ,不用函数指针,if ,while 和面向对象真是 low 爆了(逃)
以及你这个编辑器甚至还会限制用户的“编辑器自由”。
实际上写程序时候这些玩意都不重要,文本的处理方式已经很成熟了,英文键盘已经很成熟了,换你这一套没有必要。
在我看来做这个就是在标新立异而已,和那些妄想统治世界的编程语言没啥区别。
sadhen
2022-11-02 08:55:02 +08:00
@sakura6264 每个人都可以定制自己的关键字、代码结构的显示。

这一点其实和当前的编辑器里面的配色方案、字体是同一个范畴的概念。只不过从代码的文本颜色、字体,衍生到了对代码的结构、关键字的显示的控制。
sadhen
2022-11-02 08:57:21 +08:00
@greygoo 我没有实际使用过 MPS 。这说明,大家心目中都有对未来的编程语言的畅想!而且大家(有一小撮人^_^)都非常渴望在编程语言中加入数学结构!
NessajCN
2022-11-02 09:07:55 +08:00
把矩阵画成 2x2 真的比写成[[a,b],[c,d]]先进很多吗....
SmiteChow
2022-11-02 09:11:19 +08:00
你的意思是直接写 AST ?🤔
sadhen
2022-11-02 09:13:23 +08:00
@SmiteChow 是的。AST 实际上一个编程语言的编译器中的概念。结构化编辑器可以将 AST 以一种友好的交互方式交给人类编辑。
sadhen
2022-11-02 09:13:48 +08:00
@NessajCN 那么,10x10 呢
NessajCN
2022-11-02 09:23:57 +08:00
[[0,1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9,0],
...
[9,0,1,2,3,4,5,6,7,8]]
没啥区别啊
NessajCN
2022-11-02 09:30:48 +08:00
@sadhen 而且我这个还能接着写到 n 维张量呢...你就画个矩阵,那我要是三阶四阶张量你咋画呢
[ [[1,2],
[2,3]],
[[4,5],
[5,6]] ]
cutepig
2022-11-02 09:33:40 +08:00
lisp
opengps
2022-11-02 09:34:34 +08:00
你说的这个语言格式,跟 plc 编程很相似,可以参考下工业 PLC 的编程工具,看看有没有什么可以吸收的精华
xz410236056
2022-11-02 09:37:36 +08:00
@sadhen #16
“为什么英语要统治编程语言世界?非洲某个部落的只有 1000 个人使用的语言也可以用做结构化编程语言的关键字。”

现在也没人用英文编程啊,计算机也不认英文啊,我们都是用 JAVA GO C# 之类的东西编程啊,英文是为了去社区找答案或者跟人交流用的啊,你 1000 人搞个编程语言,有个数据公式 /物理原理 不清楚,你打算用非洲话跟人交流?
AllenTsui
2022-11-02 09:43:14 +08:00
我的理解是,这个结构化编程语言,在可读性方面做出了颠覆。 其他优势没感觉到。
andyJado
2022-11-02 09:44:47 +08:00
也就是说, 如果我不喜欢`let`, 我可以叫它`让`?

这意味着别人在读我的 commit 的时候会看不懂, 进而需要把我的代码下载下来再 parse 成他的语法的代码.还是说你 commit 的时候把 let 就优化掉了?

难道说你个小聪明, 直接用 AST[0,1,1]类似的‘结构化’来表述 let?

还是说用你这门语言需要掌握强大的 AST 知识以至于这些都能被 sugar 掉?

所以有没有可能您做出来的东西可以叫做「一份友好的 AST 教程?」
sadhen
2022-11-02 09:49:16 +08:00
@NessajCN 现在人类所使用的编程工具是平面的。所以三维就没那么方便了。

VR 技术成熟之后,三维的数据也可以用 VR 的技术,让人类轻松编辑了。

> 那我要是三阶四阶张量你咋画呢

纯文本编程语言是结构化编程语言的子集啊!这种张量可以沿用你的方式,也可以设计一些更加合理的方式。
piaodazhu
2022-11-02 09:50:32 +08:00
虽然不甚理解,还是先关注了,希望更新一些体现其优势的示例
sadhen
2022-11-02 09:51:24 +08:00
@andyJado

> 这意味着别人在读我的 commit 的时候会看不懂, 进而需要把我的代码下载下来再 parse 成他的语法的代码.还是说你 commit 的时候把 let 就优化掉了?

不会看不懂。就是我习惯 Go 的语法,我可以让结构化编辑器显示 Go 的语法。我更习惯 Scala 的语法,我也可以用结构化编辑器显示 Scala 的语法。当然,会出现,有一些结构,在 Go 里面没有,而在 Scala 里面是有的情况,在这种情况下,编辑器会告诉你!
zapper
2022-11-02 09:51:37 +08:00
拓可 已死 趣普
sadhen
2022-11-02 09:58:01 +08:00
> 现在也没人用英文编程啊,计算机也不认英文啊,我们都是用 JAVA GO C# 之类的东西编程啊,英文是为了去社区找答案或者跟人交流用的啊,你 1000 人搞个编程语言,有个数据公式 /物理原理 不清楚,你打算用非洲话跟人交流?

这个问题我已经在 25 楼 43 楼 58 楼 解释了

我这里说英文编程、中文编程,只是一种吸引 V2EX 用户来参与这个帖子的手段。我对这个手段表示抱歉。

比如说这个帖子: https://www.v2ex.com/t/891901

我可以说:实锤了,这个国产换皮软件终于露出了马脚!

但是,我认为不需要用这种方式来吸引眼球。所以我没有在那个帖子中用这种标题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX