Не так страшен Rust, как его излагают
Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд — это вроде «я только посмотреть», но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф?
Я предположил, что те базовые знания по программированию, которые предлагают распространенные курсы можно дать и с помощью Rust.
Учебные материалы по Rust
На сегодняшний день в интернете есть много высококачественных, причем, даже бесплатных материалов по изучению языков программирования (это про вводные курсы начального уровня). Заметно, что каждый автор хочет признания своих усилий и старается быть лучшим. Но в отличии от того же Питона, по Расту материалов не несколько порядков меньше. Растовцы хвастаются хорошей документацией к языку и Rustbook`ом. Но его нельзя назвать понятным пособием для начинающих. Лично мне книга «не зашла». И не мне одному, парни не дадут соврать: ссылка, ссылка. Оказалось проще начать изучение с бесплатного курса Learn Rust from Scratch. Но вот как эффективно двигаться дальше человеку без значительного багажа знаний и опыта программирования непонятно. Разрозненные статьи в Интернете дают отрывочные знания, серьезные книги чересчур заумны.
Некоторые считают, что Rust это язык для опытных специалистов, но ведь нет объективных препятствий к тому, чтобы он стал первым языком программирования.
Не существует сложных вещей, есть сложные объяснения
Сложность создания доступных обучающих материалов проистекает, по моему мнению, от избытка знаний, интеллектуальных способностей, но, прежде всего, опыта авторов. Человеку, который беглым взглядом считывает весь листинг кода, сложно представить себе какие-то проблемы, возникающие у новичка. Сложности добавляет объем знаний, который нужно передать. Непросто выстроить подачу материала, чтобы она опиралась исключительно на ранее пройденные темы.
Однако, автор учебного материала как-то получил свои знания и опыт. Как-то же складывалось по кирпичикам общее понимание. Соответственно, этот этот хаотичный путь получения знаний можно повторить. Более того, этот путь можно оптимизировать. Нужно, чтобы следующее поколение программистов имело больше возможностей двигаться дальше, к новым открытиям и свершениям. Как, кто и что должен для этого делать — это тема отдельной статьи, здесь я расскажу о своем хоббийном микро-проекте.
Проба пера
При изучении Rust я начал писать себе короткую шпаргалку пройденного материала, но тут знакомый заинтересовался программированием и возникла идея подготовить для него нормальный учебный материал, чтобы он шел по моим следам и не тратил время. Эта работа, кстати, была ну очень полезной для самообучения. Когда кто-то наивно полагает, что ты лучше в чем-то разбираешься, не хочется «ударить в грязь лицом», приходится чуть глубже вникать и меньше откладывать на потом. Очень рекомендую такой подход для самообучения.
Мои потуги не остались без критики со стороны более опытных товарищей. Вот такую остроумную рецензию я получил:
Питер Брейгель Старший «Слепой ведёт незрячего»
Надеюсь, что это просто дружеская гипербола и двигаюсь дальше.
При подготовке обучающего материала я вспоминал свой опыт обучения и сформулировал несколько правил правил :
1. Выдавать информацию дозированно. По одной небольшой теме за раз. А потом, когда базовый материал уляжется в голове, когда появится некоторая уверенность и способность считывать простой код, тогда давать следующую порцию информации.
2. По возможности плавно переходить от темы к теме. Одно следует за другим и подводит к следующему, как в рассказе, поэтому учащийся не перенапрягается.
3. Наращивать знания последовательно. Давать задачи строго в рамках пройденного материала.
4. Чисто академическое изложение скучно. Изложение на практических жизненных примерах, может где-то, не показать общеприменимость примера, но зато даёт четкое осознание практической полезности программирования и включает образное мышление. Поэтому материал лучше усваивается и легче вспоминается в какой-то реальной жизненной ситуации.
5. Не делать избыточных упрощений. Иногда хочется знать как именно нечто устроено внутри, а тебе дают упрощенную модель и её сложнее понять, следовательно запомнить и использовать.
В общем старался делать материал понятный среднему и даже слабому ученику. Пробовал, смотрел, что получается, потом упрощал, переделывал, переделывал, пока самому не становилось более менее понятно что же я хочу донести. Пытался добиться последовательности в изложении, приводил примеры прикладного характера, добавлял щепотку юмора.
Сначала я просто писал в документах гугла, но потом захотелось выложить материалы на сайт. Потом захотелось добавить подсветку кода, затем потребовалась навигация, далее возникла идея сделать более приятную для глаз темную тему. После даже зарегистрировал отдельный домен rusteon.ru. Однако, важно вовремя остановиться, поэтому показываю альфа-версию курсов по Rust.
Не обращайте внимание на декларативные разделы, там сейчас более-менее готов Курс I и выложено самое начало Курса II.
Рождение и смерть проектов
Основная проблема у курсов и прочих полезных начинаний в том, что у авторов хватает запала только чтобы начать свой проект. А потом, сталкиваясь со сложностями, с невостребованностью или нехваткой средств, автор забрасывает свою идею. Это приводит к тому, что в интернете очень много информации начального уровня, а уже среднего уровня сложности, не говоря уже о высших материях, почти не найти в связном последовательном цельном изложении. У меня такая же история. Поэтому и я здесь рассказываю о своем проекте, чтобы получить некие оценки текущего результата и понять нужно ли это кому-нибудь вообще.
Приглашение попробовать
Приглашаю тех, кто до сих пор не знаком с языком программирования Rust ознакомиться с материалами: Курс I. Rust для начинающих https://rusteon.ru/course/rust-I и некоторыми лекциями Курса II. Погружение в Rust https://rusteon.ru/course/rust-II
Очень хотелось-бы получить от вас обратную связь. Интересует насколько понятно изложен материал, где возникли трудности. Контакты на сайте.
Если вы опытный специалист, и у вас есть немного времени и желания, то посмотрите нет ли там серьезных ошибок. Прошу писать в личку или по контактам, указанным на сайте.
Вопросы для обсуждения
Чтобы этот материал был полезен всем, кто создает курсы, видеоуроки или пишет книги, поделитесь, пожалуйста, в комментариях своим мнением:
1. Что именно вам понравилось в тех курсах или учебных материалах, которые оставили у вас положительные впечатления.
2. Что вы можете посоветовать создателям обучающих материалов, чтобы учащиеся могли качественнее и быстрее усваивать материал.