我在造一个编程语言,叫 Free
我在造一个编程语言,叫 Free
最近朋友们问我都在忙什么,我说在写一个新的编程语言。他们通常先是一愣,然后问:“为什么?现在不是已经有Python、Go、Java这些了吗?”
说实话,这个问题我也问过自己很多遍。
为什么还要造轮子?
记得刚开始学编程的时候,用的是C语言。那时候总觉得,要是能有一门既保留C的性能,又有现代语言的开发体验,还能更符合中文开发者思维习惯的语言该多好。
十几年过去了,这个想法一直在心里。直到最近,终于决定把它实现出来,名字就叫Free。
为什么叫Free?不是因为它免费,而是希望开发者在使用时能感受到那种“自由”——从繁琐的语法束缚中解放出来,从复杂的配置中解脱出来,当然它确实免费。
现在的进度
目前正处在早期最关键的语法分析阶段。这就像在教一个刚出生的婴儿理解人类语言:我要告诉计算机,当它看到class后面跟着一个单词时,那是在定义一个类;当看到fun时,是在定义函数。
有时候调试一个语法规则就要花上整个晚上。上周为了搞定函数调用链的解析(比如a.b().c()这种),喝了不下五杯咖啡。
技术选型的思考
选择 Kotlin/Native 来写初代编译器,是个经过很多纠结的决定。
Kotlin有着很现代的语言特性,它的扩展函数、空安全让编译器代码写起来很舒服。而且通过Native可以直接编译成机器码,不需要依赖JVM,这对一个编译器来说很重要。
后端选择LLVM,说实话是有点“站在巨人肩膀上”的意思。LLVM已经解决了最难的代码优化和跨平台问题,我可以专注于语言本身的设计。
宏大的自举目标
说出来可能有人会觉得不切实际,但我确实在规划一个很重要的里程碑:在2.0版本时,用Free语言本身来重写Free的编译器。
这就像小鸡孵出后要自己下蛋一样。现在我用Kotlin在“孵”Free,等Free长大了,它就要学会自己“下蛋”。
这个过程会很难。想象一下,你要用一门还不成熟的语言去写它自己的编译器,这就像是拽着自己的头发想离开地面。但这也是最有魅力的地方——如果一个语言连自己的编译器都写不了,那它凭什么让别人信任呢?
在国内做这件事的难处
说实话,在国内做基础软件研发,氛围确实不如国外。
大家更关注的是“这个能马上带来业务价值吗?”“能快速上线吗?”,而对于编译器、操作系统这些底层技术,往往觉得“直接用现成的就好了,为什么要自己造?”
但我始终觉得,如果我们永远只在应用层打转,就永远只能在别人的技术地基上盖房子。什么时候能盖出自己设计的摩天大楼?
未来的想象
我理想中的Free,应该是个这样的语言:
- 写起来像Kotlin一样舒服
- 跑起来像C一样快
- 错误提示像Rust一样友好
- 生态像JavaScript一样丰富
我知道这个目标很远大,可能要好几年甚至几十年才能看到雏形。但每当想到未来可能有开发者用着我创造的语言去实现他们的创意,就觉得现在的一切辛苦都值得。
接下来的路
语法分析器完成后,还有语义分析、中间代码生成、LLVM IR生成、标准库建设……路还很长。
有时候晚上加班到很晚,看着满屏的编译器代码,也会问自己:“这么拼值得吗?”
但第二天早上起来,看到昨天卡住的问题有了突破,那种喜悦又是别的任何事情都无法替代的。
如果你也对编程语言设计感兴趣,或者只是想给我加个油,都很欢迎来交流。造语言这条路很孤独,但想到未来可能有人因为Free而爱上编程,就觉得一切都有了意义。
还在继续coding中,下次再聊
