docs: STRATEGY.md — как Bux ще победи Rust, Nim и C (gradual ownership)
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# Как Bux ще победи Rust, Nim и C
|
||||
|
||||
> **Дата:** 2026-05-31 | **Версия:** 0.2.0 (bootstrap)
|
||||
|
||||
---
|
||||
|
||||
## Пазарна позиция
|
||||
|
||||
Всеки език заема ниша. Bux влиза **между тях** с уникална философия:
|
||||
|
||||
```
|
||||
Скорост на писане (бързо → бавно):
|
||||
C ████████████████████ (няма абстракции, но бързо става)
|
||||
Nim ██████████████ (изразителен, GC)
|
||||
Bux ████████████████ (изразителен, без GC)
|
||||
Rust ████████ (borrow checker бави)
|
||||
|
||||
Безопасност (ниска → висока):
|
||||
C ████ (ръчна, pointer-и)
|
||||
Nim ████████ (GC предпазва от leak, не от use-after-free)
|
||||
Bux ████████████ (опционален borrow checker)
|
||||
Rust ██████████████████ (пълен borrow checker)
|
||||
|
||||
Производителност (бавно → бързо):
|
||||
Nim ████████████ (GC добавя overhead)
|
||||
Rust ██████████████████ (zero-cost abstractions)
|
||||
C ██████████████████ (близо до метала)
|
||||
Bux ██████████████████ (C transpiler → native)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Уникалното предимство: Gradual Ownership
|
||||
|
||||
**Никой друг език не предлага това.**
|
||||
|
||||
| Модел | Език | Как работи |
|
||||
|-------|------|------------|
|
||||
| Всичко непроверено | C, Zig | Бързо писане, бъгове в runtime |
|
||||
| Всичко проверено | Rust | Бавно писане, безопасно в compile-time |
|
||||
| **Опционална проверка** | **Bux** | **Бързо писане, проверка само на критичния код** |
|
||||
|
||||
### Синтаксис
|
||||
|
||||
```bux
|
||||
// Режим 1: Без проверки (като C/Nim) — за бързо прототипиране
|
||||
func QuickHack(arr: *int, len: int) {
|
||||
for i in 0..len {
|
||||
arr[i] = arr[i] * 2; // no bounds check, no borrow check
|
||||
}
|
||||
}
|
||||
|
||||
// Режим 2: С проверки (като Rust) — за critical paths
|
||||
@[Checked]
|
||||
func SafeMerge(a: &[int], b: &[int]) -> Vec<int> {
|
||||
// borrow checker проверява че a и b не се припокриват
|
||||
// bounds checking на всеки достъп
|
||||
// lifetime tracking гарантира че резултатът не надживява входовете
|
||||
}
|
||||
```
|
||||
|
||||
### Защо това печели
|
||||
|
||||
| Програмист | Какво иска | Решение |
|
||||
|------------|------------|---------|
|
||||
| **C програмист** | "Не ми се занимава с borrow checker" | Пише без `@[Checked]`, получава C-скорост |
|
||||
| **Rust програмист** | "Искам гаранции за safety" | Добавя `@[Checked]` на критичните функции |
|
||||
| **Team lead** | "Искам баланс скорост/безопасност" | Prototype бързо, harden после |
|
||||
| **Startup** | "Трябва да shipping-нем вчера" | Без проверки за MVP, добавят се после |
|
||||
|
||||
---
|
||||
|
||||
## Вторични предимства
|
||||
|
||||
### 2. Compile-time функции (CTFE)
|
||||
|
||||
```bux
|
||||
// Nim има CTFE, Rust няма (само const fn с ограничения)
|
||||
const func Fib(n: int) -> int {
|
||||
if n <= 1 { return n; }
|
||||
return Fib(n-1) + Fib(n-2);
|
||||
}
|
||||
|
||||
const FIB_40 = Fib(40); // изчислява се при компилация
|
||||
```
|
||||
|
||||
**Предимство:** Предварително изчислени таблици, парсъри, валидации на compile-time, които Rust не може.
|
||||
|
||||
### 3. По-прост от Rust
|
||||
|
||||
```bux
|
||||
// Rust: трябват lifetime annotations
|
||||
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { ... }
|
||||
|
||||
// Bux: без анотации в обикновен код
|
||||
func Longest(x: String, y: String) -> String { ... }
|
||||
// Само в @[Checked] зони се добавят при нужда
|
||||
```
|
||||
|
||||
### 4. По-бърза компилация от Rust
|
||||
|
||||
```
|
||||
Rust (LLVM): 10-60 секунди за среден проект
|
||||
Bux (C): <1 секунда за среден проект (като Nim)
|
||||
```
|
||||
|
||||
C backend → gcc/clang компилират C много по-бързо отколкото LLVM компилира Rust.
|
||||
|
||||
### 5. Algebraic типове (Nim ги няма нативно)
|
||||
|
||||
```bux
|
||||
// Bux: първокласни algebraic enums
|
||||
enum Result { Ok(int), Err(String) }
|
||||
let x = Ok(42);
|
||||
match x { Ok(v) => ..., Err(e) => ... }
|
||||
|
||||
// Nim: трябват макроси или object variants
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Пътна карта за победа
|
||||
|
||||
| Фаза | Feature | Ефект |
|
||||
|------|---------|-------|
|
||||
| **8.1** | ✅ Error handling (`?`, `!`) | По-чисто от Nim |
|
||||
| **8.2** | ⏳ `@[Checked]` borrow checker | **Уникално — това е оръжието** |
|
||||
| **8.3** | ⏳ Concurrency (tasks + channels) | Go-стил леки нишки |
|
||||
| **8.4** | ⏳ CTFE (`const func`) | Nim-level метапрограмиране |
|
||||
| **8.5** | ⏳ Trait система | Rust-стил генерици |
|
||||
| **8.6** | ⏳ Макроси | Nim-стил метапрограмиране |
|
||||
| **8.7** | ⏳ LSP сървър | IDE поддръжка |
|
||||
|
||||
---
|
||||
|
||||
## Target аудитория
|
||||
|
||||
1. **C програмисти** искащи по-добър tooling → Bux дава типове, генерици, pattern matching без GC
|
||||
2. **Nim програмисти** искащи C-like синтаксис → Bux има същата скорост, по-познат syntax
|
||||
3. **Rust програмисти** уморени от borrow checker → Bux дава safety само където трябва
|
||||
4. **Нови програмисти** → Bux е по-прост от Rust, по-строг от Python
|
||||
|
||||
---
|
||||
|
||||
## Рискове
|
||||
|
||||
| Риск | Вероятност | Митигация |
|
||||
|------|------------|-----------|
|
||||
| Borrow checker твърде сложен за имплементация | Средна | Започваме с basic: само `&T` и `&mut T`, без lifetimes |
|
||||
| Няма достатъчно ecosystem | Висока | Първо self-hosting, после пакети |
|
||||
| Няма corporate backing | Висока | Open-source community подход |
|
||||
| C backend ограничава производителността | Ниска | C компилаторите са 30+ години оптимизирани |
|
||||
|
||||
---
|
||||
|
||||
## Заключение
|
||||
|
||||
**Bux не трябва да е "по-добър Rust" или "по-добър Nim".** Той трябва да е **единственият език с gradual safety** — бърз за писане като C, безопасен като Rust, но само където програмистът избере.
|
||||
|
||||
Това е празна ниша на пазара. Никой не я запълва. Bux може да е първият.
|
||||
Reference in New Issue
Block a user