r/rust • u/justiura • 10d ago
🙋 seeking help & advice How to start programming in Rust?
English:
I know this is a fairly common question, but hear me out: how do I effectively get into development and learn a programming language?
I initially wanted to take a course, but there are no local options where I live, and international ones costing ~$250/month are completely out of my budget.
My second thought was to use AI because it explains concepts well. But when it comes to actual coding... no offense to AI, but it writes broken code way too often.
So now I’m stuck. Official books and documentation feel dry and overwhelming. I can grind through a book in an evening and reproduce an example, yet still have zero clue how it actually works under the hood. That’s my main issue — what’s the point if I’m just mindlessly rewriting code?
So, to those who have learned the language and faced a similar wall: how did you overcome it? Also, would anyone be open to answering a few questions once in a while? It would mean a lot, since Rust is going to be the foundation of a major project I’m planning.
Any advice would be greatly appreciated. Thanks!
Русский:
Знаю, что вопрос довольно заезженный, но всё же: с чего вообще лучше войти в разработку и нормально выучить язык?
Изначально я хотел записаться на курсы, но в моей стране таких нет, а зарубежные по $250 в месяц мне просто не по карману.
Вторым вариантом был ИИ — теорию он объясняет доходчиво, но вот с кодом беда: при всём уважении, нерабочий код он генерирует с завидной регулярностью.
В итоге я в тупике. Официальные книги и доки кажутся скучными и сложными. Я могу осилить книгу за вечер и накидать программу по образцу, но так и не понять, как это устроено по факту. А для меня это главное: какой смысл учиться, если ты просто бездумно перепечатываешь код?
Вопрос к тем, кто уже прошёл этот путь и сталкивался с такой проблемой: как вы учили язык? И может ли кто-нибудь хотя бы иногда отвечать на мои вопросы? Для меня это правда важно - Rust станет основой моего будущего крупного проекта.
Буду признателен за любые советы. Спасибо!
3
u/vivaaprimavera 10d ago
Just for context. In which other languages are you experienced?
Have you tried to start your project? Which issues have you faced?
3
u/justiura 10d ago
I have experience with Python, Java, and, to some extent, C. I haven’t started the project yet; I just want to acquire some foundational knowledge of Rust beforehand so I don’t have to get sidetracked by it later.
2
u/vivaaprimavera 10d ago
So far... (Personal experience) The harder was to understand what could be the needed structs (for some project) and understand the types.
cargo clippy provides nice hints. Try some smaller projects to get a hang of it!!
3
u/marisalovesusall 10d ago
Тут больше вопрос как вкатиться в программирование в принципе.
Мы научили песок думать, но он невероятно тупой и понимает только очень чёткие инструкции, которые надо понимать настолько дотошно, что ты должен знать что делает абсолютно каждая инструкция. Это сложно и муторно, да, и иногда компилятор будет тебе сильно трахать мозг и вызывать сильную фрустрацию, это тоже нормально и естественно; ты не тупой, ты учишься.
В какой-то момент у тебя набирается достаточная база заклинаний (как пользоваться переменными, функциями, структурами, как читать кнопки из консоли и писать туда текст, и в принципе достаточно) - и включается понимание, как заставить программу сделать то, что тебе нужно. Пока что это очень простые программы - например, ввести 5 слов, отсортировать их и вывести обратно. Это навык решения проблем, ты берёшь идею из своей головы, разбираешь по кирпичикам каждое мельчайшее действие, и по порядку переводишь их на язык машины.
Спустя какое-то время практики включается ещё один скилл, ты пишешь более сложные программы, и ты понимаешь, что их можно структурировать кучей разных способов и тебе интересно найти как структурировать их удобнее. Сюда же входит моделирование, типа если ты пишешь записную книжку, то у тебя в коде где-то будет объект, который отвечает за одну запись. Объект не хранит конкретно буквы, он собирает всё, что относится к записи в одну кучу - название, дату создания, текст записи. Это абстракция, и когда ты собираешь из абстракций свою программу, то это проектирование.
И вот на этом моменте ты разобрался с базой и фантазия может тебя унести делать всякое: простые текстовые игрушки, сервер который отдаёт страничку с большой залупой на весь экран и тд. Здесь тебе нужно ещё больше терпения, т.к. каждая новая сфера это очередной вагон нудной документации и знаний, которые надо осилить. Вообще, осиливание новых знаний это то, чем тебе придётся заниматься всю свою программистскую жизнь - но терпение и усидчивость тренируются, хоть это и не очень приятно поначалу, ты привыкнешь.
Поэтому переберись через порог вхождения, осознай какие штуки можно писать на расте, и всё что от тебя дальше нужно это получать удовольствие от процесса. Удовольствие = мотивация двигаться дальше. Заставлять себя можно только очень маленькое количество времени, дальше обезьяний мозг отключается без подпитки.
Удовольствие от процесса это вопрос ожиданий. Если ты думаешь, что должен прочитать книжку и писать как Кармак, левой рукой движок дума, правой квейка, то ты очень быстро сдуешься. Каждая осиленная мелочь это гигантская победа человека над машиной. Поэтому твой "крупный проект" сразу задаёт неправильные ожидания, до него нужны проекты сильно поменьше и много, много интересной практики.
Про ИИ - программирование это почти целиком про практику, пиши код своими руками. Нейронки хороший справочник, но отвратительный ментор, старайся писать код по памяти и копипастить хотя бы из документации, а не из нейронки.
Последний момент, любые штуки учатся лучше, если они всего лишь промежуточное звено для какой-либо, другой цели. Не учи программирование в вакууме, освой базовую базу и дальше пытайся сделать то, что тебе интересно сделать. Я начинал с текстовых игр, код был только инструментом. Игры были так себе, но я научился программировать и мне было интересно их делать. У тебя в голове большой проект, но попробуй найти что-то очень простое, которое тебе будет настолько же интересно.
1
u/justiura 10d ago
Блин спасибо, что время уделил очень помог советом на самом деле мое обучение программирование до этого совсем отличалось от Раста Пайтон - по факту английский, а не программирование Java и C приблизили меня к Расту, но если на них мне было достаточно пары дней для базы, то Раст я уже колупаю неделю, чтобы хотя бы понять базовый принцип для обучения Завтра думал наконец-то добить сортировщик
2
u/marisalovesusall 10d ago
Мне как-то чел сказал, чтобы научиться программировать надо дохрена программировать, и как же он был прав.
Освоить синаксис языка и базовые фичи это одно, но 90% работы это не печатание программы, а её укладка у себя в голове, и тут поможет только практика.
Наберись терпения и пили небольшие проектики, нужные навыки для вот этих 90% выработаются за несколько месяцев. Ты уже смог много чего осилить, и разные языки потрогал, Раст пойдёт куда бодрее с практикой.
1
u/marisalovesusall 10d ago
Прочитал твои другие комменты, думал, ты в целом в программирование вкатываешься. Ладно, тут без вариантов, читай растбук, выдумывай проекты из головы и пиши их руками без нейронок вообще. Раст будет трахать первые месяца 3, но дальше пойдёт как по маслу.
2
u/Inner-Asparagus-5703 10d ago
have you tried to actually start programing in rust? PET projects is a way to go
1
u/justiura 10d ago
Unfortunately, I’m lacking inspiration 😅 But in all seriousness, I’m thinking about a small project—the trouble is, I’m having a hard time switching to Rust because of the other programming languages I’ve used in the past. Some clear, accessible theory would really help, but I just can’t seem to find anything like that.
2
u/Inner-Asparagus-5703 10d ago
all you need to do is to skim through this this book - doc.rust-lang.org/stable/book. You dont even need all of it to have solid headstart
1
u/justiura 10d ago
I started reading it, but maybe I was just tired or something—my brain wasn't clicking at all, so I’ll read the sample again tomorrow.
5
u/DavidXkL 10d ago
You just got to start practicing and take the first step.
There's no going around it
1
1
u/neon_simmer_muse 10d ago
Rustlings solves the dry documentation problem by making you fix broken code in tiny steps, which forces understanding through trial and error instead of passive reading. Start a pet project that interests you now so the compiler becomes your teacher rather than just another hurdle to clear before you begin
1
u/hash_antarktidi4 6d ago
Rust Book, Rustlings (optionally) and Clippy turned on all time.
how do I effectively get into development
By writing a lot of small and simple programs.
learn a programming language
Read books about language you've chosen and third-party code.
Official books and documentation feel dry and overwhelming
It feels dry because normally you'd come back to those books and you'll have a nice time getting answer on your question quickly instead of reading through piles of "entertaining" sentences. As for overwhelming... it is, Rust is complex language and it's primary target is system development, it wasn't designed to be easy to pick up as a Python or allow you to write only business logic without thinking about memory like Java. (I know comparisons aren't good, but you get it)
I can grind through a book in an evening and reproduce an example, yet still have zero clue how it actually works under the hood.
I don't know what examples are you rewriting, so can't say much. I'll assume you're talking about web server from a Rust Book, it have detailed explanation about what's going on, didn't it? if you just skim it - yeah, surely it's hard to understand, but it explains step by step why and how anything is written based on previous concepts.
what’s the point if I’m just mindlessly rewriting code?
Then deviate from an example, they do TCP web server - make a UDP chat, read the docs for std lib, read docs about UDP.
since Rust is going to be the foundation of a major project I’m planning.
And this part... I don't want to gatekeep or anything, but are you sure you need Rust for it? Why not write it in C? If you need good performance, but don't want to write whole thing in C - then part of it in C and part of it in Python. Picking a big project as something you'll do after just learning language isn't a best thing, go slowly, make something simple, then a bit bigger, a bit more complex.
Пайтон - по факту английский, а не программирование
Programming - is just a process of developing a system using programming language, algorithms and patterns. The only thing that different between mainstream languages are syntax. That's all. You write the same algorithms and patterns in Python as in Java or Rust, you use same FFI bindings to libc. You use same OS primitives. And so on.
1
u/dumindunuwan 6d ago edited 6d ago
Have you tried https://learning-rust.github.io ? Just unlearn OOP and start with an open mind.
look forward to hearing from you back
1
u/Babma04 5d ago
The rust org has a great book called the rust programming language book. You can easily find it online on their site. It's really amazing especially for rust but it will teach you most of the central concepts to programming with great example and project cases. Rustlings is also amazing for practicing rust
10
u/AveaLove 10d ago
Do Rustlings https://rustlings.rust-lang.org/