如何从零设计一门编程语言? - AQ

碧浪
• 阅读 151

本文简介

如何从零设计一门编程语言?新型的编程语言应该包括那些部分?
本文章将通过AQ语言的设计,详述开发一个编程语言的过程,从零开始设计、开发编译器和相关基础设施,最终完成一门编程语言的构建。

AQ简介

AQ 是一种解释性编程语言。它快速小型简单安全。 同时,用AQ编写的程序也可以编译。此外,AQ的源代码可从GitHub获取,开源并遵循AQ 许可证

Github地址:https://github.com/aq-org/AQ ,您可以从此处获得AQ的源代码。

特点

  • 快速源代码编译和运行速度
  • 小型源代码大小)
  • 简单(易于学习)
  • 安全(安全的内存管理代码检查
  • 跨平台(支持 WindowsLinuxMacOS 等)
  • 类似C++语法(快速掌握)
  • 解释性(可选编译
  • 免费(遵守 AQ 许可证
  • 开源(基于 AQ 许可证

设计

原方案

AQ最早于2023年10月开始开发,AQ于2024年2月1日进行重构,在此期间经过多次修改,至今形成大致框架。

原方案通过C++实现编译器后再实现虚拟机。但由于编译器需要翻译为虚拟机的字节码,同时编译器开发时间过长,因此原版本已放弃,代码已全部删除,但可在commits中查找。

新方案

新方案决定先行开发AQ虚拟机,后通过其它方法实现编译器。由于通过c语言开发,因此AQ虚拟机减少了性能开销并获得了更广的支持。AQ虚拟机目前大致分为解释器内存运行时操作系统库

  1. 解释器AQ虚拟机的执行引擎。目前正在开发字节码指令的执行函数。
  2. 内存AQ虚拟机的存储。由于效率原因,AQ虚拟机基于寄存器架构。未来将加入垃圾回收机制。
  3. 运行时AQ虚拟机的依赖环境,包括错误处理,标准输出等必要组件,为AQ提供基本的运行环境。
  4. 操作系统库则是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进行改编或转载。

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4年前
学Python后到底能干什么?
Python是一种什么语言?Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Java语言等,Python是他们其中的一种。首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等,
学python的猫 学python的猫
4年前
python——零基础照样学
零基础,可以学编程嘛?这是很多初学者的心里都会存在的一个问题,当然,计算机方面的基础对任何一门编程语言的学习都是会有所帮助的,但是如果你在编程语言的学习上是零基础的话,也不用担心,因为不论哪门语言的学习,总是会有一个开始的。谁不是从零基础开始呢。我个人观点是python,是最适合作为学习编程路上的入门语言。原因大家都懂,python语言相对于其他语言来说
Stella981 Stella981
3年前
Scala学习(一):Scala简介与Hello World!
一.Scala是什么Scala是一门多范式的编程语言,类似于Java。设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。二.环境准备(以Windows下安装Scala为例)1.官网:http://www.scalalang.org/ 下载安装包:!image(https://static.osc
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
C#与.NET
C从本质上来说,它是一门编程语言。他不是.NET体系的一部分。虽然C总是用来生成.NET平台的代码。C语言不能孤立的使用,必须与.NET平台一起使用。这样才能大大提高开发效率。相对于C,Java等语言,C是一种比较新的语言。它是在吸收了C和Java语言在设计上的优点设计出来的。从一开始C就被设计为面向对象的开发语言。.NETFra
Wesley13 Wesley13
3年前
JavaSE复习~Java语言发展史
Java概述什么是Java语言?Java语言是美国Sun公司(StanfordUniversityNetWork),在1995年推出的高级编程语言。所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。Java是一种可以撰写跨平台应用程序的面向对象的程序设计语
Damumu Damumu
2年前
Anaconda介绍及安装教程
Python与AnacondaPython是一门编程语言,Anaconda是一个开源的Python发行版本。两者区别在于前者是一门编程语言,后者相当于编程语言中的工具包。如果把Python程序员比作工匠,那么Anaconda就是一个专门为Python工匠准
碧浪
碧浪
Lv1
你就在旁边却感觉隔了一个世纪.
文章
5
粉丝
0
获赞
0