How do people at different stages learn rust? Join nonconvex and learn together!

Time:2022-5-8

Do you feel difficult, painful or confused in the process of learning rust? The following may be helpful to you ~

Although the learning materials of rust are very rich now, rust is a language with relatively high learning cost. Facing people with different language experience, the learning cost is slightly different.

Before learning rust, you need to know what kind of mental cost you will pay in the process of learning rust. First, people with zero foundation need to supplement some necessary computer science related foundations and establish an understanding of programming. Beginner programming itself is a great challenge. Second, people with a certain programming foundation, although it is helpful to learn rust, will still have some obstacles.

1. People with only C experience have the following challenges when learning rust Grammar:
(1) Rust programming paradigm. C language is procedural, while rust is a hybrid programming paradigm, which supports object-oriented and functional programming styles. People who come from C language can easily write rust in procedural style. Although it can also write complete functions with rust in procedural style, it will lose the advantage of rust in code architecture. Concepts related to programming paradigm: generic / trait / error handling / structure / enumeration.

(2) Ownership and borrowing checks. C is to manage the memory manually, but rust manages it with ownership. In C, pointers are used, but in rust, pointers are security abstracted into references, which need to be checked. These are the concepts that C developers must master.

(3) Unsafe rust security abstraction. It is important for C language developers to understand the coding specification of unsafe rust and how to carry out security abstraction, especially when calling each other with C.

(4) Macro. The declaration macros in rust are similar to the declaration macros in C language. They are all code replacement, but their functions are more powerful than those in C. These should also be a learning challenge. Rust also has a more powerful process macro, which can be learned in the early stage and later stage.

2. People with CPP experience have a certain understanding of C by default. When learning rust grammar, they have the following challenges:
(1) Rust programming paradigm. Rust’s hybrid paradigm is different from CPP’s hybrid paradigm. Rust is not a pure object-oriented language and has no constructor. Generics, trait, enumeration and error handling in rust are also important for CPP developers.

(2) Ownership and borrowing checks. Because rust also introduces the intelligent pointer based on raii mechanism introduced by and CPP 11, it is easier for people with experience in CPP 11 and above to understand in terms of memory management. However, it is difficult for CPP developers without this experience.

(3) Unsafe rust security abstraction. Like C language developers, this requires a certain understanding of unsafe rust coding specifications.

(4) Generics and procedure macros. CPP developers have templates, but rust has generics. The function of generics in rust is not as powerful as CPP template, but there are process macros to make up for it. In other words, CPP template programming is equivalent to the combination of rust’s generics and process macros. If CPP developers also want to pursue the effect of template programming in rust, they need to master generics and process macros.

3. People with only GC language experience, such as Java, python, ruby, Haskell, etc., face basically the same challenges in learning rust syntax as CPP, but because most people who use GC language do not have enough in-depth understanding of the underlying memory management, the entry curve will be more steep.

Therefore, the steep entry curve of rust is not only related to the complexity of the language itself, but also related to everyone’s programming foundation.

Nonconvex technology mainly uses rust language to improve work efficiency and facilitate cooperation between various departments and upstream and downstream. In the application of rust in the field of high-frequency quantitative trading, nonconvex technology is a pioneer, pursuing efficiency and perfection.

If you are interested in rust and want to join the quantitative industry, welcome to join! Create the future together!

Recruitment position: rust Development Engineer

job content:
1. Design and develop a high-performance, low delay algorithm trading system based on rust;
2. Design and develop data processing platform and monitor operation and maintenance platform;
3. Design and develop highly available trading tools for customers;
4. Design and develop back test platform related to strategy.

Job requirements:
1. Bachelor degree or above (985 preferred), solid programming foundation and good computer theoretical foundation;
2. Proficient in Linux operation and performance analysis, with rich development experience in rust / C + + / Java / go, familiar with common design patterns, and experience in distribution;
3. Experience in R & D with low delay and high performance;
4. Be enthusiastic about technology, think deeply, self driven, and be able to learn new things quickly.

Base range:
30k-60k + option incentive + year-end bonus + employee welfare

Location: Beijing, Shanghai, Chengdu, Singapore
Resume sent to:[email protected]
Wechat communication: 354334592
The email indicates: Name + position + source

Recommended Today

Microservice architecture * 3.5 source code analysis of Nacos service registration and discovery

catalogue preface 1. The client registers in the Nacos Registry (client perspective) 1.1 specifications and standards provided by spring cloud 1.2 automatic configuration class of Nacos 1.3 listen to the service initialization event abstractautoserviceregistration bind() 1.4 logic for registering service instances: nacosserviceregistry register() 1.4.1 heartbeat mechanism beatreactor addBeatInfo() 1.4.2 registration service namingproxy registerService() 1.5 send […]