Блог Евгения Морозова

rust

Первый опыт написания чего-то нужного лично мне на Rust: annotate-branches или просто anb. Утилита, выводящая список веток Git в текущем каталоге, вместе с кратким описанием и статусом задачи из Jira (предполагается, что ветки имеют такие же названия, как и задачи в Jira).

Можно было намного быстрее и короче написать этот скрипт на shell, но каждый изучающий Rust просто обязан переписать что-то тривиальное (или не очень) на Rust. Кроме того, это хорошее упражнение для новичка в языке, т.к. требуется задействовать подпроцессы, регулярные выражения, и взаимодействие с сервисами по сети. Неожиданно легко получилось написать, ожидал, что будет дольше и труднее.

Написал еще до Нового Года, но руки не дошли анонсировать в блоге. Точнее, терзали сомнения, стоит ли публиковать что-то настолько тривиальное. В итоге решил, что стоит.

#rust

Certificate

Ссылка на курс на Udemy

Курс довольно простой и короткий, вопросы к курсу тоже очень простые, но курс всё равно понравился. Для новичка довольно объясняется много важных вещей, при этом очень понятным языком, и на примерах, отличающихся от Rust Book (которые используют множество других курсов), что позволяет взглянуть на язык с немного другого ракурса.

#rust #курсы #udemy #mooc

До нового года осталось меньше месяца, а я только нашёл эту прекрасную страницу: 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.

#rust #курсы #ссылки

Изучая Rust, не могу не отметить, что находить информацию в современном мире становится всё труднее. Не последнюю роль играет отмирание традиционных средств распространения информации, таких как персональный сайт, персональная страница, блог, и замена их на гораздо менее привлекательные и доступные страницы в facebook и блоги в телеграм. Кстати, блоги на GitHub тоже не люблю: по каким-то непонятным причинам более половины недоступны. То есть видишь где-то ссылку на блог на GitHub, переходишь, а там — 404. Сталкиваюсь с этим настолько часто, что нередко даже не пытаюсь открывать, если увидел домен github.io.

Ну а facebook и телеграм — это просто закрытые от индексирования эфемерные песочницы. Любая информация, попавшая туда, навсегда исчезает за горизонтом событий. Не говоря уж о том, что facebook давно стал инструментом политической пропаганды и жесточайшей цензуры.

Поэтому находя случайно интересный блог, радуюсь как ребёнок. Сегодня поделюсь следующей находкой: Faster than lime.

Есть статьи как для совсем начального уровня, так и довольно сложные объяснения как Rust (и не только Rust) устроен под капотом, а также все градации сложности посередине. Это приятно, ибо нередко блоги по Rust отличаются тем, что после первого вступительного абзаца переходят в такой хардкор, что чувствуешь себя беспомощным ничтожеством. Возможно, по мере продвижения в изучении Rust, моё мнение изменится, но пока что приятно находить такой материал, который и обогащает знаниями, но в то же время всё разжевывает достаточно подробно, чтобы не терять мысль автора на середине.

#rust #ссылки

Закончил курс Rustlings на Stepik. Это мой первый пройденный до конца курс на Stepik (до этого начинал два других курса, но там начались зубодробительные задачи, плюс возникали какие-то авралы на работе, потому бросил на середине).

Поскольку это первый пройденный курс, думал, что в конце автоматом выдадут сертификат. Старался решить все задачи. Увы, этого не произошло, на странице моего профиля на Stepik нет ни единого упоминания о том, что я закончил данный курс.

Пара слов о курсе

Фактически, это сильно сокращенный и переупорядоченный набор глав из Rust Book. Книгу до этого прочёл целиком, но вопросов оставалось больше, чем ответов. Материал довольно сложный. Курс помог двукратно: 1. Перечитывая во второй раз смог гораздо лучше понять сложные концепции. 2. Упражнения заставили разобраться в сложных областях до конца (например, в макросах), т.к. при чтении книги кажется «В общих чертах понятно, потом, когда понадобится вернусь и доразбираюсь».

Хотя упражнений можно было бы сделать и больше. Их было настолько мало, и они были настолько простые, что курс удалось не напрягаясь закончить за три вечера.

Понравилась организация решения заданий. В IDE открывается шаблон решения, в котором достаточно добавить или изменить код, который проверяется нажатием одной кнопки. Не надо самостоятельно лезть в файловую систему, создавать проект, и т.д. на каждое задание.

Еще один плюс за то, что после прохождения первого раздела мне прислали лицензию на образовательную версию любой IDE JetBrains. Ключом не воспользовался, т.к. у меня и так приобретены лицензии на несколько IDE, включая PyCharm и CLion, но за заботу спасибо.

Недостатки курса

  • Материал плохо упорядочен, разделы скачут. Например, материал про многопоточность на самом деле начался в разделе про стандартную библиотеку.
  • Несмотря на копирование Rust Book, целые главы пропущены, если не прочитать книгу заранее, то многие разделы окажутся абсолютно непонятными.
  • Задания в плагине Stepik для IDE IntelliJ (я использовал CLion, хотя, наверное, можно установить в любую IDE IntelliJ вместе с плагином для Rust) отформатированы плохо, масса проблем в разметке. По ощущениям, никто не вычитывал курс хотя бы однажды.

Но в целом доволен курсом, рад, что он попался мне на глаза. Несомненно, получил от прохождения большую пользу. До этого пытался решать задачи с LeetCode на Rust и терпел неудачи из-за слабого понимания многих концепций языка. Из-за этого поставил дальнейшее изучение языка на паузу. Сейчас чувствую уверенность, что смогу справиться с задачами на LeetCode, и, возможно, начать какой-нибудь хобби-проект на Rust.

#rust #stepik #курсы #mooc #степик