CodingTour
ARTS #214 | 1700 天了

不知不觉这么久了,相信时间的力量~

Algorithm

本周选择的算法题是:Find All People With Secret

impl Solution {
    pub fn find_all_people(n: i32, meetings: Vec<Vec<i32>>, first_person: i32) -> Vec<i32> {
        let mut graph = vec![vec![]; n as usize];
        for meeting in meetings {
            graph[meeting[0] as usize].push((meeting[1], meeting[2]));
            graph[meeting[1] as usize].push((meeting[0], meeting[2]));
        }
        let mut know = vec![i32::MAX; n as usize];
        let mut queue = std::collections::VecDeque::new();
        queue.push_back((0, 0));
        queue.push_back((first_person, 0));
        know[0] = 0;
        know[first_person as usize] = 0;
        while !queue.is_empty() {
            let (person, time) = queue.pop_front().unwrap();
            for &(next_person, next_time) in &graph[person as usize] {
                if next_time >= time {
                    let prev = know[next_person as usize];
                    know[next_person as usize] = next_time.min(prev);
                    if prev > next_time {
                        queue.push_back((next_person, next_time));
                    }
                }
            }
        }
        know.iter().enumerate().filter(|(_, &x)| x < i32::MAX).map(|(i, _)| i as i32).collect()
    }
}

Tip

当 VPN 连接不上时,可以通过 SSH 重启 VPN 服务:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -restart -agent

Share

为什么埃隆·马斯克认为 AGI 将使用 Rust 而非 Python 构建

几个背景

图为埃隆·马斯克在 Twitter 上的观点:

AGI:即人工通用智能,代表了一种模仿人类认知能力的人工智能形式

Rust:Rust 是一种跟 C、C++ 类似的编程语言,因其卓越的性能、安全特性和生产力而日益受欢迎。与 Python 不同,Rust 是静态类型的,且增强了内存安全和编译时的错误检测,从而有更高的可靠性

Rust 与 Python 的性能比较

性能

  • Rust:就像一辆设计用于性能优先的超跑,底层更接近计算机硬件
  • Python:类似于舒适的轿车,易于编写和阅读,但由于其高级抽象,无法与 Rust 的速度相匹配

内存安全性

  • Rust:能确保程序避免导致崩溃或安全问题的内存错误
  • Python:提供了一个更宽松的环境,非常易于使用,但不像 Rust 那样严格地捕捉内存错误

并发性

  • Rust:由于其支持并发,使得多个操作可以同时操作而不会产生混乱,包括因临界区管理不当导致的死锁等问题
  • Python:基于上在执行效率上不如 Rust,安全性需要程序员保障

系统级控制

Rust:允许与计算机硬件进行精细的控制和交互

Python:提供了高级抽象,更简单,但能控制的比较少

可预测的性能

Rust:像赛车一样稳定,能提供至关重要的可预测性和可靠的性能

Python:性能变化多端,就像跑不同的地形,性能结果取决于具体任务

Rust 的优势

Rust 的日益流行可以归因于几个因素:

  • 无需 GC 的内存安全性:Rust 确保了内存安全,无需 GC,减少了常见错误和漏洞
  • 并发和并行:Rust 的所有权系统促进了并发代码的安全性,对构建现代应用至关重要
  • 社区支持:一个技术能不能发展起来,社区很关键,活跃且不断增长的社区有助于开发和新人上手
  • Cargo 包管理器:简化了依赖管理、构建项目、写测试和生成文档
  • 多领域适应性:适用于从系统级编程到 Web 开发的广泛应用
  • 安全特性:除了内存安全,Rust 在基本语言方面,也提供了包括模式匹配、穷尽性枚举和强大的类型系统
  • 系统级编程:非常适合开发操作系统、驱动程序、嵌入式系统和性能敏感软件
  • 互操作性:易于与各种其他语言集成,增强了多功能性
  • 行业采纳:大公司、组织信任 Rust 并用于关键项目,对推广 Rust 有强大的正面影响

Rust 应该在哪里使用

现在 Rust 在各个领域都有应用:

  • 系统编程:非常适合开发操作系统、内核和低级软件组件,Linux、Windows 内核已经在使用了,国内的鸿蒙也有着官方支持
  • Web 开发:越来越多地被用于构建高效的 Web 应用,特别是 Web 工具链方面,如 Rspack、Vue 编译器
  • 网络服务:开发网络应用和服务器,这是固有优势
  • 游戏开发:由于其性能优势逐渐地在游戏引擎开发上流行起来,比如 Oxygengine、Bevy,算上跨平台图形渲染的话更多高,比如 wgpu

Rust 之所以成为 AGI 开发的选择,在性能、安全性和多功能性方面优势很大,这应该与埃隆·马斯克的观点类似。