🚀 Fleet 语言学习路径

欢迎来到 Fleet 编程语言!本文档为你提供了一个清晰的渐进式学习路径,从零基础到精通 Fleet。

📋 学习路径总览

🌱 第一步:准备工作
    ↓
🏃 第二步:快速体验  
    ↓
📚 第三步:基础语法
    ↓
🔧 第四步:核心概念
    ↓
🏗️ 第五步:高级特性
    ↓
⚡ 第六步:实战项目
    ↓
🎯 第七步:深入理解

🌱 第一步:准备工作 (5-10 分钟)

目标:让 Fleet 在你的电脑上运行起来

必读文档

  1. 安装指南 - 安装 Fleet 编译器
  2. 环境验证 - 确保安装成功

完成标志

  • ✅ 能够运行 fleet --version
  • ✅ 成功编译并运行 Hello World 程序

🏃 第二步:快速体验 (15-20 分钟)

目标:写出你的第一个 Fleet 程序,感受语言特色

必读文档

  1. 快速开始 - 第一个程序和基本操作

实践练习

// 练习 1:Hello World
fn main() {
    print("Hello, Fleet!");
}

// 练习 2:简单计算
fn main() {
    let a = 10;
    let b = 20;
    print("Sum: " + (a + b));
}

// 练习 3:基本函数
fn add(x: int, y: int) -> int {
    return x + y;
}

fn main() {
    let result = add(5, 3);
    print("Result: " + result);
}

完成标志

  • ✅ 理解 Fleet 程序的基本结构
  • ✅ 能够定义和调用简单函数
  • ✅ 掌握基本的编译和运行流程

📚 第三步:基础语法 (1-2 小时)

目标:掌握 Fleet 的核心语法元素

学习顺序

3.1 变量和数据类型 (20 分钟)

练习

fn main() {
    // 不可变变量
    let name = "Fleet";
    let age = 1;

    // 可变变量
    var counter = 0;
    counter = counter + 1;

    // 类型注解
    let pi: f64 = 3.14159;

    print("Language: " + name);
    print("Age: " + age);
    print("Counter: " + counter);
}

3.2 控制流 (30 分钟)

练习

fn main() {
    // if-else
    let number = 42;
    if number > 0 {
        print("Positive");
    } else {
        print("Not positive");
    }

    // loop 循环
    loop i in 0..5 {
        print("Count: " + i);
    }
}

3.3 函数定义 (30 分钟)

练习

// 无返回值函数
fn greet(name: str) {
    print("Hello, " + name + "!");
}

// 有返回值函数
fn multiply(a: int, b: int) -> int {
    return a * b;
}

fn main() {
    greet("World");
    let result = multiply(6, 7);
    print("6 × 7 = " + result);
}

完成标志

  • ✅ 能够定义和使用变量
  • ✅ 掌握 if-else 和 loop 语句
  • ✅ 能够编写带参数和返回值的函数

🔧 第四步:核心概念 (2-3 小时)

目标:理解 Fleet 的核心数据结构和概念

学习顺序

4.1 结构体 (45 分钟)

练习

struct Point {
    x: int,
    y: int,
}

fn distance(p1: Point, p2: Point) -> f64 {
    let dx = p2.x - p1.x;
    let dy = p2.y - p1.y;
    return sqrt((dx * dx + dy * dy) as f64);
}

fn main() {
    let p1 = Point { x: 0, y: 0 };
    let p2 = Point { x: 3, y: 4 };
    let dist = distance(p1, p2);
    print("Distance: " + dist);
}

4.2 枚举和模式匹配 (45 分钟)

练习

enum Color {
    Red,
    Green,
    Blue,
    RGB(int, int, int),
}

fn describe_color(color: Color) -> str {
    match color {
        Color::Red => return "Red color",
        Color::Green => return "Green color", 
        Color::Blue => return "Blue color",
        Color::RGB(r, g, b) => return "RGB(" + r + ", " + g + ", " + b + ")",
    }
}

fn main() {
    let red = Color::Red;
    let custom = Color::RGB(255, 128, 0);

    print(describe_color(red));
    print(describe_color(custom));
}

4.3 集合类型 (45 分钟)

练习

fn main() {
    // 数组
    let numbers = [1, 2, 3, 4, 5];
    loop num in numbers {
        print("Number: " + num);
    }

    // 映射
    let scores = map{
        "Alice": 95,
        "Bob": 87,
    };
    print("Alice's score: " + scores["Alice"]);
}

完成标志

  • ✅ 能够定义和使用结构体
  • ✅ 理解枚举和模式匹配
  • ✅ 掌握数组和映射的基本操作

🏗️ 第五步:高级特性 (3-4 小时)

目标:掌握 Fleet 的高级编程特性

学习顺序

5.1 Trait 系统 (90 分钟)

练习

trait Display {
    fn show(self) -> str;
}

struct Person {
    name: str,
    age: int,
}

impl Display for Person {
    fn show(self) -> str {
        return self.name + " (" + self.age + " years old)";
    }
}

fn main() {
    let person = Person { name: "Alice", age: 30 };
    print(person.show());
}

5.2 错误处理 (90 分钟)

练习

enum Option {
    Some(int),
    None,
}

fn safe_divide(a: int, b: int) -> Option {
    if b == 0 {
        return Option::None;
    } else {
        return Option::Some(a / b);
    }
}

fn main() {
    match safe_divide(10, 2) {
        Option::Some(result) => print("Result: " + result),
        Option::None => print("Cannot divide by zero"),
    }
}

完成标志

  • ✅ 能够定义和实现 trait
  • ✅ 理解 Option 类型和错误处理
  • ✅ 掌握高级模式匹配技巧

⚡ 第六步:实战项目 (4-6 小时)

目标:通过实际项目巩固所学知识

项目建议

项目 1:计算器 (2 小时)

// 实现一个支持四则运算的计算器
enum Operation {
    Add,
    Subtract,
    Multiply,
    Divide,
}

struct Calculator {
    result: f64,
}

impl Calculator {
    fn new() -> Calculator {
        return Calculator { result: 0.0 };
    }

    fn calculate(self, a: f64, op: Operation, b: f64) -> f64 {
        match op {
            Operation::Add => return a + b,
            Operation::Subtract => return a - b,
            Operation::Multiply => return a * b,
            Operation::Divide => {
                if b != 0.0 {
                    return a / b;
                } else {
                    print("Error: Division by zero");
                    return 0.0;
                }
            },
        }
    }
}

项目 2:学生成绩管理 (3 小时)

// 实现一个学生成绩管理系统
struct Student {
    name: str,
    id: int,
    scores: map,
}

trait GradeCalculator {
    fn average_score(self) -> f64;
    fn get_grade(self) -> str;
}

impl GradeCalculator for Student {
    fn average_score(self) -> f64 {
        // 计算平均分
    }

    fn get_grade(self) -> str {
        // 根据平均分返回等级
    }
}

完成标志

  • ✅ 能够独立设计和实现完整的 Fleet 程序
  • ✅ 熟练运用结构体、枚举、trait 等特性
  • ✅ 具备解决实际问题的能力

🎯 第七步:深入理解 (可选)

目标:深入理解 Fleet 的设计理念和实现细节

高级主题

7.1 语言设计理念

7.2 编译器内部

7.3 高级示例

完成标志

  • ✅ 理解 Fleet 的设计哲学
  • ✅ 了解编译器的工作原理
  • ✅ 能够为 Fleet 语言做出贡献

📚 学习资源索引

按难度分类

🌱 初学者必读

  1. 安装指南
  2. 快速开始
  3. 基础语法
  4. Hello World 示例

🔧 进阶学习

  1. 函数和控制流
  2. 类型系统
  3. 集合类型
  4. 结构体示例

🏗️ 高级主题

  1. Trait 系统
  2. 错误处理
  3. 语法参考手册
  4. 编译器架构

按主题分类

语法和类型

编程概念

面向对象

实践应用

🎯 学习建议

时间安排

  • 快速入门:1-2 天 (第1-3步)
  • 核心掌握:1 周 (第4-5步)
  • 实战练习:1-2 周 (第6步)
  • 深入理解:持续学习 (第7步)

学习方法

  1. 循序渐进 - 严格按照学习路径顺序
  2. 动手实践 - 每个概念都要写代码验证
  3. 项目驱动 - 通过实际项目巩固知识
  4. 查阅文档 - 遇到问题及时查阅相关文档

常见问题

  • 语法错误 - 参考 语法兼容性说明
  • 概念理解 - 多看示例代码,动手实践
  • 项目实战 - 从简单项目开始,逐步增加复杂度

🚀 开始你的 Fleet 之旅!

选择适合你当前水平的起点,开始学习 Fleet 编程语言吧!

  • 🌱 完全新手:从第一步开始
  • 🔧 有编程经验:可以从第二步或第三步开始
  • 🏗️ 想了解高级特性:直接跳到第五步
  • 🎯 想深入理解:查看第七步的高级主题

记住:学习编程语言最好的方法就是多写代码!🎯