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

发布于

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

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

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

---

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

**生产力才是硬道理。**

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

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

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

---

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

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

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

---

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

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

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

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

---

原文链接:[点击查看](https://www.v2ex.com/t/1229354)

评论(4)

别光说没用啊,倒是把语言或者代码开源发个链接出来让大家开开眼、观摩一下呗。

· 0 个赞

回复

其实语法风格和主流语言差不多,大家看着应该挺眼熟的,不会觉得别扭。随便贴段实战代码你感受下:

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
}
}

这语言真正的优势在于底层的自动分析和性能优化能力。

· 0 个赞

楼主自己玩玩还可以,但说实话搞小众语言最头疼的就是没生态,难道全行业的包都要你一个人去写去维护吗?

· 0 个赞

回复

其实前期生态完全不用自己从头死磕,我这语言可以直接导入 Go 的包,配套也写了工具能直接把 Go 代码翻译过来。至于开发常用的 IDE 插件这些,早就搞完善了。

· 0 个赞