V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sadhen
V2EX  ›  程序员

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

  •  
  •   sadhen ·
    darcy-shen · 2022-11-01 23:16:28 +08:00 · 8047 次点击
    这是一个创建于 528 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    什么是结构化的编程语言

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

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

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

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

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

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

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

    这 tm 有什么?

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

    你咋不上天呢?

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

    相关链接

    第 1 条附言  ·  2022-11-02 21:09:46 +08:00
    Mogan Editor v1.1.1: Faster GNU TeXmacs using KDE Breeze Icons
    https://news.ycombinator.com/item?id=33435083

    帮忙顶一下 hacknews ,谢谢
    113 条回复    2022-11-03 22:55:28 +08:00
    1  2  
    lambdaq
        1
    lambdaq  
       2022-11-01 23:19:10 +08:00   ❤️ 10
    你倒是贴段代码康康呢。。。伪代码也行。。。
    wsseo
        2
    wsseo  
       2022-11-01 23:20:19 +08:00   ❤️ 2
    英文编程语言什么的真的是 low 爆了
    sadhen
        3
    sadhen  
    OP
       2022-11-01 23:21:17 +08:00
    @lambdaq 我们先完成结构化编辑器的设计和实现。目前墨干编辑器不支持 Unicode ,这个问题很大,我们会在 V1.2.0 开始设计 TMU 格式,支持 Unicode 。
    sadhen
        4
    sadhen  
    OP
       2022-11-01 23:24:18 +08:00
    @lambdaq 另外,V2EX 并不是一个支持结构化文本的论坛,你可以看相关链接里面的截图。

    比如,我不知道怎么在 V2EX 里面输入一个矩阵,至少这有点麻烦。

    a = <mrow>
    <mo>[</mo>
    <mtable>
    <mtr>
    <mtd><mn>1</mn></mtd>
    <mtd><mn>0</mn></mtd>
    <mtd><mn>0</mn></mtd>
    </mtr>

    <mtr>
    <mtd><mn>0</mn></mtd>
    <mtd><mn>1</mn></mtd>
    <mtd><mn>0</mn></mtd>
    </mtr>

    <mtr>
    <mtd><mn>0</mn></mtd>
    <mtd><mn>0</mn></mtd>
    <mtd><mn>1</mn></mtd>
    </mtr>
    </mtable>
    <mo>]</mo>
    </mrow>
    sadhen
        5
    sadhen  
    OP
       2022-11-01 23:26:08 +08:00
    wxf666
        6
    wxf666  
       2022-11-01 23:30:20 +08:00
    @sadhen 可以再多写写应用场景吗?还能在哪些方面解决现有编程语言的什么痛点?
    XCFOX
        7
    XCFOX  
       2022-11-01 23:33:39 +08:00
    请问结构化编程和函数式编程( Haskell 、F#)有何不同?
    sadhen
        8
    sadhen  
    OP
       2022-11-01 23:34:55 +08:00
    @wxf666 目前还在设计阶段,会参考 https://haxe.org/ 这门语言

    一门新的语言,一开始可以依附于既有的编程语言。类似于 Haxe ,用墨干语言实现的 Library ,构建之后可以发布到多种平台,比如 JVM 、Javascript 、WASM 等等。等到成熟之后,可以投入精力,直接将结构化的编程语言编译到 LLVM 这样的虚拟机上面。
    sadhen
        9
    sadhen  
    OP
       2022-11-01 23:42:22 +08:00
    @XCFOX 一般我们认为支持函数式编程的语言是现代语言。而结构化的语言是未来的语言。有一个显著的差别在于,结构化的编程语言原生支持数学结构。比如矩阵就是结构化编程语言的内置类型。

    > 那么结构化编程语言和现在的计算机代数系统+函数式编程有什么区别呢?比如 Fricas 里面 SPAD 语言?

    自问自答:SPAD 语言对数学结构的支持仍旧采用的是纯文本的符号,在未来,纯文本的编程语言和现在汇编语言一样不可思议,没有人会再去学习纯文本的编程语言。未来人会惊叹:一门语言竟然不支持数学公式?图像和视频竟然不能作为字面量潜入到代码中?

    就像早期的 IRC ,只支持字符。而现代的聊天工具,支持 Emoji 、语音、视频。这种发展是一个自然而然的过程。

    抽象层级越来越高,这是自然而然的进化过程。
    pocarisweat
        10
    pocarisweat  
       2022-11-01 23:45:47 +08:00
    你想找的是不是 https://www.jetbrains.com/mps/

    话说回来,所谓结构化其实就是直接暴露内部数据结构而不是文本,用在编辑器上我觉得更恰当些(其实 JetBrains 的 IDE 已经很有「我编辑的是 AST 而不是源码」的感觉了)。

    王垠之前也痛陈过 Unix 一切皆文本哲学的危害,然后写了篇文章设计一个结构化的操作系统: https://www.yinwang.org/blog-cn/2013/04/14/os-design

    微软的 COM 也有点这个意思,因为文本是程序之间天然的 RPC 接口,而要想超越文本接口,就必须要设计一个放之四海而皆准的结构化接口,然后就成了 COM 这么个奇怪的东西
    lisongeee
        11
    lisongeee  
       2022-11-01 23:46:09 +08:00
    sadhen
        12
    sadhen  
    OP
       2022-11-01 23:47:45 +08:00
    @pocarisweat 我知道有 mps 这样的编辑器,所以我并没有在寻找这样的实现。我在寻找志同道合的人,一起来实现结构化的编程语言和编辑器。
    sadhen
        13
    sadhen  
    OP
       2022-11-01 23:50:50 +08:00   ❤️ 1
    @pocarisweat 写文章设计什么的,还是弱爆了。那是技术圈的“网红”才会做的事情(没有贬低网红的意思,taste 同样是比较重要的)。个人崇尚“实用”,不喜欢清谈。设计了,最终是要实现的,可能要花十年、二十年,但是足够有意思,为什么不去实现呢?为什么不找一群志同道合的人一起实现呢?
    x02
        14
    x02  
       2022-11-01 23:51:07 +08:00   ❤️ 1
    > 为什么不为人类设计一门结构化的编程语言?

    为什么人类需要一个结构化的编程语言?

    你的语言在哪些问题上有更好的表现?
    wxf666
        15
    wxf666  
       2022-11-01 23:52:50 +08:00
    @sadhen 硬编码图像和视频??
    sadhen
        16
    sadhen  
    OP
       2022-11-01 23:58:46 +08:00   ❤️ 1
    @x02 因为人类在计算机技术上能做的抽象层级越来越高了。人类需要更多的多样性!为什么英语要统治编程语言世界?非洲某个部落的只有 1000 个人使用的语言也可以用做结构化编程语言的关键字。比如,未来的太空旅行中,一个飞行器里面可能有十个人,这十个人在漫长的星际旅行中,他们在日常生活中创造了一门新的自然语言,这个时候,英语明显是不合适的。英语在这样的飞行器中的地位,就是现在的拉丁文了。

    > 你的语言在哪些问题上有更好的表现?

    上面已经有一些例子了,我再举一些例子吧。结构化的语言不用考虑:

    + 要不要用游标卡尺
    + 一个语句(Statement)的末尾是不是需要加 `;`

    这类细枝末节的事情。由于语言本身的序列化就是结构化的,编译器前端的实现可以大大简化,我们直接做后端优化就可以了,去适配不同类型物理实现:CPU/GPU/TPU/量子计算芯片
    sadhen
        17
    sadhen  
    OP
       2022-11-01 23:59:48 +08:00
    @wxf666 Racket 的 REPL 里面,图像就可以作为字面量。我们可以实现 rotate 函数,对输入参数的图像做 rotate 。
    sadhen
        18
    sadhen  
    OP
       2022-11-02 00:22:12 +08:00
    > 个人崇尚“实用”,不喜欢清谈。设计了,最终是要实现的

    努力提高知识水平,请大家指导,避免在 21 世纪“土法炼钢”
    luckyrayyy
        19
    luckyrayyy  
       2022-11-02 00:46:47 +08:00   ❤️ 3
    人类文字真的是 low 爆了,我设计了一个火星文编程
    humpy
        20
    humpy  
       2022-11-02 00:54:24 +08:00 via iPhone
    「结构在实现上就是抽象语法树」
    lisp ?
    x02
        21
    x02  
       2022-11-02 00:55:49 +08:00   ❤️ 6
    @sadhen 我并没有看懂, 也许很强大, 但你没有表达清楚, 至少我这样的凡夫俗子没有看懂.

    > 人类在计算机技术上能做的抽象层级越来越高了

    然后呢? 并没有引出下一个结论.


    > 人类需要更多的多样性!

    这种论点就像"硅谷需要更多女性"一样, 我对这种话题没兴趣.

    > 为什么英语要统治编程语言世界?

    因为我们的键盘是按照英文设计的, 也许未来我们可以用脑电波输入时, 编程语言的符号就不存在了. 人类的想法会被直接转换成 10.


    > 非洲某个部落的只有 1000 个人使用的语言也可以用做结构化编程语言的关键字

    只要你愿意, 当然可以, 不过我看不出来这有什么实际好处.

    > 未来人类在漫长的星际旅行中创造了一个语言? 那个时候英语是不合适的?

    首先, 我很好奇那些人为什么会在星际旅行中创造语言. 其次如果他们要创造语言, 自然它们不可能创造英语, 因为英语已经存在了, 但他们很有可能用英文字母, 如果他们还打算为这个新语言创造文字的话, 这一切都取决于那几个无聊的人怎么想. 话说未来的虚拟娱乐方式应该会很多吧.



    至于你最后说的不要游标卡尺和分号.

    JAVASCRIPT

    最好,

    你的这个语言也许很有意思, 我并不是打击你. 在这个消费的时代, 创造是值得鼓励的.
    sadhen
        22
    sadhen  
    OP
       2022-11-02 01:01:13 +08:00
    @humpy lisp 只是抽象语法树的一种“序列化”的方式。囿于时代,或者出于设计上简洁性的考量,lisp 所表达的抽象语法树仅仅支持字符串这种比较基础的 primitive node 。未来的编程语言的抽象语法树,它的节点是更加“高级”。比如我们现在能理解的图像数据和视频数据,他们都可以作为抽象语法树的节点。

    未来的人类在基础学科上的突破,可以想象,会有很多基础的东西,是现在的人类所无法理解的。
    maggch97
        23
    maggch97  
       2022-11-02 01:03:47 +08:00 via Android
    易语言被人吐槽的一点就是那个''结构化''的代码无法用 git track 改动
    12101111
        24
    12101111  
       2022-11-02 01:08:13 +08:00
    git 不支持这种语言的变动追踪,不如先实现一个结构化的 diff 算法
    sadhen
        25
    sadhen  
    OP
       2022-11-02 01:11:45 +08:00
    > 你的这个语言也许很有意思, 我并不是打击你. 在这个消费的时代, 创造是值得鼓励的.

    @x02 如果你是 GNU TeXmacs 或者 MPS 或者别的结构化编辑器的用户,你会觉得我并不是在“创造”。这样的设想其实是一群人的有共鸣的设想。只不过我在这里,和大家聊起这个话题。

    > > 非洲某个部落的只有 1000 个人使用的语言也可以用做结构化编程语言的关键字
    > 只要你愿意, 当然可以, 不过我看不出来这有什么实际好处.

    这里只是举个例子,说明使用结构化语言,用户可以很方便地自定义关键字。在结构化编辑器中,而且对于关键字,使用英语键盘输入是没有什么问题的。比如如果我定义了分支语句的中的关键字 IF 为如果,我需要输入“如果”,那么完全可以自定义快捷键,比如输入 r g tab 就得到如果。

    可定制的自由是很重要的自由,比如为什么我的淘宝首页非得是淘宝的产品、运营定制的,为什么这个首页非得是淘宝各种部门拉锯之后的结果。

    未来的编程语言在语法上会有很大的自由度,不论你用什么样的语法、什么样的渲染结果,最终内部的结构是统一,那么语义也是一致的。
    sadhen
        26
    sadhen  
    OP
       2022-11-02 01:14:49 +08:00
    @12101111 看这个视频的 https://www.bilibili.com/video/BV1MV4y137Qs 时间戳位置 26:30

    结构化的 DIFF 算法已经有了
    sadhen
        27
    sadhen  
    OP
       2022-11-02 01:20:15 +08:00
    > 我并没有看懂, 也许很强大, 但你没有表达清楚, 至少我这样的凡夫俗子没有看懂.

    @x02 我确实没有表达清楚,不过这是我一直有的想法。我有很多 Random Thoughts ,我需要在 V2EX 里面写下来,然后看一下有没有理解我的同类。再过段时间,我写一篇长文

    也谈未来的编程语言

    详细描述一下我对结构化编程语言的畅想,这里的未来,指的大概是 30 年内的。
    Aloento
        28
    Aloento  
       2022-11-02 01:33:47 +08:00
    当绝大部分人都看不懂的时候,这个东西就目前来讲,便已失去了实用性
    sadhen
        29
    sadhen  
    OP
       2022-11-02 01:39:16 +08:00
    > 至于你最后说的不要游标卡尺和分号.
    >
    > JAVASCRIPT

    这里也是举一个例子。由于结构化语言和结构化编辑器有一定程度的结合,可以保证我们不需要在意语法。

    更进一步,**使用结构化编辑器来编辑结构化的编程语言能够保证用户的每一次编辑都是可以通过编译器编译的**。

    如果做的更好的话,结构化编辑器甚至可以保证用户的每一次编辑,都是能够保证其正确性。我们现在的程序员经常在和 CI 做斗争,以后这是不需要的。

    如果下一次编辑只有一种可能,或者只有若干种可能,那么为什么不让用户自己选择呢?

    为什么一次编辑只能编辑一个文件?一次编辑当然可以编辑多个文件。

    为什么源代码需要用文件来组织呢?源代码当然可以和任何别的数据一样,完全不需要文件这种具体实现。
    sadhen
        30
    sadhen  
    OP
       2022-11-02 01:40:37 +08:00
    @Aloento 失去了对 2022 年大部分人类的实用性,不代表失去了对 2050 年大部分人类的实用性。
    sadhen
        31
    sadhen  
    OP
       2022-11-02 01:42:08 +08:00
    > 微软的 COM 也有点这个意思,因为文本是程序之间天然的 RPC 接口,而要想超越文本接口,就必须要设计一个放之四海而皆准的结构化接口,然后就成了 COM 这么个奇怪的东西

    @pocarisweat 曾经有过去微软打工赚钱的想法,但从来没有用微软的方轮子造自行车的想法。。。
    placeholder
        32
    placeholder  
       2022-11-02 02:44:39 +08:00
    全文对 [为什么不为人类设计一门结构化编程语言] 没有一丝一毫的探讨。

    点进来还以为能学点啥,哎,就不说脏话骂你了。
    AX5N
        33
    AX5N  
       2022-11-02 05:32:13 +08:00
    15 楼贴的 mps 的网站里,三张图马上就能明白 mps 的意图是什么,但 lz 说了半天也完全没搞懂 lz 想说什么。

    能不能用 photoshop 或者纸笔画几张效果图出来演示下?
    L4Linux
        34
    L4Linux  
       2022-11-02 07:14:09 +08:00 via Android
    我的理解就是富文本编程。。。
    sadhen
        35
    sadhen  
    OP
       2022-11-02 07:15:19 +08:00
    @AX5N 五楼也有图
    sadhen
        36
    sadhen  
    OP
       2022-11-02 07:19:37 +08:00
    @L4Linux 这里是要设计并实现一门编程语言。拿 ms-word 举例,设计一门 ms-word-lang ,这门语言会有一个 ms-word-interpreter ,然后这门语言的源代码是用 xxx.doc, xyz.docx 这样的格式存储的。

    ms-word-interpreter xxx.doc
    ms-word-interpreter xyz.docx

    这样就可以得到运行的结果。
    mizuhashi
        37
    mizuhashi  
       2022-11-02 07:49:02 +08:00 via iPhone   ❤️ 1
    支持楼主,比较期待看到实际的写程序体验。结构化编辑基于 mps 或者 notion 之类的体验,比较麻烦的是总要先选好节点类型再填内容,修改的话也要处理节点类型变化的问题,例如两个名字差不多的函数调用在文本编辑下可以删改几个字符,在结构化编辑下就要整个节点换掉。估计我作为一个已经成年的程序员还是更习惯文本的自由编辑,不过我确实认同未来的人可能会更习惯结构化编辑,如果从小就开始用结构化编辑器
    AX5N
        38
    AX5N  
       2022-11-02 07:53:02 +08:00
    @sadhen 你 5 楼那个图完全没看出来跟普通编程语言有啥区别。你把矩阵画成那样跟 [1, 2, 3, 4] 的区别在哪?就只有好看一些吗?
    greygoo
        39
    greygoo  
       2022-11-02 08:12:35 +08:00
    很早以前就见到了 JetBrains MPS,有这一个非常好的结构化代码编辑器可以实现一些数学公式: https://www.jetbrains.com/mps/img/screenshots/2017.2/projectional-editor.png
    greygoo
        40
    greygoo  
       2022-11-02 08:22:01 +08:00
    sadhen
        41
    sadhen  
    OP
       2022-11-02 08:28:04 +08:00
    @AX5N 后面做个视频回复你吧
    sakura6264
        42
    sakura6264  
       2022-11-02 08:33:35 +08:00   ❤️ 1
    “关键字自由”:是说我看别人项目时候还要新学一套关键字吗?
    这种自由在编程当中并不需要,要是真追求自由为什么不用 goto ,不用函数指针,if ,while 和面向对象真是 low 爆了(逃)
    以及你这个编辑器甚至还会限制用户的“编辑器自由”。
    实际上写程序时候这些玩意都不重要,文本的处理方式已经很成熟了,英文键盘已经很成熟了,换你这一套没有必要。
    在我看来做这个就是在标新立异而已,和那些妄想统治世界的编程语言没啥区别。
    sadhen
        43
    sadhen  
    OP
       2022-11-02 08:55:02 +08:00
    @sakura6264 每个人都可以定制自己的关键字、代码结构的显示。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    但是,我认为不需要用这种方式来吸引眼球。所以我没有在那个帖子中用这种标题。
    KaGaMiKun
        61
    KaGaMiKun  
       2022-11-02 09:58:15 +08:00
    唔,想法听着挺有意思的
    可是对于“每个人都可以定制自己的关键字、代码结构的显示”,这个应该不太实用吧?
    比如现在的编程基本都是需要给别人看的,倘若极限点,每个人的关键字都不一样,这阅读性太差了吧?
    就像一篇天书论文一般

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

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

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

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

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

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

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

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

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

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

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

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

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

    详见我在 29 楼 的描述。有一道经典的 ACM 题,和编辑距离有关。那个是基于字符串的。我有思考过,对于结构化的编程语言,如何去衡量语法正确的两份代码之间的结构化编辑距离,又如何去衡量语义正确的两份代码之前的结构化编辑具体。
    sadhen
        77
    sadhen  
    OP
       2022-11-02 11:24:45 +08:00
    @bigbigpark 那么,可以用 inclusive 这个词么?
    bigbigpark
        78
    bigbigpark  
       2022-11-02 11:27:04 +08:00
    @sadhen 你可以说 Nobody knows it better than me
    lululau
        79
    lululau  
       2022-11-02 11:27:41 +08:00
    哪门编程语言不是结构化的。。。不是结构化的话,那怎么解析怎么编译啊。。。
    abc8678
        80
    abc8678  
       2022-11-02 12:10:11 +08:00 via Android
    很久没用易语言了,一看易语言里还留着 IE 、media player 这些组建
    aecra1
        81
    aecra1  
       2022-11-02 12:50:09 +08:00 via Android   ❤️ 1
    我觉得你需要做的是统一语法结构树,甚至是统一中间代码,你要做的工具不仅仅是支持直接编辑语法结构树,更得支持反编译到不同编程语言,你这是要搞编程语言的大一统啊,关键是 Java 的注解、jvm 和 go 的 goroutine ,channel 这些根本不可能统一甚至相互转化,你要说计算结构化编辑距离,我觉得你可以看看这篇文章 https://zhuanlan.zhihu.com/p/40568346?utm_id=0
    mokevip
        82
    mokevip  
       2022-11-02 13:14:12 +08:00
    大概看了一下评论和回复,大家的评论 OP 貌似没怎么听得进去,散了散了
    mailes
        83
    mailes  
       2022-11-02 13:29:53 +08:00
    太高级了,我不配用。
    sadhen
        84
    sadhen  
    OP
       2022-11-02 13:37:54 +08:00
    @aecra1 直接从语法结构树编译到相关平台的字节码就可以了。只要实现 Library 和 Interopability (可交互性),就会有实用的价值。

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

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

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

    > 太高级了,我不配用。

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

    而且,我这边设想的结构化编程语言目前连语言标准都没有设计好,更不要说一个可用的参考实现了。等我!
    sadhen
        86
    sadhen  
    OP
       2022-11-02 13:44:18 +08:00
    @mokevip 我收集了不少有用的信息。你可以看到,有爱心❤️标志的回复,就是我觉得有用的回复!
    sadhen
        87
    sadhen  
    OP
       2022-11-02 13:51:58 +08:00
    举一个杨博的 Haxe 代码仓库例子: https://github.com/Atry/protoc-gen-haxe
    chuxi
        88
    chuxi  
       2022-11-02 14:11:16 +08:00   ❤️ 1
    要不研究一下 LLVM 的设计?也许对你有点帮助
    lambdaq
        89
    lambdaq  
       2022-11-02 15:56:52 +08:00
    LZ 比较喜欢 haxe ,但是 haxe 当年是有卖点的。它丫的是唯一支持输出 .swf 的第三方语言。。
    aguesuka
        90
    aguesuka  
       2022-11-02 16:03:01 +08:00
    感觉直接上语言难度太大了, 不如先作一个领域的, 比如 latex 的替代.
    manasheep
        91
    manasheep  
       2022-11-02 16:33:06 +08:00
    我觉得大概就是虚幻那种蓝图模式就可以吧,局限在语言上做突破太难了。
    StevenRCE0
        92
    StevenRCE0  
       2022-11-02 17:26:25 +08:00
    很喜欢 OP 这个想法,关注了
    fy
        93
    fy  
       2022-11-02 20:08:27 +08:00 via Android
    蓝图? ue 那种吗
    再加上变量表
    whileFalse
        94
    whileFalse  
       2022-11-02 21:04:21 +08:00 via iPhone   ❤️ 1
    我记得之前有过这种东西… 当时概念设计得神乎其神 说首先不可能写出语法错误;其次只能在云中执行( ide 、runtime 和部署层都在云里)再次数据库层面可以无缝升级,老代码存储的数据可以经过一系列的变换自动转换成新版代码可用的数据等等…但是我忘了那语言叫什么,估计已经死了吧
    sadhen
        95
    sadhen  
    OP
       2022-11-02 21:11:03 +08:00
    @whileFalse 我感受到你已经理解我的想法了。谢谢!
    sadhen
        96
    sadhen  
    OP
       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
        97
    FrankHB  
       2022-11-02 21:26:27 +08:00   ❤️ 3
    我暂时不具体评论 idea ,不过看起来 OP 对本领域现有进展的了解不是特别清楚:
    https://github.com/yairchu/awesome-structure-editors/blob/main/README.md
    sadhen
        98
    sadhen  
    OP
       2022-11-02 21:31:24 +08:00
    @FrankHB 感谢,我有一个朋友刚刚告诉我 Enso 这门语言。原来还有这么多同类!

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

    你发给我的正是我最需要的!发现很早之前就关注你的 Github 账号了,^_^
    Leviathann
        100
    Leviathann  
       2022-11-02 21:55:43 +08:00
    @whileFalse darklang?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2681 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 12:42 · PVG 20:42 · LAX 05:42 · JFK 08:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.