· Blog · 4 min read
如何从零设计一门编程语言? - AQ
如何从零设计一门编程语言?新型的编程语言应该包括那些部分?本文章将通过AQ语言的设计,详述开发一个编程语言的过程,从零开始设计、开发编译器和相关基础设施,最终完成一门编程语言的构建。
本文简介
如何从零设计一门编程语言?新型的编程语言应该包括那些部分?
本文章将通过AQ语言的设计,详述开发一个编程语言的过程,从零开始设计、开发编译器和相关基础设施,最终完成一门编程语言的构建。
AQ简介
AQ 是一种解释性
编程语言。它快速
、小型
、简单
且安全
。 同时,用AQ编写的程序也可以编译
。此外,AQ
的源代码可从GitHub
获取,开源并遵循AQ 许可证
。
Github地址:https://github.com/aq-org/AQ ,您可以从此处获得AQ
的源代码。
特点
- 快速(
源代码
编译和运行速度
) - 小型(
源代码
大小) - 简单(易于学习)
- 安全(安全的
内存管理
和代码检查
) - 跨平台(支持
Windows
、Linux
和MacOS
等) - 类似
C++
语法(快速掌握) - 解释性(可选
编译
) - 免费(遵守
AQ 许可证
) - 开源(基于
AQ 许可证
)
设计
原方案
AQ最早于2023年10月开始开发,AQ于2024年2月1日进行重构,在此期间经过多次修改,至今形成大致框架。
原方案通过C++实现编译器后再实现虚拟机。但由于编译器需要翻译为虚拟机的字节码,同时编译器开发时间过长,因此原版本已放弃,代码已全部删除,但可在commits中查找。
新方案
新方案决定先行开发AQ虚拟机
,后通过其它方法实现编译器。由于通过c语言开发,因此AQ虚拟机
减少了性能开销并获得了更广的支持。AQ虚拟机
目前大致分为解释器
、内存
、运行时
、操作系统库
。
解释器
是AQ虚拟机
的执行引擎。目前正在开发字节码指令的执行函数。内存
是AQ虚拟机
的存储。由于效率原因,AQ虚拟机
基于寄存器架构。未来将加入垃圾回收机制。运行时
是AQ虚拟机
的依赖环境,包括错误处理,标准输出等必要组件,为AQ提供基本的运行环境。操作系统库
则是AQ虚拟机
与操作系统交互的必要组件。
通过这样四个部分的设计,基本上包含了绝大多数解释性语言虚拟机的组件。未来如果编程语言功能不断扩展时,可以通过增加组件实施升级。
原因和优势
AQ语言设计为解释性语言的原因是多平台兼容性,同时在未来可以进一步对不同操作系统进行编译器的开发工作,使开发效率更高。同时基于寄存器架构则减少了性能的损失。
我们正在更加努力地开发
AQ虚拟机
。如果您想了解更多信息或参与开发工作,请关注我们的官网:https://www.axa6.com 和 Github:https://github.com/aq-org/AQ。
本文章基于AQ License:https://github.com/aq-org/AQ/blob/main/LICENSE 发布,如有需要,请根据AQ License进行改编或转载。