Изучение Rust в 2020
До нового года осталось меньше месяца, а я только нашёл эту прекрасную страницу: Learning Rust in 2020.
Я стал осторожно изучать Rust с начала 2020. Особых причин для изучения не было. Хотелось изучить какой-то новый язык программирования, чего уже давно не делал, так как не было времени и сильной необходимости. При этом не люблю языки, работающие на виртуальных машинах (видимо, сказывается нелюбовь, вызванная столкновениями с ранними версиями Java, которые всегда больше обещали, чем делали). Есть исключение: мне нравится Clojure и я делал к нему несколько подходов, но очень глубоко не погрузился. Мне не хочется изучать еще один интерпретируемый язык. Я трушу идти в экзотические и/или пуристские языки (Haskell, Scala).
Rust показался идеальной целью по многим параметрам. Он производительный и мощный — в том смысле, что может работать на голом железе, без интерпретаторов, байт кода, сборки мусора, и так далее. При этом, он высокоуровневый, но без сборки мусора, которая заменена на мощную и сложную систему управления памятью, иногда называемой «сборкой мусора во время компиляции».
После прочтения Rust Book, прежде чем перейти к написанию какого-нибудь хобби-проекта на Rust, хотелось для начала набить руку на простых примерах на сайтах типа LeetCode или CodeWars. Однако первые же попытки решить простейшие задачи на LeetCode стали вызывать серьезные трудности. Я знал, что на Rust сложно реализовывать структуры данных из-за стремления компилятора сделать программы максимально безопасными. Но не предполагал насколько, и насколько сложно решать эти проблемы имея за поясом только Rust Book, которая, всё-таки, не объясняет множество критически важных вещей.
Страница Learning Rust in 2020 немного подняла самооценку, так как на ней поясняется, что, к сожалению, задачи на LeetCode и CodeWars плохо сформулированы на неидиоматичном Rust. Предлагается несколько альтернатив, например, Exercism — сайт, на котором можно решать задачи, составленные профессионалами на идиоматичном Rust. Более того, обещается, что проверять и подсказывать будут настоящие наставники. Зарегистрировался и решил первую тривиальную задачу. Постараюсь информировать о ходе прохождения курса, концепция мне очень нравится. Но прежде надо будет закончить другой начатый курс: Learn Rust by Building Real Applications , который пока нравится тем, что доступно и просто объясняет как некоторые сложные концепции, которые не до конца объяснены в Rust Book, так и многие вещи, которые даже не были затронуты в Rust Book.