
Обо мне
Это больше связано с личным опытом, чем с техническими навыками.
Прежде всего, хочу поблагодарить вас за то, что вы нашли время прочитать эту статью, это моя первая. Я написал его, чтобы поделиться с вами своим личным опытом и рассказать о разрыве, который я преодолел между высокоуровневой и низкоуровневой разработкой на Rust. Надеюсь, это поможет вам сделать то же самое, если вы уже думали об этом.
Я Бенуа Чассиньол, технический консультант LinkValue, в настоящее время работаю в M6 Web в качестве FrontEnd-разработчика встроенных решений. Я закончила факультет мультимедийных коммуникаций, работала графическим дизайнером 3 года. Я начал свой путь в качестве разработчика с изучения интеграции с интерфейсом самостоятельно, после чего я узнал больше о Javascript с ReactJS, Typescript, а теперь и Node.
Имея это в виду, давайте поговорим о моем личном опыте, когда я собираюсь достичь нового поворотного момента в моей профессиональной жизни.
Первый контакт
Думать по-другому.
В первый раз я услышал о Rust полтора года назад. Мы с другом пили пиво, обсуждали развитие. Он сказал мне, что работает над встроенным приложением на Rustlang. Он объяснил, почему они выбрали эту технологию и как они реализовали ее на крошечном устройстве с высокими ограничениями производительности.
Я ничего не понимал в этом, но он был так воодушевлен, что у меня не хватило смелости сказать ему, но теперь он может (и должен) знать это, извините, m8! Во всяком случае, он сказал мне взглянуть на это, это может быть интересно мне, потому что есть мост для перехода к веб-приложениям в Rust: проект WebAssembly (WASM).
Сначала речь шла не о технологиях, скорее, о чувстве. Как будто из этого может получиться что-то интересное и поможет мне и в карьере, и в жизни. И когда он рассказал мне об этом больше, это как бы подтвердило мои чувства к Rust. Итак, я попробовал. Вот так все и началось. Но, честно говоря, взломать Rust я начал не сразу, на это у меня ушел год. Идея использования Rust зародилась в моей голове, это было похоже на начало!
С моей точки зрения
Делайте мир безопаснее, шаг за шагом.
Этот новый язык с некоторыми удивительными функциями и с моей компетенцией WebAssembly может стать хорошей отправной точкой. Но нет, это не так, WASM на Rust не был подходом, с помощью которого я хотел открыть для себя этот новый язык. Было бы здорово создать с этим веб-приложение, но нет. Я хочу развиваться другим путем, я хочу открыть для себя что-то еще, я хочу разработать типизированную систему, я хочу скомпилировать свой собственный код, я хочу безопасно разрабатывать, я хочу иметь дело при сильных аппаратных ограничениях я хочу иметь очень эффективную производительность и, я просто не хочу заниматься управлением памятью.
В этом отношении, на мой взгляд, у Rust есть все необходимое, чтобы быть на одном уровне с C и C ++. Он точно не заменит полностью оба языка, нам не нужно все переписывать. Может быть, мы сможем сделать мир безопаснее, шаг за шагом.
Здесь все начинается
Ни сложно, ни легко.
Я должен сказать пару слов об установке: установить Rust на Mac очень просто! Я не пробовал это в Linux, но, насколько я читал, это то же самое. Две командные строки, одна сборка - и перед вами прекрасный привет мир! Просто и быстро, как нам нравится.
В Windows это немного сложнее, возможно, но это займет больше времени. Первое, что нужно сделать, это загрузить и установить rustup, он устанавливает Rust из официальных каналов выпуска. Но для этого нужны некоторые предварительные условия, он сообщит вам, чего не хватает. Мне нужно было установить инструменты сборки C ++. Я сделал это с помощью встроенного решения, которое заключалось в том, чтобы получить Visual Studio на официальном сайте Microsoft, установить его на свой компьютер. Во время установки он попросит вас установить C ++ Build Tools 2019. Если вы хотите, вы можете загрузить и установить только инструменты сборки, просто проверьте в Интернете. После этого нужна перезагрузка. После этого вы можете перезапустить rustup, он проверит, все ли установлено правильно. Если это так, вы можете создать новый проект и свой первый привет, мир!
Введите командные строки:
cargo new hello_world cd hello_world cargo run
Хорошо сыграно, вы создали свой первый (собственный) проект на Rust.
В этот момент я почувствовал, что могу взломать весь мир. Но не сейчас. А пока мне нужно изучить основы Rust. На мой взгляд, Rust-book - лучший способ понять парадигму языка, который сначала может показаться немного сложным, но долгое время он будет ценным ресурсом.
От высокого до низкого уровня
Не обидно
Поделись своим опытом!
Как FrontEnd-разработчик, мне пришлось преодолеть пробел, и без стандартного изучения информатики он стал еще больше. Как ни парадоксально это может показаться, я вижу не слабость, а силу. На мой взгляд, очень важно в группе, в сообществе, в компании иметь разные профили с разным фоном. Это позволит ему иметь множество взглядов и идей. Поэтому иметь «нестандартный» фон не больно, я это не так давно поняла. Я получил его на фестивале RustFest в Барселоне, когда какой-то бородатый мужчина обратил внимание на мою дорогу и сказал: «Очень круто, ты должен поделиться своим опытом, потому что это означает, что все возможно!», «Кхм, ой спасибо. ».
Подготовьтесь
Не принимайте это на свой счет.
Я принял это за комплимент, поэтому делюсь им с вами. Я мог бы сказать: «Привет, попробуйте Rust, он сделает вашу жизнь прекрасной, вы повеселитесь, вам понравится кодировать как разработчик низкого уровня с парадигмой высокого уровня, вы скомпилируете его и это будет быстро ». но это неправда, не в самом начале. Это могло быть ближе к такому: «Привет, мои маленькие новые Rustaceans, о, откуда бы вы ни приехали, отправляйтесь в путешествие, вы откроете для себя другой мир. Сохраняйте хладнокровие и приготовьтесь исправить свой код, компилятор скажет это много раз, но не теряйте сил, все будет в порядке. Все будет в порядке, потому что в нем будет четко указано, что не так и как это исправить. Это не личное, компилятор за вами! »

Вы ничего не знаете
Нет никакого волшебного трюка.
Первая трудность Я сталкиваюсь с незнанием работы с компьютером. Меня это не волновало. Для меня было достаточно осознания того, что это сработало, и мне не нужно было иметь эти знания для повседневной работы. Теперь все немного по-другому, мне нужно знать, что такое байт и как работает, как работает память, как работает процессор, что такое указатель, ссылка на него, что такое поток , разница с асинхронным временем выполнения, как работает сборщик мусора, и все это для понимания основ. Мне он нужен сейчас, потому что я хочу узнать, как глубоко работает Rust, в частности, как он работает с памятью, почему и как он позволяет нам безопасно работать с ним. Я открываю для себя важную вещь о низкоуровневой разработке, это не волшебство!
Быть или (не быть)
Низкий уровень заботы о длине и знаке.
Имея дело с типом данных, как веб-разработчик, это не совсем естественно, вы можете столкнуться с ним, но не очень глубоко. Если у вас нет кода с машинописным текстом, он вам действительно не нужен в вашем коде, неплохо было бы немного узнать об этом, но это не ограничение. Чтобы проиллюстрировать мою цель, вы можете манипулировать своими данными, как хотите. Некоторых разработчиков это может пугать, но вы можете получить утконоса на входе и единорога на выходе. Не рекомендую пробовать дома и тем более на работе!
Система типов в Rust немного отличается от Typescript, потому что для целого числа, например, нужно установить длину в битах и его знак, например u32 / i8, которые соответственно являются Беззнаковое / подписанное целое число, хранящееся в 32-битном / 8-битном формате. Цепочка символов может обрабатываться двумя разными способами, как str или как String, большая разница в том, что первое - это жестко запрограммированное значение, а второе - тип строки динамической кучи (вы можете владеть им).
Повторное использование
Не дублируйте код, извлекайте.
На протяжении всей моей карьеры разработчики, с которыми я работал, с большей или меньшей добротой говорили мне об одном и том же: Если ты можешь дублировать, ты можешь извлекать. Это очень заманчиво и легко копировать , но это неэффективно и очень некрасиво. В Rust это не только способ разработки и осмысления вашего проекта, но и инструменты, которые помогают и позволяют нам это делать. Строго типизированные языки означают, что мы в любом случае будем использовать типы данных, но мы можем использовать мощь обобщений, чтобы один раз написать функцию и использовать ее с разными типами. Сначала это может показаться сложным в использовании, но это не так сложно понять, как кажется, и будет казаться, что у вас есть сверхспособности! Мы также можем использовать черты для определения поведения (функции) и иметь разные для каждого типа, реализующего данную черту.
Знай своего лучшего друга
Не стоимость, а вложение.
Теперь мы знаем, что Rust отреагирует на безопасность памяти, без какого-либо сборщика мусора, это одна из причин, по которой он имеет очень быстрое время выполнения, вопрос в том, как он может сделай это? Ответ - центральная функция Rust, Владение. Когда я получил его, мне стало легче понять другие особенности, которые делают Rust уникальным по сравнению с другими языками. Поскольку это новая концепция для меня и многих разработчиков, мне потребовалось время, чтобы стать в ней уверенным, тем более эффективным было мое обучение. Поверьте, эта функция - это не плата, а вложение в вас.
Возобновить
Это только начало!
изучая Rust, я сначала сталкиваюсь с некоторыми трудностями, которые не были связаны с самим собой, это было больше связано с моими личными способностями понимать, а также управлять окружающей средой и ограничениями низкоуровневый разработчик. Первое, что я сделал, - это убедился, что у меня хорошие знания. В конце концов, я сэкономил много времени и сил и помог мне легче распознавать все маленькие тонкости Rust. Вторая вещь заключалась в том, чтобы изучить самые основы Rust, неизменяемость по умолчанию, типы данных, сопоставление с образцом, структуры, обобщения, трейты ... Теперь я изучаю некоторые функции Rust, такие как Ownership, async / await, concurrency ... это то, где я и это только начало!
Публикация должна продолжаться
Они всегда будут принадлежать вам, даже после того, как поделитесь ими.
- Официальная Rust-Book, она объясняет языком словами и видением своих создателей.
- Официальный Rust by example - это сборник запускаемых примеров. Приятно познакомиться с концепциями и стандартными библиотеками Rust.
- Официальная Cargo-Book предоставит вам всю необходимую информацию о Cargo, пакетном менеджере Rust.
- Сайт WebAssembly и официальный Rust с WASM.
- Кураторский список кода и ресурсов Rust на github, rust-unofficial / awesome-rust.
- У друга, недавно встреченного в Барселоне, есть свой канал на YouTube, посвященный Rust, вы можете посмотреть его видео здесь и подписаться на него в твиттере @matthiasendler.
- Французам вы можете научиться с помощью учебника от @imperio, который представляет собой второй подход, более технический, чем официальные документы.
Теперь у вас есть онлайн-ресурсы, которые я использовал для изучения основ Rust. Вы откроете для себя и узнаете больше об этом языке, это будет круто, из вас будут хорошие технические специалисты, но это еще не все. С моей точки зрения, упускается важная вещь, может быть, самая важная.
Вы помните, разработчик, с которым я раньше пил пиво? Он мой самый большой источник знаний, Джереми @ o0Ignition0o Лемперер. Он тот, кто заставил меня открывать, учиться, делиться своими знаниями в области развития, особенно на низком уровне. Мой второй по значимости ресурс - сообщество ржавчины, я благодарю их за то, что они великолепны, открывают свои двери просто и доброжелательно, без осуждения. Очень впечатляюще.
Именно об этом я и писал в своей статье, у всех нас есть знания, навыки и опыт, которыми можно поделиться. Они всегда будут принадлежать вам, даже после того, как поделятся, и, что еще лучше, другие могут укрепить вас своими. Это наши сильные стороны, с открытым исходным кодом, оно того стоит.
Автор
Бенуа @oScape_ Чассиньол, технический консультант LinkValue, в настоящее время работает в M6 Web в качестве FrontEnd-разработчика встроенных решений.
Спасибо Реми, Танги, Томасу, Джереми и Гийому, которые помогли мне с этой статьей :)
А здесь вы можете прочитать другую статью на английском, написанную одним из наших экспертов по Linkvalue: