我发现了自研编程语言的一条出路

15 小时 1 分钟前
 xuld

一个月前,我将编译器的 23 万行源码全部移植到了自研编程语言。

功能不变,但代码量直接缩减到了 19 万行。

然后这个月用自研的语言继续自举开发,感觉越用越爽,也终于感受到了自研的价值。


之前一直被质疑做小众语言毫无意义,但现在觉得:

生产力才是硬道理。

产品初期,不需要寻求他人认可。

只要自己有用,那就 OK 了。

等自己用了一段时间,产品也稳定后,必然能找到同样觉得它好用的用户。


在我的语言里面,最重要的功能是“模式匹配、自动导入、自动构造函数、编译期装饰器、部分类”,之前的 4 万行代码就是靠这些功能省下来的。

再也不用等主流语言支持,已经先用上了,确实很爽。

不过,目前还有很多功能没实现。如果都实现了,开发效率还能再提升几个台阶。


我觉得未来编程语言的价值不是为了让代码写起来更短,而是为了让代码读起来更清晰、测试起来更轻松,因为 AI 编程是趋势。

我将其他语言的代码移植到自己的语言时,是写了一个小工具自动翻译的,而不是人工移植。这样正确性和效率都高很多。

面向 AI 的编程语言,需要支持更多的静态分析和自我修复能力,同时也需要暴露更多的 LSP API 。

未来编程语言的主战场,不是比谁的代码写起来更快,而是 AI 生成什么语言能更正确、token 更少。

1370 次点击
所在节点    程序员
8 条回复
llsquaer
14 小时 45 分钟前
你倒是发出来观摩下啊
cc9910
14 小时 42 分钟前
娱乐就好,其实有很多小语种编程,但是没生态有什么用,难道一人维护全行业?
xuld
14 小时 12 分钟前
@cc9910 初期,生态不需要自己建,可以直接导入 go 的包,然后也做了工具直接将 go 的代码翻译过来。其他配套工具比如 ide 插件,都已经完善了
xuld
14 小时 6 分钟前
@llsquaer 语法风格和主流语言差不多,我认为多数程序员看了都不会反感。比如这是一段实际的代码:

```
private getArrayElementTypeNode(node: TypeNode) {
match (node) {
case ParenthesizedTypeNode:
return getArrayElementTypeNode(node.type)
case ArrayLiteralTypeNode:
if (node.elements.length == 1) {
node = node.elements[0]
if (node is ArrayLiteralTypeNode.RestElement) {
return getArrayElementTypeNode(node.type)
}
}
case ArrayTypeNode:
return node.elementType
}
}
```

优势在语言的自动分析、性能优化的能力。
june4
13 小时 21 分钟前
这个语言可以用 ai vibe 吗
xuld
13 小时 0 分钟前
@june4 AI 没学过新语言。

但 AI 可以正确理解这个语言写的代码(因为语法和主流语言差不多,AI 能猜对语法啥意思)。

只是让他写这个语言的代码,容易按其他语言的习惯写了,容易写错。

所以,我做了一个工具,AI 只生成 go 的代码,然后通过工具自动翻译成新语言。

我自己就是这样用的。
kissthekidlu
9 小时 42 分钟前
人家说 ai 都是用现有的代码训练了,新的语言没有什么优势.
redbule
8 小时 58 分钟前
怎么感觉你说的就是 moonbit 在做的…

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

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

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

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

© 2021 V2EX