7,267
社区成员
你在学习 Rust 的过程中,是否会感觉到艰难、痛苦或迷茫呢?以下内容或许对你有帮助~
虽然现在 Rust 学习资料非常丰富,但Rust 是一门学习成本相对比较高的语言。面对不同语言经验的人,学习成本略有差别。
在学习 Rust 之前,需要了解你将会在 Rust 学习过程中付出什么样的心智成本。一是零基础的人,需要补足一些必要的计算机科学相关的基础,以及建立对编程的理解。初学编程本身就是一项很大的挑战。二是有一定编程基础的人,虽然对学习 Rust 有一定帮助,但还是会有一些阻碍。
1.只有 C 经验的人,学习 Rust 语法时候,有如下挑战:
(1)Rust 编程范式。c 语言是过程式,而 Rust 是混合编程范式,支持面向对象和函数式编程风格。c语言过来的人,很容易把 Rust 写成过程式风格,虽然用过程式也可以用 Rust 写出完整功能,但在代码架构上会损失 Rust 的优势。和编程范式相关的概念:泛型/ trait / 错误处理 / 结构体 / 枚举 。
(2)所有权和借用检查。c 里面是 手动管理内存,但是 Rust 是用所有权来管理。c 里面都是用指针,但是在 Rust 里,将指针进行了安全抽象变成了引用,需要有借有检查。这些都是 c 开发者必须要掌握的概念。
(3)Unsafe Rust 安全抽象。c 语言开发者要理解 Unsafe Rust 的编码规范,理解如何进行安全抽象,这一点比较重要,尤其是和 C 相互调用时。
(4)宏。Rust 中声明宏类似于 C 语言的声明宏,都是代码替换,但是功能比 C 的强大,这些应该也算一个学习挑战。Rust 还有功能更强大的过程宏,可以在前期学习的时候不用考虑,后期再学。
2.有 Cpp 经验的人,默认其对 C 有一定了解,学习 Rust 语法时,有如下挑战:
(1)Rust 编程范式。Rust 的混合范式 和 Cpp 的混合范式不同。Rust 不是纯粹的面向对象语言,没有构造函数。Rust 中的泛型、 trait 、枚举 和 错误处理 对于 Cpp 开发者同样是重点。
(2)所有权和借用检查。因为 Rust 也引入了 和 Cpp 11 引入的 基于RAII 机制的智能指针,所以在内存管理方面,对 Cpp 11 及以上版本有经验的人更容易理解。但是没有这方面经验的 Cpp 开发者就有一定难度了。
(3)Unsafe Rust 安全抽象。这一点和 C 语言开发者一样,是需要对 Unsafe Rust 的编码规范有一定理解。
(4)泛型 和 过程宏。Cpp 开发者有模版,但是 Rust 中有泛型。Rust 中泛型的功能没有 Cpp 模版强大,但是有过程宏可以弥补。也就是说 Cpp 模版编程 等价于 Rust 的泛型和过程宏的结合。如果 Cpp 开发者也想要在 Rust 中追求 模版编程的效果,那么需要掌握 泛型和过程宏。
所以, Rust 入门曲线陡峭与否,除了语言本身的复杂性之外,也跟每个人的编程基础有关。
非凸科技主要使用Rust语言,主要为了提高工作效率,以及为了促进各部门及上下游的合作方便。Rust在高频量化交易领域的应用,非凸科技算是先驱者,追求高效和极致。
如果你对Rust感兴趣,也想加入量化行业,那么欢迎加入!共创未来!
招聘岗位:Rust开发工程师
工作内容:
1.设计并开发基于Rust的高性能,低时延算法交易系统;
2.设计并开发数据处理平台,监控运维平台;
3.设计并开发面向客户的高可用交易工具等;
4.设计并开发策略相关的回测平台。
岗位要求:
1.本科及以上学历(985优先),编程基础扎实,具有良好的计算机理论基础;
2.熟练掌握Linux操作,性能分析,具备Rust/C++/Java/Go丰富开发经验,熟悉常用的设计模式,有分布式相关经验加分;
3.有研发高性能,低时延系统经验加分;
4.对技术充满热情,思考深入,自我驱动,能快速学习新鲜事物。
Base range:
30K-60K+期权激励+年终奖+员工福利
工作地点:北京、上海、成都、新加坡
简历发送至:recruit@ft.tech
微信沟通:354334592
邮件注明:姓名+岗位+来源