理念
为什么选择 Kinal?
编程语言繁多。这里解释为什么 Kinal 存在,以及它试图以不同方式解决哪些问题。
舒适与能力之间的鸿沟
C#、Java 和 Python 等高级语言提供了高效的语法、丰富的生态系统和出色的开发体验。但当你需要编写原生库、调用 C API、直接操作硬件或控制运行时本身时,这些语言会遇到瓶颈。
C、C++ 和 Rust 等系统语言提供了硬件访问能力。但语法变得密集,学习曲线变陡,简单的事情也需要花费比应有更多的精力。
Kinal 从一开始就被设计用来占据这两个极端之间的空间。
设计原则
1. 语法应该保持平静
无论你在编写 Web 处理程序、FFI 绑定还是内存分配器,代码看起来应该是可辨认且可读的。
2. 特性应当证明其价值
OOP、元数据、代码块、委托 — Kinal 中的每个特性都存在于解决真实代码库中的真实问题。
3. 一门语言,全栈覆盖
你不应该需要为 FFI 切换到 C、为构建脚本切换到其他工具、或为底层运行时工作切换到另一门语言。
4. 原生控制不是逃生舱口
FFI、指针操作和运行时 API 是 Kinal 中的一等公民,是语言设计的一部分。
Kinal 有何不同?
| 方面 | C / C++ | Rust | C# / Java | Kinal |
|---|---|---|---|---|
| 可读语法 | 有限 | 中等 | ✓ 干净 | ✓ 干净 |
| 原生编译 | ✓ | ✓ | 仅 JIT | ✓ LLVM |
| FFI(调用 C) | 原生 | unsafe 块 | P/Invoke / JNI | ✓ 内置 |
| OOP | 部分 | 仅 Trait | ✓ 完整 | ✓ 完整 |
| 元数据/反射 | ✗ | 有限宏 | ✓ | ✓ |
| 编译器自举 | ✓ | ✓ | ✓ | 尚未完全自举 |
