不知不觉这么久了,相信时间的力量~
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 开发的选择,在性能、安全性和多功能性方面优势很大,这应该与埃隆·马斯克的观点类似。