Beginner's Series to Rust
docs.microsoft.com
docs.microsoft.com
I've been down that road before.
Meanwhile there's a lot of immature pieces still. I was looking at SIMD support earlier today (thinking about porting an audio/DSP project from C++) and it's still early days. And Async is still half-baked as others have pointed out.
I’d be surprised if companies filtered for rust specific experience.
Right now the job market for Rust seems to be mostly biased towards crypto companies, though, which is somewhere I won't go.
But I'm currently interviewing at two places that do Rust, and interviewed at another a month ago, so.
This makes it even harder for me to decide what to learn for my next programming language. Go, Rust, or Julia.
Databases, distributed systems, backend web systems, webassembly, low level systems programming. Rust is fantastic at these things.
When aiming to learn something new, I find it best to ask myself what I want to accomplish with it. Each of the languages you’ve listed have made significant inroads in various areas, learn the one that fits your use cases the most.
Job? I'd say Go
Command line tools with complex logic for fun and community support? Rust
Julia? Julia.
Many of the majors are hiring a ton for rebuilding backend stacks and crypto still wants as many as it can get as well.
I should've been more careful about this in my statement :)
If you want to work in the learned language, then sure. But if you just want to increase your general employability then Rust is probably a better bet. You'll learn more, and it will make you a better engineer in every language you use. My JavaScript has been greatly improved by learning Rust.
That's what I mean, yes. Obviously you should broaden your horizons to learn or discover something new and improve your skill in a general way.
Don't get me wrong: Go is a really good language, and eminently practical (and I am ATM working on getting productive with it myself) , but it doesn't have anything particularly novel to teach you, and part of what makes it good is that it's really easy to pick up, so it's something that you can just learn on the fly if you need to.
Inversely, Rust requires a fair bit more ramp up time if you ever need to use it in anger, and there's a lot of fairly novel stuff to learn there that is generally useful, so you'd benefit more from learning Rust as a project.
However, Rust is a very difficult language and so Julia or even Go might be a better second programming language (definitely not a good first language). While Go is pretty standard as languages go, it does have static typing which PHP lacks (at least by default).
This is an underrated benefit of go, but to me it is by far the most important aspect of the language.
Go: https://github.com/gin-gonic/gin
Rust: https://rocket.rs/
Julia: https://genieframework.com/
For example at $WORK we're slowly rewriting our entire data processing pipeline in Rust, but for awhile we've had a hybrid Rust / Python setup using PyO3, which makes it really easy to build your Rust code into a shared library and call it from Python, with the entire API specified declaratively using derive macros and the GIL handled for you using typestate tokens. Really cool stuff.
If you want something halfway between Go and Rust, I'd look at Gleam--it seems like a garbage collected Rust, so you get a nice ML-inspired type system without the pedantry of the borrow-checker (sometimes that pedantry is helpful, but rarely so for the applications I write). This would be next on my list of languages to learn.
Also, my favorite way to learn a new language is to write a static site generator. It will take you through a tour of the standard library as well as the third-party library ecosystem. It's a simple project without being a toy.
If you regularly find yourself solving problems with Matlab, numpy/torch/pandas or R, you'll be delighted to learn Julia. R and Matlab were great at the time, but really show their age. Python was never meant to be fast, so all the algorithms are in C/C++, making them very hard to inspect, modify or build upon. Julia excels at bridging the gap between high-performance numerical algorithms, great composability through it's type system, and a great syntax for vectorized programming, which makes it straightforward to inspect and change code for very complicated algorithms. For instance, check out Octavian.jl for a pure-julia (fast) alternative to BLAS - or try reading the DataFrames.jl source code (and compare it to the source code of pandas).
Note also that the mentioned applications go beyond data science into general machine learning (+deep learning), simulation science, optimal control, decision making under uncertainty, and many other fields leveraging custom numerical algorithms.
BUT, Julia is (imo) only worth learning if you need to write sophisticated numerical algorithms. If you're more of a systems level programmer, web dev, etc, you might not appreciate what sets Julia apart. Julia and Rust target somewhat different niches, with Rust being much more aimed at developing applications with many interacting components that may not fail. Go doesn't really target numerical programming at all and is instead great for multiple-instruction-single-data (MISD) applications (as opposed to SIMD applications like matrix multiplication).
“More students preferred reading than preferred video (30% to 20%, the other 50% preferred other forms of learning like in-person lectures and hands-on learning). And students who’d consumed the material via reading performed slightly better on the post-learning assessment than students who watched video, although the study’s numbers were small enough that this difference was not statistically significant.”
— https://www.dataquest.io/blog/video-text-learn-data-science-...
But seriously, I'm seeing more job postings for it. Unfortunately too many are in crypto.