编程语言是构成软件的基石,是算法的载体,是广大程序员群体赖以生存的技能,以及进行发明创造的快乐源泉。然而世界上的编程语言千千万,每年还会涌现出更多新的编程语言,设计并开发一个编程语言真的有那么神秘嘛?实际上,大多数编程语言的编译器早期都是使用 C 和 C++ 等系统语言开发,与一般的软件工程别无二致,但是近年来随着 Rust 这门高性能、高安全的系统语言的热度逐渐攀升,也涌现了很多直接使用 Rust 语言编写的编译器,那么该如何使用 Rust 设计并开发自己的一个领域编程语言呢?
OSCHINA 本期高手问答 (11 月 10 日 - 11 月 16 日) 我们请来了徐鹏飞老师和大家一起探讨关于编程语言设计与开发相关的问题。
可讨论的问题包括但不限于:
- 编程语言及编译器相关设计与开发
- 云原生配置相关内容
- 区块链智能合约相关内容
- Rust 语言相关内容
此外,还可以专注于开源的使用 Rust 语言开发的领域编程语言 [KCL] 的源码、设计、实践等相关细节进行提问和讨论。
嘉宾介绍
徐鹏飞,蚂蚁集团工程师,工作长期聚焦在 Rust 语言及编程语言设计与开发领域,包括编译器前端、编译器中后端、LLVM、WASM 等。KCL 记录及函数语言、Sonar 智能合约语言核心设计与开发工程师。

- KCL 项目地址: https://github.com/KusionStack/KCLVM
- Github: https://github.com/Peefy
- 开源中国:https://my.oschina.net/u/4724711
为了鼓励踊跃提问,我们会在问答结束后从提问者中抽取 5 名幸运会员赠予随机福袋一份。

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。
下面欢迎大家就编程语言设计与开发相关的问题向徐鹏飞老师提问,请直接回帖提问。
Rust
高手问答
@徐鹏飞Peefy 你好,作为一个程序员,哪个能拒绝按照自己的意图设计一个语言呢?
但是作为编译器设计方面的门外汉,我一直有个疑问,就是如何实现一个语言的“方言”?
比如,举例:
我一直看 rust 的 mut 关键字很不爽,总是觉得应该用个符号,比如 let $var 这样来代替 let mut var,而不是用个看起来很不直观的关键字作为可写变量的标志。
请问,类似这样的意图,如何实现?需要改动哪些方面,以及掌握哪些知识储备呢?
Rust会在桌面程序上带来改变吗,或者说Rust社区有这部分尝试吗,哪怕是做游戏引擎。现在这部分还是C系和JS的方案更多。
引用来自“霡霂”的评论
Rust会在桌面程序上带来改变吗,或者说Rust社区有这部分尝试吗,哪怕是做游戏引擎。现在这部分还是C系和JS的方案更多。
我个人感觉会带来一些改变的,从可靠性、稳定性和安全性上,像 Rust 社区里面最火的几个项目就包含了桌面 UI 比如 tauri 等,游戏引擎如 bevy 等,而且据我所知目前国内外有些公司都有在使用 Rust 在这方面做开发和尝试。