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

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

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

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

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

什么是结构化的编程语言

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

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

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

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

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

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

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

这 tm 有什么?

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

你咋不上天呢?

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

相关链接

8566 次点击
所在节点    程序员
113 条回复
aecra1
2022-11-02 12:50:09 +08:00
我觉得你需要做的是统一语法结构树,甚至是统一中间代码,你要做的工具不仅仅是支持直接编辑语法结构树,更得支持反编译到不同编程语言,你这是要搞编程语言的大一统啊,关键是 Java 的注解、jvm 和 go 的 goroutine ,channel 这些根本不可能统一甚至相互转化,你要说计算结构化编辑距离,我觉得你可以看看这篇文章 https://zhuanlan.zhihu.com/p/40568346?utm_id=0
mokevip
2022-11-02 13:14:12 +08:00
大概看了一下评论和回复,大家的评论 OP 貌似没怎么听得进去,散了散了
mailes
2022-11-02 13:29:53 +08:00
太高级了,我不配用。
sadhen
2022-11-02 13:37:54 +08:00
@aecra1 直接从语法结构树编译到相关平台的字节码就可以了。只要实现 Library 和 Interopability (可交互性),就会有实用的价值。

以我个人比较熟悉的 Scala 编程语言为例,Scala 的 Library 在 Java 里面也是可以调用的,只不过确实有一些地方是不兼容的。

见 8 楼,这块已经有成熟的编程语言实现了。前 Thoughtworks 的架构师,杨博,就有 Haxe 语言的使用经验。
sadhen
2022-11-02 13:42:35 +08:00
@mailes 不是的,结构化编程语言会是很简单的编程语言。它的目的之一就是降低编程语言巴别塔的高度!

未来,人类会创造不止一门结构化编程语言。

> 太高级了,我不配用。

人人都可以编程!没有配不配的问题。未来的结构化编辑帮助你解决了编译失败、解释执行失败的问题,不再会有人写出那种无法通过编译、无法解释执行的代码了。

而且,我这边设想的结构化编程语言目前连语言标准都没有设计好,更不要说一个可用的参考实现了。等我!
sadhen
2022-11-02 13:44:18 +08:00
@mokevip 我收集了不少有用的信息。你可以看到,有爱心❤️标志的回复,就是我觉得有用的回复!
sadhen
2022-11-02 13:51:58 +08:00
举一个杨博的 Haxe 代码仓库例子: https://github.com/Atry/protoc-gen-haxe
chuxi
2022-11-02 14:11:16 +08:00
要不研究一下 LLVM 的设计?也许对你有点帮助
lambdaq
2022-11-02 15:56:52 +08:00
LZ 比较喜欢 haxe ,但是 haxe 当年是有卖点的。它丫的是唯一支持输出 .swf 的第三方语言。。
aguesuka
2022-11-02 16:03:01 +08:00
感觉直接上语言难度太大了, 不如先作一个领域的, 比如 latex 的替代.
manasheep
2022-11-02 16:33:06 +08:00
我觉得大概就是虚幻那种蓝图模式就可以吧,局限在语言上做突破太难了。
StevenRCE0
2022-11-02 17:26:25 +08:00
很喜欢 OP 这个想法,关注了
fy
2022-11-02 20:08:27 +08:00
蓝图? ue 那种吗
再加上变量表
whileFalse
2022-11-02 21:04:21 +08:00
我记得之前有过这种东西… 当时概念设计得神乎其神 说首先不可能写出语法错误;其次只能在云中执行( ide 、runtime 和部署层都在云里)再次数据库层面可以无缝升级,老代码存储的数据可以经过一系列的变换自动转换成新版代码可用的数据等等…但是我忘了那语言叫什么,估计已经死了吧
sadhen
2022-11-02 21:11:03 +08:00
@whileFalse 我感受到你已经理解我的想法了。谢谢!
sadhen
2022-11-02 21:12:57 +08:00
@fy
@manasheep

https://docs.unrealengine.com/4.26/zh-CN/ProgrammingAndScripting/Blueprints/QuickStart/

你们说的是这种么?我得明确表态,不是这样的。

JB 的 MPS 和 Mathematica 和我设想的墨干语言有点相像。
https://www.jetbrains.com/mps/
FrankHB
2022-11-02 21:26:27 +08:00
我暂时不具体评论 idea ,不过看起来 OP 对本领域现有进展的了解不是特别清楚:
https://github.com/yairchu/awesome-structure-editors/blob/main/README.md
sadhen
2022-11-02 21:31:24 +08:00
@FrankHB 感谢,我有一个朋友刚刚告诉我 Enso 这门语言。原来还有这么多同类!

我花了很多时间在 GNU TeXmacs 上面,惊叹于它的设计,也受困于它的“一般”的代码质量。
sadhen
2022-11-02 21:35:38 +08:00
很想给 FrankHB 十个爱心❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

你发给我的正是我最需要的!发现很早之前就关注你的 Github 账号了,^_^
Leviathann
2022-11-02 21:55:43 +08:00
@whileFalse darklang?

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

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

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

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

© 2021 V2EX