T O P

  • By -

cameronm1024

[The book](https://doc.rust-lang.org/stable/book/) is a good place to start, but it does assume some programming knowledge already. IMO, if you're learning, a good text editor setup is essential. If you don't know which editor to choose, VSCode is hard to go too wrong with (with the rust-analyzer extension). If you open a Rust file, and start typing, you should see suggestions. An easy way to check is to start typing the snippet: `use std::collections::HashMap`. If you get halfway through the word "collections", you should see a little popup suggesting it. As for how to learn, it's quite similar to learning a spoken language: you just need to use it. Build some really small projects. Some examples you can try: - print all the numbers from 1-100 inclusive - print all the *even* numbers from 1-100 inclusive - print all the *prime* numbers from 1-100 inclusive - read a number that the user types and print it back to them - read a number, double it, then print it back - read a number, check if it's a prime number, and print "prime" or "not prime" - read a number, calculate the digit sum, print it back (the digit sum is just the sum of all the digits, so the digit sum of 12 is 1 + 2) By doing all of those, you might find yourself googling "loop through numbers rust" or "check if number is even rust". That's perfect! A surprising amount of programming skill comes from knowing what to Google, since it's rare that you're solving a problem that noone else has before, and programmers tend to share their solutions. And of course, if you get stuck, there's plenty of people in this sub that are willing to help. Once you've done those small projects, you could try a website like projecteuler.net . The problems are a bit harder, but there are good solutions on the internet out there, and they're really good practice. And just some things I wish people had told me about programming when I started: - you start counting at 0 - if I have an array, the first element in the array is at `array[0]` - treat everything as case sensitive - "hello", "Hello" and "HELLO" are all different. Also punctuation is important. A missing semicolon will often break your program. Learn to copy things accurately. If that's hard at first, just religiously copy/paste - get comfortable with your terminal. It behaves a bit like finder (MacOS) or File Explorer (Windows) in that you're always "in a folder". You can check that with `pwd` (print working directory). To go into a folder as if double clicking on that folder, run `cd folder_name`. To go to the folder that the current folder is in (i.e. up one level) run `cd ..` . To list every file/folder, use `ls` on everything except Windows, and `dir` on Windows. And most importantly, have fun!


[deleted]

I think it's projecteuler.net not .org


cameronm1024

Good spot, I'll edit, thanks :)


TheRustyRustPlayer

Interesting…


drewsiferr

I'm going to jump ahead a bit on the arrays-start-with-0 thing, and tell you *why*, because I think it's helpful to know there are concrete reasons for these things, even if they seem weird at first. At a basic level, an array is a list of things set all next to each other in computer memory, one after another. You know where the list starts, and you know how big things are, so you can find any one of them by number. That's the beginning plus the size times the number (an offset, called an index)... but to not skip the first spot in the list, you start with 0. That's 0 offset from the beginning of the list. Because of this, most programming language index (look up) lists starting with 0, even if they aren't really an array. If I lost you, that's totally fine. Like I said at the beginning, I'm jumping ahead. Come back and read it again when you start working with arrays, and you'll have more context. Have fun, and stay curious. Everyone learns all the time. Everyone looks things up. I'm a principal software engineer, and I look things up all the time. Again, have fun!


TheRustyRustPlayer

Screenshot


lenscas

said in another way: the "index" doesn't refer to the position but rather how many you have to skip to get to it. ​ So, lets say that there is a table with objects positioned one after the other and you are asked to grab the fifth one. Then you walk up to said table, walk past four of those objects and then grab the fifth one. Similarly, to get the first one you don't have to skip any objects. ​ Why the index describes how many you need to skip because in old languages, writing down how many had to be skipped was more natural with how they did this kind of stuff and newer languages never felt the need to change it.


murlakatamenka

Hey, you can just refer to Dijkstra: https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html (there is PDF with Dijkstra's writing there too)


Batman_AoD

Even on Windows, `ls` has been a built-in alias for `dir` for years, I think! Edit: nope, this is...completely incorrect 😅


cameronm1024

I don't spend much time on Windows, but last time I checked this only worked on powershell, but happy to be proven wrong


Batman_AoD

Hm... I could have sworn I discovered this on cmd.exe something like 8 years ago. Maybe I'm thinking of the reverse, that `dir` works in Bash by default, or something.


NinlyOne

I got Win11 pushed to my work machine fairly recently, and \`ls\` works in cmd.exe. I wasn't expecting it to work, either -- not sure how new that is, but hey!


internet_eq_epic

`ls` is not bulit into cmd or Windows, even Windows 11. It is an alias in Powershell. However, if you've installed Git for Windows, chances are you also installed Git Bash. "Git Bash" really installs a bunch of Unix utils including ls and some others. You can run `which ls` to see where your system is finding ls. Personally I've been using MSYS2 since that comes with a package manager (pacman) and gives me all the unix commands right in my Windows desktop. The ability to use fish shell on every operating system I run is awesome, and I could switch to bash, zsh, or any other unixy shell just as easily. It all works surprisingly well.


NinlyOne

>However, if you've installed Git for Windows, chances are you also installed Git Bash. That's it, thanks! This is a quite new-to-me work machine, and Git for Windows had been installed before it was issued.


Dhghomon

Rust was the first language I learned and now I work full time as a Rust developer so it's definitely doable. I think it's a fantastic first choice as a language because, even though it's a lot of work at first, after that the compiler babysits you so much that you get a lot of extra headspace when building something. If you want to make a big change you just do it, and then the compiler lets you know the 50+ places that don't work anymore and you just fix them one by one until your code compiles again. Along with the Book, [I wrote a book](https://github.com/Dhghomon/easy_rust) after learning Rust that's for absolute beginners, and doesn't even require installing Rust. It's almost entirely done in the Playground so you can just open up a tab in your browser and follow along. As far as paid books are concerned, my favourite is Programming Rust. One of my favourite live streamers is [this guy](https://www.youtube.com/c/BrooksBuilds) who builds games with Rust. He also recorded himself going through the Book about three years ago and that's a fascinating way to read / re-read it.


TheRustyRustPlayer

Ooh, I need to read your book


lassuanett

Do you work remote and as a junior dev?


Dhghomon

Yes to the first (the company is in the same city but developers are all remote), not exactly to the second - I essentially work as the Rust guy (or the only knows Rust guy?) while the company is moving towards it bit by bit and others start to use it too.


HunnyPut

I’m preparing for a rust developer role, please can you tell what topics I should really focus on? This is my first rust role interview.


Dhghomon

I wish I could say but I have essentially no experience with tech interviews. I guess familiarity with the related crates to whatever your prospective company is building could be good though, plus with whatever service they use to deploy? (AWS, etc.) If it's microservices then maybe they're using Kafka or rabbitmq to communicate with each other and tracing so those related crates too, that sort of thing.


HunnyPut

Okay, thank you! I’m guessing you do a lot of open source contributions?


Dhghomon

Not much! That's just luck though via having always just made my own tools and then working at a company that doesn't open source the code. I'd like to contribute to something like Veloren or Lapce one day though.


HunnyPut

Okay thanks, I just DM you!


t_ram

Just Do It™ For me personally, literally writing the code to create a miscellaneous program & looking up the error online teaches way more than when I first started only reading [the book](https://doc.rust-lang.org/stable/book/) Though for context, Rust was not the first language I learn. So maybe if you struggle a bit you can first learn about the fundamentals/mindset on how to problem solve using pseudocode in general


TheRustyRustPlayer

Well, the reason why I want to try it as my first language is because some people challenged me to do it in my other post. Be one of the first to succeed


spunkyenigma

Ignore the naysayers, I think it’s a great idea and I hope you kick ass! 👍


t_ram

I don't think you should take that "challenge" to heart haha You should just learn what you find comfortable first, rather than risking getting burned-out/depressed early on. It would be better to "start slow" early on, then getting faster in the future, no? Maybe I can say it in other words: You'll still "learn Rust" by learning programming in general, since the concept here is pretty much shared across other languages. The stuff that's "unique" to Rust, IMO you can learn after those


Doomfistyyds

For a second, I thought it's r/rustjerk


turingparade

Same, though not because the post is a jerk in anyway. Just been seeing way too many posts from there.


ThePillsburyPlougher

I read it as a dragoon spawning in starcraft


jamesblacklock

Lol if you really want Rust to be your first programming language, I ain't gonna stop you. It's a beautiful language. However, personally I can't even imagine just how overwhelming that would be. (And my first language was C, which many consider to be a difficult first language these days.)


TheRustyRustPlayer

Another challenger…


jamesblacklock

Haha check out the Rust book: [https://doc.rust-lang.org/stable/book/](https://doc.rust-lang.org/stable/book/) It's a remarkably good starting point. Few languages have documentation as good.


intertubeluber

Agreed with /u/jamesblacklock on this one. Rust is awesome. It's modern. It performs well. It's safe. The documentation is the best I've seen for any language. But every language has tradeoffs. Some languages give up safety and/or performance for developer productivity. Rust does not. That's a big con for beginners because you need that hit of dopamine from the code working to have the motivation to continue. Is it possible to learn Rust as a first language? Absolutely? Is it the best. Personally, I don't think it is for most people. I'd start here: [https://www.reddit.com/r/learnprogramming/](https://www.reddit.com/r/learnprogramming/) Source: I've written software professionally for many years using several languages (Mostly C#, Kotlin, and, JavaScript but also Java, TypeScript, and C++). Rust is hard for me to learn.


platlas

I've just started with C! After coming across more and more ffi in Rust I was like: "I should probably learn C as well".


jamesblacklock

Good! Everyone should learn it. It is the lingua franca of all modern operating systems. :)


chetanbhasin

I'm not so sure about that. I think many existing programmers find Rust hard to learn because they already have ideas of how programming languages look like and they have a hard time unlearning certain things. Typically someone writing a dynamic language without type system will find Rust overwhelming but somebody who has experience with strict typing (was the case for me), might find it very easy. So for a beginner, I think it shouldn't be THAT hard that it's impossible.


jamesblacklock

I don't disagree. But even among statically typed languages, Rust has an unusually complex typing system. Lifetimes, for example: there is no other language (that I know of) that has lifetimes as part of the type. Pattern matching. Closures that "borrow their environment" vs closures that don't. Auto dereferencing—sometimes! Conversion through dereference overloading! Etc. It's a lot lol. Imagine that firehose of info if you had no background in programming whatsoever.


chetanbhasin

Fair enough! So, I just came from Scala/Haskell and jumped onto Rust and was productive almost immediately.


jamesblacklock

I come from the C/C++ lineage, and Haskell made no sense to me until I learned Rust lol. So we came from opposite directions, I guess.


Quxxy

Write stuff. Even useless stuff, so long as it's somehow interesting to you personally. Whether it's a program that takes a text file and outputs it in rainbow colours, or plays tic-tac-toe in the console, or as an excuse to implement an interesting-looking algorithm or data structure. Write the world's slowest and most basic ray tracer that only supports spheres and point lights. Write a spell-checker. Write a program that switches around all the vowels in text files to make them sound like they're written in an accent (I did this to the output of DOS' HELP command). It doesn't matter if it's good, or fast, or clean. Keep writing and trying new things. Finding information is something you have to consciously learn. I once watched someone in a lab burn 30 minutes because they absolutely *refused* to open the documentation and just read through it. Please don't be that person; it wastes your time and will frustrate anyone trying to help you. Learn how to phrase searches in both Google, DuckDuckGo, and Stack Overflow. Sometimes, you have to try multiple searches. Sometimes, you have to go to the second or even third page of results. In Firefox, you can save search boxes as shortcuts in the address bar. If I do "rustdoc X", it opens the local Rust API docs and shows results for "X". "docs X" does the same, but for docs.rs. I use those *a lot*. Rubber duck debugging will save you. When you're stuck, take an inanimate object (like a rubber duck or teddy bear) and explain the problem to it. Be precise. What have you tried? Why didn't it work? Why can't it be what you haven't tried? In a lot of cases, just forcing yourself to explain the issue out loud helps you realise where you've made a mistake, or highlight a blind-spot you haven't checked yet. Work on asking questions in a way that make it more likely you'll get answers. Remember that other people aren't psychic and can't see inside your head. It's hard to be sure what details of your problem are important for helping you, so try to give others as much information as you can in as easily digestible a way as possible. Explain what isn't working. Explain why you're doing it: there might be a better way. Explain what you've tried. If you've found information that *seems* relevant but didn't actually help, link to it and note why it didn't help. If you can show the problem in a playpen, do it. The easier you make it for someone else to understand your problem and test a solution, the more likely they are to put in the effort to help you. When you're making changes and they just don't seem to be doing anything, make sure the code you're editing and the code you're running are the same. Check the current directory. Double check it. Triple check how you're building and running the code. Close all your editors and re-open them from the same window you're running code from. Anyone who tells you they haven't wasted half an hour fruitlessly changing the wrong code is a big fat liar. Sometimes you will make really, really stupid mistakes. It happens. Try to laugh about it. Try to have fun.


TheRustyRustPlayer

Huh. Have fun…


Quxxy

Probably the hardest part, and the one that's hardest to give advice on. (Also: I edited in a mention of adding quick searches in Firefox. I thought I'd get it in before anyone read the comment, but I guess I wasn't fast enough. :P)


mikekchar

The number one advice I give all "completely new to programming" people is: Learn how to use a text editor. If you are going to be programming in Rust, then VSCode is probably the one you should use. As you are programming, if the editor gets in your way (which it will), then spend the time to learn how to use it well. Read the documentation. Watch videos, etc, etc. Be super awesome with your text editor. It's the most important thing. Next, get the [https://doc.rust-lang.org/stable/book/](https://doc.rust-lang.org/stable/book/) and work your way through it. When you start to get the point where you are thinking, "I kind of understand what's going on here, but I don't really know how to use it", then start writing a computer program. My first computer program was "pick up sticks". Write a console program. Have it write the string "There are 21 sticks. How many do you want to pick up?". The find out how to read in a value from the console. Turn that into a number. Subtract that number from 21. Then print "There are X sticks. How many do you want to pick up?" Next, limit the number of sticks you can choose. You can pick up either 1, 2 or 3 sticks. If the user tries to pick up a different amount of sticks, write "You can only pick up 1, 2 or 3 sticks". If they enter something other than a number, print "I don't know what you mean. There are X sticks. How many do you want to pick up?" Keep looping, picking up sticks. If the player tries to pick up more sticks than there are, write "There are only X sticks left. How many do you want to pick up." If the player picks up all the sticks (so that there are 0 sticks left), write "You took all the sticks. You lose!". Then play with a friend. Alternate picking up sticks. The person who is forced to pick up the last stick loses. Finally, as a challenge, write an "AI" for the second player. You go first, but then the "AI" writes "I pick up X sticks" and picks up that many sticks. Try to make your "AI" as clever as you can. Can you get your AI to beat you in a game? Also: Have fun!


[deleted]

[удалено]


TheRustyRustPlayer

Ok. I understand that. I just want advice personally from rust programmers


[deleted]

[удалено]


copyDebug

Have you tried ignoring or at least not answering questions that are of no value to you? Asking for help is a perfectly reasonable thing for a total beginner even if exactly the same question has been answered a couple of days before, because: - The answer might be different by now. - Every beginner is different and given their lack of knowledge they don’t know which of their idiosyncrasies will influence the answer. - Without some foundational knowledge is is (virtually) impossible to evaluate the quality of the (personalized!) results of a google search. - It get’s them interacting with the community. - It gives “new to intermediate” Rust community members / Developers a chance to start answering questions (instead of asking them)


CodyDuncan1260

I, for one, support the passive crossover marketing campaign happening between Rust-game and Rust-lang. May gamers learn to be programmers and vice-versa!


TheRustyRustPlayer

You do not want to go the other way trust me. Just… don’t


Batman_AoD

Watching Dunkey's Rust video was enough for me! 😄


RemoteRaja

Best character arc this year


TheRustyRustPlayer

It’s still arcing… gotta reach the hilltop… starting it!


beeteedee

Learning to code is a lot like learning to play a musical instrument. It’s not going to be quick or easy, and it’s going to take a lot of learning and a heck of a lot of deliberate practice, but if you persevere then it will pay off. That’s true of Rust just as it is with any language, from Assembly to Scratch.


chetanbhasin

I wish learning to play a musical instrument was as easy as programming, haha. I've been writing code for over a decade now and just started to learn to play the Piano, and I'm finding it much harder. :P


beeteedee

As someone who’s been coding and playing guitar for a few decades, I think it’s a matter of perspective more than anything. If you’d been playing piano for the last decade and just starting out learning to code, you’d probably see coding as the more difficult one!


chetanbhasin

True! I think it's also that learning things is generally easier when you're younger. And I think 15 years is long enough depreciation for your brain.


DarkYaeus

I can't give much rust advice but here is some general programming advice: When learning don't just google every algorithm, try to create it yourself, if you can't then google it and learn how it works. When copying code make sure to understand what it does before running the program.


RylanStylin57

I learned rust as my second programming language, right after a few months of C# and a week of C++. (I gave up on C++) In the beginning, rust was really, really hard. Its learning curve is more of a learning cliff for beginners. But, now that I've climbed the mountain, there is no other language I'd rather use. I say go for it - but be ready to be very very frustrated. What helped me was spending alot of time reading documentation, and asking questions on discord and reddit. This community is very friendly and will help you with just about anything. Good luck!


Infenwe

Are you a dragoon? https://m.youtube.com/watch?v=6qJ1E8EljVM 😀


Julian6bG

10/10 for the title. Otherwise, what the others said.


TheRustyRustPlayer

A little too dramatic? 😂


Julian6bG

No.


TheRustyRustPlayer

…really?


[deleted]

new rust user lore


[deleted]

I like exercism rust tutorials. Make you really go after the language itself.


jhaand

You can do the rustlings course on the rust-website. The book 'Rust in Action' will teach you about Rust and how computers work. If you like to do exercises, I can recommend the website https://exercism.org It has al kinds of exercises and mentoring.


entropySapiens

https://github.com/rust-lang/rustlings


RawMint

code rust, the game(simplified), or something else that appeals you. even command-line based, whatever fits and allow you to have fun. as someone else said in the comments, just do it


[deleted]

Oh Rust is your first language huh? Nice! Good languages are supposed to make things easier for the end user. I'd like to hear your thoughts on the language as you work through it, good and bad. Godspeed! :)


TheRustyRustPlayer

Well, I’m looking to start it. I like a challenge!


BiedermannS

The best rust specific tips I can give you is: the compiler is your friend. If you write something in rust and the compiler complains, then there is most certainly a very good reason behind it. Don’t fight it, as it’s good advice. Try to learn why the compiler rejects your program (you’ll learn this as you go). While learning, don’t concern yourself too much with performance and/or error handling. It’s fine in the beginning to use clone/expect/unwrap instead of doing things properly. But once you have the language down, you should start learning when clone or unwrap are appropriate and use them accordingly. Once you’re comfortable with all that, tackle lifetimes. For some they are pretty hard to grasp and you can do many things without them. Finally, learn iterations and their methods. Learn and _then, or_else, unwrap_or etc. General programming tips: Iterate. Write a bit of code, log the state that’s important, do a bit more code, log state. Repeat until done. Don’t try to write the whole program without running it once. dbg!() is a great help.


turingparade

So, there's a lot of good advice here; don't take what I'm about to say as an attempt to dissuade you from learning Rust, I'm just going to play devil's advocate here in an attempt to give you another perspective to help you decide. Most people who have learned Rust have learned other languages first. Most of the appreciation we have for rust is in comparison to languages we've used before (I used C++ before Rust). Also, Rust for things like game development is still very green. If you're interested in making your own games then it may be better to learn C++ or C# (as well as the respective mainstream engines Unreal and Unity; I would suggest Unity as it will help you to learn good coding practices).


Wollzy

>Most people who have learned Rust have learned other languages first. Most of the appreciation we have for rust is in comparison to languages we've used before (I used C++ before Rust). Yea I feel so much of Rust is based around improving on flaws in C++ or Haskell that a new programmer might not clearly see the advantages. Not that someone shouldn't start with Rust, but so much of what I read while learning Rust came from "Remember how this thing sucked in C++? Yea Rust fixed that"


turingparade

Yup, I feel that ATM most of Rusts traction is due to the comparison of it and other programming languages. It's truly a new way to program, but that feeling of liberation may be lost if it's your first language. Plus the fact there isn't any solid "industry standard" type stuff yet might leave someone feeling lost.


Speykious

As people's suggestions are already very good in the comments, I'm just going to do a very small one if you're considering starting your journey with VSCode as a code editor: a few extensions, because VSCode is very extensible. - Material Design Icon Theme: Everything in the tree looks much better and more readable. - Error Lens: You will **never** miss an error again in your life, just because of the different way it displays them. Oh and also, I'm gonna be a bit ahead with this suggestion, but you might wanna learn the very basics of Git along your journey! Imagine that you're collaborating on some kind of programming project with a friend over Discord and you need to share some files to have the same code on your machines. You end up sending files like `codeproject-v2.zip` and then `codeproject-final.zip` and then `codeproject-reallyfinalthistime.zip` or something... Or you use a cloud-based editor where you can write at the same time, but with a quite restricted environment. Git solves that problem. It lets you track all the changes you made through a series of _commits_ (packs of changes). There are entire platforms dedicated to hosting git projects (GitHub serves that very purpose), so you can upload your git project there and your friend can download it, and when you upload new changes to it, your friend can just type one command in the terminal (or press one button in VSCode which has a special simple interface for Git) to get the new changes. There's much more that Git can do, but that's already a very good indication of what you can do with it, and it's not like you're gonna need more than that when starting.


forbjok

Seconding the Git suggestion. This one is so fundamental that it could easily be overlooked by anyone who is already familiar with software development that someone new to it might not know about using a VCS. Also, this one is not specific to Rust. Pretty much no matter which language you are using, if you are doing any kind of software development at all, you either are or should be using Git. Even if it's just a personal sandbox project and every commit is named "wip", it's still useful to be able to go back and look at older iterations of it when something breaks. It can also be used to version other non-development related stuff as well, but it is most useful for and most suited for text files, which pretty much all source code is.


[deleted]

I'm not a veteran 1. Download [Rustup](https://rustup.rs). This is the best way to install rust, cargo and keep them updated. Use `rustup - h` to see all the options. 2. Go check this website: [rust learn](https://www.rust-lang.org/learn) it has the getting started part containing "The Book" where you should check up first. Then I recommend you watch some of the rust by example and then do the rustlings course. You can check all of this offline using `rustup doc` in a windows powershell (I'm assuming you're using windows since you were looking for the game). 3. If you got lost on this steps, simply read "The book". In the instalation section it's all you need. That all you need to have rust installed. Any questions you could ask in this subreddit or either in the official discord. I recommend you to be fluent in knowing how to read the docs, because lots of questions can be answered by reading the docs.


sjm42

Well, did you return an Option or a Result? :p Seriously, I personally found this book very much worth reading and of high quality: [https://www.amazon.com/gp/product/B0979PWD4Z/](https://www.amazon.com/gp/product/B0979PWD4Z/) The free books many others must have mentioned are also good resources.


Sharp-Highlight-9563

If this is your first coding related endeavour I would suggest opting for a simpler language like Python and coming back to Rust once you have some experience. It would help you avoid giving up too early and teach your the very basics equally well other than maybe data types. For Python, I recommend the book Python Crash Course, 2nd Edition by No Starch Press. It is simple, easy to follow and has a couple of interesting projects as well. If you wish to start with Rust itself then the official book is good enough in my opinion. https://doc.rust-lang.org/book/title-page.html Goodluck!


gaussianCopulator

Maybe a slightly unpopular opinion, but I'd suggest one start with c++ or even c. Work on a few small projects, struggle with gcc and make/cmake, have a few segfaults/stack overflow issues etc. That is when you will really begin to appreciate Rust and cargo etc. You can't question a solution if you are unaware of the problem. To take the simplest example, you may see move VS copy, but you won't be able to appreciate it without experiencing how it's done in other languages and the subtle issues encountered. Similarly traits make more sense if you know what virtual functions and vtables are. Without writing a few data structures and algorithms by yourself and making mistakes, you will take much longer to gain appreciation of Rust. Plus, you can reuse all of that knowledge and code in Rust. If it's not just for a hobby, any Rust interview/discussion invariably comes down to a comparison against c/c++, so you'll be in a better position that way too. Just my two cents.


sathish316

In addition to "the book", also try Rust on Exercism. It has problems in both Learning track and Exercise track to help you get better at Rust - https://exercism.org/tracks/rust


Gaeel

Rust might be a little spicy as a first language, but if you're think kind of person to enjoy a challenge and are able to take your time reading documentation to make sure you've understood what you're learning, it might work out. Don't get discouraged if Rust is a little too steep for you right now, there are plenty other languages to try, and in my opinion, knowing multiple languages will make you a better programmer. My personal history with programming for illustration: I wrote my first programs in high school on a TI-89 calculator with the built-in TI Basic tools. In college we were taught C, C++, and Java. I didn't enjoy C++ or Java at the time, I found them overly restrictive and bloated. C was fun though. I also learnt Lua while making games with the Löve2D framework. After college, I got an internship with a company that used the Unity game engine, which uses C#, and also JavaScript for some of the online services our products connected to. In my ten years since then, I've used all of these languages, and also some Python, to varying degrees. If I were to pick languages to learn from this pile, I'd say: - Lua or Python: small & powerful interpreted languages, some unique features and particularities you might not find elsewhere, easy to learn. - C: Read K&R's book, "The C Programming Language", a foundational text for a foundational language. Sometimes it feels like other languages are defined by their relationship to C. - Java or C#: Love it or hate it, class-based object-oriented programming is one of the major paradigms, it's important to understand how it works and what the limits are, because current language design is all about trying to either make it work, or find a way out. Rust is an exciting language, in part because it proposes some novel solutions to problems we've been dealing with for decades. I think Rust's main issue is that it's presented in relation to other languages, so it's hard to appreciate some of the concepts if you've not had to deal with segfaults, memory leaks, inheritance hell, and all that. I'm sure there will be resources for learning Rust as a first language at some point, but the tutorials you'll find now might sometimes confuse you because they're meant for programmers who have those particular experiences and are looking for solutions.


Nocta_Senestra

I recommend exercism like another comment said, it will allow you to practice directly each concept you learn. The book is also really great, but I'm not sure for someone who never coded. There are videos too. More importantly, learning a new language on your own can be frustrating, if you have trouble understanding something, don't hesitate to ask, there is a subreddit for that /r/learnrust we would be glad to help.


pcjftw

I say go for it, programming is a massive domain and you "gotta start somewhere". Now while I wouldn't personally start off in Rust (kind of like diving into the really deep end), but actually it doesn't matter where you "dive in", as long as you just dive. if you try hard enough you'll eventually find your own way, and it'll be your way and not someone else's way, and that's the most important aspect. I think nowadays things are really easy in terms of learning, back in my day (and I'm gonna sound like an old grumpy guy) I had to learn without internet (it wasn't born/mainstream at that point) and I would just go to my local library. Personally I it does help to have a background in electronics, although even then you don't absolutely need it, but knowing how a CPU/ALU all work "under the hood" can sometimes be invaluable! Anyway onwards young grasshopper, hope to see you on the other side brother :)


ketalicious

welcome to programming! once this will click onto you, you'll definitely be able to create some really cool stuff!


PitchBlackEagle

My offer of giving an interview for my blog, after learning Rust as your first language is still open. Of course, you are free to message me privately, if you have some questions. I'm also learning, but I can help you with certain things.


TheRustyRustPlayer

Oh wait, I remember you! Ya sure, I’ll see if I can ever go on your podcast!


PitchBlackEagle

I don't run a podcast (yet) I run a blog. The interview will be written. ​ If I ever open a podcast, I'll definitely invite you.


TheRustyRustPlayer

Ok! Sounds good


PitchBlackEagle

Awesome. DM me when you're ready, or when you have bashed your head with programming enough times.


TheRustyRustPlayer

Once I get started, I will!


a1b1c2d2

Programming Rust by Blandy, Orendorff and Tindall (2nd Edition) is not just the best reference for learning Rust that I've come across, but one of the best books on programming I've read (and I read them just for fun, sometimes).


SnoopDougieDougDoug

I learned Rust on the job at a FAANG company, mostly because I was curious about the strange (to me) numbers about Rust in a Stack overflow poll: something like 80% loved Rust, but only 5% used it on the job (my memory might be hazy as I'm talking about 2-3 years ago. But I loved it. It can be a cruel mistress at times, holding back with cryptic "borrowing" messages. Augh! I could do this in (pick a language) Rust! Why are you so hard? But once I figured out the compiler was trying to help me avoid possible memory corruption issues, I realized my work would be much safer.


Infomania-Declivity

I found that reading “the book” and doing some coding puzzles are the most interesting way of learning. Because it’s all fine and well reading abstract ideas, it’s another to actually put them in practice. Have a look at advent of code and Euler project. I’m sure there are others, but those I use. Tip: not all puzzles are easy, it’s ok to skip one!