Gunnar Wolf: Learning some Rust with Lars!
A couple of weeks ago, I read a blog post by former Debian Developer
Lars Wirzenius
offering a free basic (6hr) course on the Rust language to interested
free software and open source software programmers.
I know Lars offers training courses in
programming, and besides knowing him for
~20 years and being proud to consider us to be friends, have worked
with him in a couple of projects (i.e. he is upstream for
vmdb2, which I maintain in
Debian and use for generating
the Raspberry Pi Debian images) He is a
talented programmer, and a fun guy to be around.
I was admitted to the first cohort of students of this course (please
note I m not committing him to run free courses ever again! He has
said he would consider doing so, specially to offer a different time
better suited for people in Asia).
I have wanted to learn some Rust for quite some time. About a year
ago, I bought a copy of The Rust Programming
Language, the canonical book
for learning the language, and started reading it But lacked
motivation and lost steam halfway through, and without having done
even a simple real project beyond the simple book exercises.
How has this been? I have enjoyed the course. I must admit I did
expect it to be more hands-on from the beginning, but Rust is such a
large language and it introduces so many new, surprising
concepts. Session two did have two somewhat simple hands-on
challenges; by saying they were somewhat simple does not mean we
didn t have to sweat to get them to compile and work correctly!
I know we will finish this Saturday, and I ll still be a complete
newbie to Rust. I know the only real way to wrap my head around a
language is to actually have a project that uses it And I have
some ideas in mind. However, I don t really feel confident to approach
an already existing project and start meddling with it, trying to
contribute.
What does Rust have that makes it so different? Bufff Variable
ownership (borrow checking) and values lifetimes are the most obvious
salient idea, but they are relatively simple, as you just cannot
forget about them. But understanding (and adopting) idiomatic
constructs such as the pervasive use of enums, understanding that
errors always have to be catered for by using
expect()
and
Result<T,E>
It will take some time to be at ease developing in
it, if I ever reach that stage!
Oh, FWIW Interested related reading. I am halfway through an
interesting article, published in March in the Communications of the
ACM magazine, titled Here We Go Again: Why
Is It Difficult for Developers to Learn Another Programming
Language? ,
that presents an interesting point we don t always consider: If I m a
proficient programmer in the X programming language and want to use
the Y programming language, learning it Should be easier for me
than for the casual bystander, or not? After all, I already have a
background in programming! But it happens that mental constructs we
build for a given language might hamper our learning of a very
different one. This article presents three interesting research
questions:
- Does cross-language interference occur?
- How do experienced programmers learn new languages?
- What do experienced programmers find confusing in new languages?