跳到主要内容

常见问题

本文档解答了关于 Alia 语言的常见问题。

1. 基础问题​

1.1 什么是 Alia 语言?​

Alia 是一种真正语法可定义的“原初编程语言”,设计原则是让语法成为编程语言的核心,可以通过语法定义来扩展和定制语言特性。

1.2 Alia 语言的设计目标是什么?​

  • 语法优先:语法是 Alia 的核心,通过 alias 关键字可以定义新的语法结构
  • 可扩展性:可以通过静态定义来扩展语言功能
  • 多后端支持:编译后端包含 JavaScript、Node.js 与 Rust,LLVM 后端处于规划中
  • 人类友好:符合自然语言习惯,代码风格舒适、逻辑严谨
  • AI原生:全面支持人工智能开发,成为一种 AI 时代的全新编程体系

1.3 Alia 语言与其他语言的区别是什么?​

Alia 的核心特点是其语法可定义性,通过 alias 关键字可以灵活定义新的语法结构,而其他语言的语法通常是固定的。此外,Alia 支持多后端编译,可以将代码编译到多种目标语言。

2. 编译问题​

2.1 Alia 支持编译到哪些目标语言?​

当前编译后端包含以下目标语言:

  • JavaScript
  • Node.js
  • Rust

Python、C++ 与 LLVM IR 后端尚未实现。编译系统允许自定义其他目标语言。

2.2 如何设置编译目标语言?​

编译目标语言由 --lang:<value> 命令行参数或 config.json 中的 compiler.lang 字段决定,命令行参数的优先级高于配置文件;两者均未声明时回退到默认语言 js。

alia build --lang:js
alia build --lang:rs
alia run --lang:js

3. 运行问题​

3.1 如何运行 Alia 代码?​

alia start 以解释模式执行项目根目录下的 main.alia:

alia start

3.2 如何编译 Alia 代码到其他语言?​

alia build 将项目编译到 build/<lang>/ 目录,目标语言的解析规则与 alia run 一致:

alia build --lang:js
alia build --lang:rs

3.3 Alia 代码的执行机制是什么?​

Alia 使用栈(Stack)来执行代码,栈可以:

  • run:执行栈内容
  • break:跳出栈

4. 标准库问题​

4.1 Alia 有哪些标准库?​

Alia 提供以下标准库:

  • args:命令行交互
  • ffi:外部函数接口
  • fs:管理文件系统
  • io:输入与输出
  • process:进程管理
  • web:访问网络

4.2 如何导入标准库?​

标准库通过 import 语句引入,as 关键字为模块指定别名:

import 'fs' as fs
import 'process' as process

4.3 如何使用标准库函数?​

标准库函数采用语法式调用,多参数以辅助关键字分隔,零参数成员以 call 调用:

import 'fs' as fs
import 'process' as process

fs.write 'Hello' to 'a.txt'
const home = process.envGet 'HOME'
const now = call Date.now

6. 工具和生态​

6.1 有没有 Alia 语言的编辑器插件?​

VS Code 插件已提供 Alia 语言支持,涵盖语法高亮、格式化、诊断、运行与编译、智能补全以及跨文件索引。

6.2 如何贡献到 Alia 项目?​

可以通过 rGit 提交 issue 或 pull request 来贡献到 Alia 项目。
项目进入 v1 之后,开发平台将会转为 GitHub。

6.3 Alia 语言的未来发展计划是什么?​

  • 实现自举,使用 Alia 本身来编写 Alia 编译器
  • 完善标准库
  • 开发更多编辑器插件
  • 支持更多编译目标语言
  • 建立包管理器

7. 版本目标​

v0.1 阶段目标​

  • 解释器实现所有语法
  • 支持到 JS 的编译器
  • 开发文档
  • 项目管理命令行

v0.2 阶段目标​

  • 实现所有标准库
  • 支持到 Rust 的编译器
  • 模组空间命令行与网站

v0.3 阶段目标​

  • 实现自举
  • 支持到 LLVM 的编译器

下一步​