[HN Gopher] Comprehensive Rust: course used by the Android team ...
___________________________________________________________________
Comprehensive Rust: course used by the Android team at Google
Author : ingve
Score : 195 points
Date : 2023-05-23 18:01 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| tripdout wrote:
| The dive into using it in AOSP is very cool
| mmastrac wrote:
| I'm very happy I dug into rust half a decade ago. The language
| has been fun to learn as it evolved futures and async/await, and
| the future continues to look promising. I've had the pleasure of
| working professionally in Rust twice in my life (once at Full
| story, now at Deno) and I can say it's by far my favourite
| language to work in.
|
| I did some Rust training with Ferrous but by far the most useful
| way to learn was just picking up a project and building it.
| zokier wrote:
| I'm glad I've been following rust since <1.0 when it was lot
| smaller (tbh because it was missing stuff), I don't know if I'd
| have the perseverance to start learning it today from scratch
| just because the depth it has. Admittedly having bit of C++
| background smoothed the curve too.
| echelon wrote:
| I wasn't aware FullStory used Rust! That's good to know. I was
| worried I might have a hard time hiring folks in Atlanta with
| Rust experience.
|
| The more Rust proliferates, the better. It's good at client,
| server, systems, and so many other things.
| brabel wrote:
| I envy people who can pick up Rust and just get stuff done.
| I've tried many times but every time, I find it far more
| difficult to build things than any other language I know, so I
| just give up and go back to "easier" languages.
| bandika wrote:
| What I find difficult is to switch my 2 decade C++ career
| into a rust job, despite learned Rust and finished some hobby
| projects touching ui, async and http server/client in Rust.
| Somehow most Rust job is about crypto currency.
| paxys wrote:
| I find that a lot of people just pick wrong kinds of projects
| to dig their teeth into Rust with. It is a systems
| programming language. If you don't know much about it and set
| out to build a website, things are inevitably going to go
| south.
| echelon wrote:
| Actix and Axum are so easy. They're a drop in replacement
| for Golang or Flask.
|
| I'd encourage people to start their Rust journey with
| little web services.
| jbandela1 wrote:
| I think previous experience programming in C++ can be
| helpful, in picking up Rust faster.
|
| For me, in large part, the borrow checker is encoding in the
| compiler rules that you should be following in C++ anyway.
|
| A few hours debugging dangling references or iterator
| invalidation will make you appreciate what the borrow checker
| is trying to prevent.
|
| You also have experience knowing the difference between pass
| by reference, pass by const reference, copy, and move.
|
| Also, if you want to keep your sanity, you will learn to take
| ownership seriously. Deciding what owns what and whether
| objects will be owned by the scope (on the stack), be owned
| by unique_ptr, or be shared with shared_ptr is a large part
| of designing a C++ program.
|
| Again these all map very neatly onto Rust idioms, and as a
| benefit are enforced by the compiler.
|
| Coming from a garbage collected language where you previously
| did not have to care about things like that, and now, not
| only being forced to care, but having the compiler yell at
| you for every mistake can be a pretty big learning curve.
|
| However, I would say that not knowing C++ doesn't mean that
| you can't learn Rust, only that it may take a little longer
| because you have to learn new concepts with regards to memory
| management and ownership, and so give yourself some slack and
| do not be discouraged.
| dceddia wrote:
| I agree with the OP that the best way to learn it is to work
| through a real project, but I wouldn't necessarily equate
| that with "picking it up and just getting stuff done". At
| least, that's not how it went for me, anyway! I hit all the
| real roadblocks along the way and it took a good few months
| before I felt actually comfortable. Until then, it felt like
| I kept running up against mismatches between how I wanted to
| solve a problem and how Rust wanted me to do it. It was more
| difficult to build stuff and I had to rewrite things many
| times. For background, I had worked with C/C++, Java, JS/TS,
| Ruby, and some others prior to Rust, and it was the first
| time in a while that learning a new language was pretty hard
| even after the syntax made sense.
| echelon wrote:
| Pick up Actix or Axum and clone() and unwrap() all day for
| your first month. Write some little web servers for fun. Sqlx
| is great for sql, and you can do some heavy hitting stuff
| like media streaming and transcoding as you get deeper into
| it. It's got good torch bindings for ML too.
|
| Before long you'll be running the compiler in your head and
| rapidly churning out code.
| yboris wrote:
| I suspect this is about experience.
|
| I had experience with PHP, JavaScript, and Python, but when
| at first coding in _Go_ it would take me as much as 10x as
| long. But with more practice it 's now only about 2x as long
| as in other languages. Keep practicing ;)
| brabel wrote:
| I think my experience is actually the problem. I don't have
| enough patience anymore to spend lots of time trying to
| understand errors where I have zero idea why it's
| complaining, when I know the same thing in another language
| works totally fine the first time I try (and without bugs,
| it's mostly lifetime issues or the lovely borrow checker,
| which don't even exist in other languages). But I do keep
| trying Rust, because the alternatives as I see it, C and
| Zig, have their own problems that are bigger (C's build
| tools and lack of package management, very weak type
| checking and unavoidable UB, and Zig's overall lack of
| maturity and consequently tooling).
|
| By the way, I can write code very easily in
| Java/Kotlin/Groovy/Dart/JS/TS/Go/Lisp.
| db48x wrote:
| Yea, that's a common complaint coming from other safe
| languages where the safety is accomplished by runtime
| features (such as garbage collection) instead of compile-
| time rules.
|
| I think that most programs should be written in easier
| languages than Rust, since most of the time the
| engineering cost of creating a system is higher than the
| cost of running it. You can rewrite it in Rust once your
| system is large enough that eliminating the garbage
| collector will save you a few million dollars a year. By
| then you'll have a complete understanding of the
| requirements, and you won't have to experiment to get it
| right. Use a language like Lisp, which is designed for
| easy and fast experimentation, to write the first version
| of your software.
| rickstanley wrote:
| From https://google.github.io/comprehensive-rust/:
|
| > This site uses cookies from Google to deliver and enhance the
| quality of its services and to analyze traffic. [Learn more] [Ok,
| Got it!]
|
| No reject? :|
| renewiltord wrote:
| Cool thing. I currently use ChatGPT to provide me some exercises
| as I get better at the language. This is more like a presentation
| that needs accompanying conversation from the presenter.
| beeburrt wrote:
| > I currently use ChatGPT to provide me some exercises as I get
| better at the language.
|
| That's a good idea, thanks! I'm gonna do that too
| beeburrt wrote:
| This seems like an awesome resource, but for a self learner like
| myself, not so much.
|
| It's assumed that this book is accompanied by an experienced rust
| dev for a lecturer.
|
| The posted link is to the GitHub repo, here's the link to the
| book:
|
| https://google.github.io/comprehensive-rust/
| adolph wrote:
| It is interesting that they have a day devoted to embedded using
| MicroBit v2.
|
| The older Rust-Embedded Discovery book [0] also used Microbit but
| the later edition [1] suggests a STM32F3DISCOVERY. For RISC-V and
| Extensa fans there is also Ferrous Systems' Embedded Rust on
| Espressif training material [2] which has a coordinated board [3]
| that has been "cloned" by Wokwi [4].
|
| 0. https://docs.rust-embedded.org/discovery/microbit/index.html
|
| 1. https://docs.rust-embedded.org/book/index.html
|
| 2. https://esp-rs.github.io/espressif-trainings/
|
| 3. https://www.amazon.com/dp/B0B4FPV9FW
|
| 4. https://wokwi.com/projects/new/rust-esp32-rust-board
| zokier wrote:
| For embedded Rust the biggest thing imho is that Infineon, a
| _major_ microcontroller company, is officially supporting Rust
| https://www.infineon.com/cms/en/product/promopages/rust/
| steveklabnik wrote:
| Don't forget Espressif too.
| RcouF1uZ4gsC wrote:
| Rust is the first systems programming language since C++ I have
| seen pushed by multiple large tech companies.
|
| Go was pushed primarily by Google
|
| Swift was pushed primarily by Apple
|
| C# was pushed primarily by Microsoft
|
| I am seeing a push for Rust by Microsoft, Google, and Amazon.
|
| In retrospect, it almost seems that Mozilla closing the Rust team
| was a good thing for Rust as a lot of the Rust developers ended
| up at other companies and Rust became more than just a Mozilla
| language.
| junon wrote:
| As someone who once despised working with Rust pre-v1, I firmly
| believe Rust _is_ the future.
| seabrookmx wrote:
| Honestly all three languages are great in their own ways, but
| you're right in saying none of them really hit that low level
| "systems" niche.
|
| I'm a big C# fan but I see very few use cases where I'd
| consider both.
| loeg wrote:
| I believe Rust evangelism spread to other companies long before
| Mozilla stopped incubating the language.
| steveklabnik wrote:
| That is correct. These other companies were already employing
| people who worked on Rust in some capacity when all that
| happened.
| whatyesaid wrote:
| Rust is actually more suited to those companies than the
| general public (small companies and individual programmers) so
| it makes sense they do push it hard.
| _rs wrote:
| Why would you say that is, or why do you think so?
|
| I would argue Rust is definitely suited towards small
| companies and individuals for a lot of projects that C/C++
| would've been used for before, even things like small audio
| units or plugins
| howinteresting wrote:
| Rust has many design features that make it work well for
| larger teams.
___________________________________________________________________
(page generated 2023-05-23 23:01 UTC)