不同阶段的人,如何学习Rust?加入非凸,一起学习!

问答者
• 阅读 920

你在学习 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 中追求 模版编程的效果,那么需要掌握 泛型和过程宏。

3.只有 GC 语言使用经验的人,比如 Java、Python、Ruby 、Haskell等,学习 Rust 语法面临的挑战和 Cpp 基本相同,但因为使用 GC 语言的人,大部分对底层内存管理没有足够深入的了解,入门曲线会更加陡峭。

所以, 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
邮件注明:姓名+岗位+来源

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Rust学习笔记#6:所有权系统
!(https://oscimg.oschina.net/oscnet/up0b8d4b9e5e3854503a73fd494cd4b53d984.JPEG)引子:段错误与内存安全在刚开始接触Rust的时候,我们就提过Rust语言的定位:Rustisasystem'sprogramminglanguagethatr
Stella981 Stella981
3年前
Rust开发环境搭建
1.Rust概述按照百度百科的说法,Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust最初是由Mozilla研究院的GraydonHoare设计创造,然后在DaveHerman,Brend
Stella981 Stella981
3年前
Rust基金会正式成立
Rust项目正式脱离Mozilla,Rust核心团队宣布新的Rust基金会成立,从Mozilla接手所有商标以及资产,而10位董事会成员,有5位来自创始公司AWS、华为、Google、微软和Mozilla,以及5位来自项目领导层级。Rust核心团队在去年8月,发布了将成立Rust基金会的消息,官方提到,由于Rust项目持续发展,已经到了有法律和财
Stella981 Stella981
3年前
Rust学习笔记#3:类型
!(https://oscimg.oschina.net/oscnet/upc9e4830f16bd8d4c4a75a3e8155ee7c7774.JPEG)类型于20世纪50年代被FORTRAN语言引入,发展到今日,类型已经成为了各大编程语言的核心基础,Rust也不例外。所谓类型,就是对表示信息的值进行的细粒度的区分,比如整数、小数、文本等。不同
Stella981 Stella981
3年前
Rust入坑指南:常规套路
搭建好了开发环境之后,就算是正式跳进Rust的坑了,今天我就要开始继续向下挖了。<!more由于我们初来乍到,对Rust还不熟悉,所以我决定先走一遍常规套路。变不变的变量学习一门语言第一个要了解的当然就是变量啦。Rust使用关键字let来定义变量。我们写一个简单的demo!demo1(https://oscim
Stella981 Stella981
3年前
Rust语言宏原理及开发教程
Rust语言最强大的一个特点就是可以创建和利用宏/Macro。不过创建Rust宏看起来挺复杂,常常令刚接触Rust的开发者心生畏惧。这片文章的目的就是帮助你理解RustMacro的基本运作原理,学习如何创建自己的Rust宏。相关链接:在线学编程(https://www.oschina.net/action/GoToLink?urlhttp%3
非凸科技 非凸科技
3年前
Rust开发者大会,内容早知道!
在量化交易中,总会发现有一部分「回撤」是在策略意料之外的,如进程闪退、上下游出问题等。那么,Rust在量化场景中的应用,相较于C,对回撤产生了什么样的影响呢?非凸科技量化策略负责人将从“自身系统稳定”与“高效应对风险”两个方面进行全面解答,欢迎锁定「本周日14:00」—分论坛「Rust商业实践」!时间:7月31日(本周日)参会:http://rust
非凸科技 非凸科技
3年前
受邀出席Rust 开发者大会|Rust 如何助力量化高频交易?
工欲善其事,必先利其器。面对时代变革、技术迭代,开发者们是如何使用Rust构建各场景应用的呢?受疫情影响,延期一年的“第二届中国Rust开发者大会”于7月31日在线上顺利举行,为Rust爱好者带来了前沿的技术交流和实践成果。非凸科技量化策略负责人陆一洲受邀出席分论坛“Rust商业实践”,带来了“Rust如何助力量化高频交易”的主题演讲,为大家揭晓答案。非凸科
非凸科技 非凸科技
2年前
Rust的安全性和稳健型
Rust是围绕安全性和稳健性而设计的。也就是,安全代码是不使用unsafe关键字的代码,声音代码是不会导致内存损坏或其他未定义行为的代码。“未定义行为”(UB)在C、C和Rust等语言中具有特定含义,不同于“未指定”或“实现定义”行为。Rust最重要的
彻底改变你的代码:JavaScript linter—Oxlint
作为开发人员,总是在寻找能够简化工作流程并提高工作效率的工具。Oxlint是一个用Rust编写的JavaScriptlinter,现在提供了可以替代ESLint的新方案,其性能比ESLint提升了50100倍。在本文中,将学习如何将Oxlint集成到开发流
京东云开发者 京东云开发者
8个月前
彻底改变你的代码:JavaScript linter—Oxlint
作者:京东保险张洁作为开发人员,总是在寻找能够简化工作流程并提高工作效率的工具。Oxlint是一个用Rust编写的JavaScriptlinter,现在提供了可以替代ESLint的新方案,其性能比ESLint提升了50100倍。在本文中,将学习如何将Oxl