为什么不为人类设计一门结构化的编程语言(中文编程语言什么的真的是 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 条回复
KaGaMiKun
2022-11-02 09:58:15 +08:00
唔,想法听着挺有意思的
可是对于“每个人都可以定制自己的关键字、代码结构的显示”,这个应该不太实用吧?
比如现在的编程基本都是需要给别人看的,倘若极限点,每个人的关键字都不一样,这阅读性太差了吧?
就像一篇天书论文一般

另外对于结构和文学的点,其实现在的语言也是差不多的,顶多就是自己造个小轮子,比如 Math
我认为,如果用沙雕图来说,“形式自由主义,功能自由主义”合并起来说,excel 也可以是编程语言,也能“炼丹”

对于未来语言的想法,其实我更觉得会变成 UE 蓝图那般。而针对于特点场景的底层优化,则直接实现一个专门的代码块(函数)
tool2d
2022-11-02 10:00:36 +08:00
有点类似 google 的积木可视化编程。但意义并不大,专业码农最后还是回归文本编辑,就如 markdown 把 word 干掉一样。

简单文本才会成为主流,设计越复杂,推广越难。
adian
2022-11-02 10:06:19 +08:00
虽然看不懂,但是感觉很酷啊,加油!
drainlin
2022-11-02 10:11:02 +08:00
想推广你的东西,就一定要踩别的吗
sadhen
2022-11-02 10:17:07 +08:00
@drainlin 抱歉,避免了踩王垠这样有争议的网红,还是不小心踩了“中文编程语言”

大家都知道网红是很赚钱的,然后有很多网红很努力,而且有专业素养。我在使用“网红”这个词的时候特意强调了它是中性的。

非常抱歉,我对“中文编程语言”抱有偏见!
bigbigpark
2022-11-02 10:20:02 +08:00
什么都 要把中国、中国人、中文、中华民族踩上一脚才能显示你的高大上?
ztxcccc
2022-11-02 10:25:00 +08:00
如果作者不能用“自然语言”准确定义出这是个什么“编程语言”的话,我只能说很难绷得住
zhy91
2022-11-02 10:48:34 +08:00
拉一踩一什么的,真的是 low 爆了!
sadhen
2022-11-02 10:51:54 +08:00
@bigbigpark

https://github.com/NotepadFree/NotepadFree/issues/9#issuecomment-1276557421

你看一下我在这里的态度。我承认我对“中文编程语言”有偏见,我觉得我一直以来被洗脑了。感谢您,点醒我!

对于一个事物,应该要抱着包容的态度,至少我应该先尝试中文编程语言,仔细地研究其中的优缺点,然后再做出评价。
sadhen
2022-11-02 10:52:33 +08:00
@zhy91 是的,low 爆了!昨天的我真是的 low 爆了。
dnzh1wei
2022-11-02 10:52:46 +08:00
类比 0 、1 、英文字母,仅仅通过字符集长短和排列位置变换组合来表达不同意思,语言越简单,越适合去被设计成编程语言,因为编程语言更多的是服务于机器人,而不是人类,像中国汉字五千年的沉淀,其复杂性确实不太适合去被当成机器语言,成本太高了,当然 op 也很大方的承认对“中文编程语言”抱有偏见!屁股决定脑袋,我们不能强迫每一个人都有自己的文化自信,在我看来中文编程语言更多的是避免在某些方面被有心之人钳制亦可以称之为一项伟大的创举,不能因为不适合就定性为 low ,坐井观天不外如是。
cy1027
2022-11-02 11:04:12 +08:00
是不是只要开发不同的软件就可以了。现在谁做游戏会一行一行的手写游戏引擎呢?只要有一个集成了游戏引擎的软件,抽象的功能不就可以被不懂代码的人使用了嘛
janus77
2022-11-02 11:07:54 +08:00
有没有一种可能,用英语是为了人类阅读。
编程语言有两个需要满足的要素,一个是让机器阅读,一个是让人类阅读。
如果要做到你所说的“每个人都能有定制化的自由”,那么一个人写的东西拿给另一个人就没法阅读了,一个团队写的东西拿给另一个团队就没法阅读了。
这会大大降低人类直接交流编程知识的效率,阻碍计算机技术本身的发展
sadhen
2022-11-02 11:14:59 +08:00
> 如果要做到你所说的“每个人都能有定制化的自由”,那么一个人写的东西拿给另一个人就没法阅读了,一个团队写的东西拿给另一个团队就没法阅读了。

看 58 楼。用户 A 定制的 Emacs 给用户 B 用,用户 B 绝对会破口大骂。会有一些经典的配置,大家都认可的,比如 Spacemacs 。
bigbigpark
2022-11-02 11:22:52 +08:00
@sadhen 在你做出比“中文编程语言”更好的编程语言前,请不要使用“包容”这个词。
sadhen
2022-11-02 11:22:59 +08:00
@janus77
> 编程语言有两个需要满足的要素,一个是让机器阅读,一个是让人类阅读。

这个说得很好,我补充一下。

编程语言通过编译器,实现了让机器“阅读”并执行的功能,这样的功能关注点在于性能、以及兼容性。
编程语言通过语法设计,实现了让人类阅读、编辑的功能,这样的功能主要是为了满足人类的需求。

比如人类希望编程语言的可读性更强,就诞生了 Python 这样的编程语言,Python for Humans 这个口号相信大家或多或少都听到过。

我想做的结构化编辑器及结构化编程语言,旨在提高编程语言的可编辑性。

详见我在 29 楼 的描述。有一道经典的 ACM 题,和编辑距离有关。那个是基于字符串的。我有思考过,对于结构化的编程语言,如何去衡量语法正确的两份代码之间的结构化编辑距离,又如何去衡量语义正确的两份代码之前的结构化编辑具体。
sadhen
2022-11-02 11:24:45 +08:00
@bigbigpark 那么,可以用 inclusive 这个词么?
bigbigpark
2022-11-02 11:27:04 +08:00
@sadhen 你可以说 Nobody knows it better than me
lululau
2022-11-02 11:27:41 +08:00
哪门编程语言不是结构化的。。。不是结构化的话,那怎么解析怎么编译啊。。。
abc8678
2022-11-02 12:10:11 +08:00
很久没用易语言了,一看易语言里还留着 IE 、media player 这些组建

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

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

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

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

© 2021 V2EX