Любите ли вы Rust, как люблю его я?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, коллеги.

На самом деле ещё несколько месяцев назад я ненавидел Rust и задавался лишь одним вопросом: какого чёрта я вообще с ним связался? Но сегодня - сегодня всё иначе. И про это я хочу предложить немного доводов разобрать с ним.

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

Он безопасный. Это, правда, не совсем так, но если взять условного новичка, который напишет программу на C и условного новичка, который напишет программу на Rust - шанс, что вторая выйдет более безопасной окажется существенно выше. По крайней мере, атака через переполнение буфера, почти гарантировано, провалится (не станем отрицать наличие дарований, которые даже там, где это почти невозможно, смогут заложить уязвимость).

Он необычный. Уверен, вы сталкивались со странными языками программирования. Такими, которые ломают привычную парадигму и заставляют мыслить иначе. Например, люди, всю жизнь работающие с объектно-ориентированным подходом, нередко, теряются, когда сталкиваются с функциональным программированием, т.к. там иной подход. Да даже далеко ходить не надо; столкновение с попыткой воспользоваться OpenGL из привычного C++, в какой-то момент, рвёт все шаблоны и в воздухе повисает лишь два вопроса: "какого..." и "зачем вы так со мной". Это, разумеется, проходит, но не сразу.

Простите, отвлёкся. Так вот, Rust заставит вас взглянуть на программирование по-другому, то есть совсем иначе. Он заставит вас писать код так, как вы до него не писали, потому что все старые парадигмы просто не работают. "Хотите отправить структуру в функцию, а потом ещё поработать с ней? Только не в мою смену!". Это существенно развивает воображение.

От отлично документирован. Нет, я несправедлив к Rust. Он великолепно документирован. Почти про любой аспект работы с ним вы найдёте отдельную книгу, где вам от "а" до "я" всё разжуют. Но, вполне вероятно, вы всё равно не поймёте, т.к. чтобы понять это, неплохо бы прочитать ещё несколько книг, где разжёвывается что-то ещё. Зато через несколько месяцев мозг вырастет на размер, а то и на все два!

Он неисчерпаем. Да, порой мне именно так и кажется. Есть множество способов сделать то, что я только что сделал, только по-другому; есть своя std библиотека и я не могу даже представить, чего в ней нет, потому что создаётся ощущение, что в ней есть чуть менее, чем всё.

Он дружелюбен. Компилятор всегда подскажет, где вы ошиблись и даже предложит решение, как сделать так, чтобы проблему исправить, а также добавит ссылку на справку. И иногда его рекомендация даже сработает. Но в целом, журнал из 30 ошибок на 3 строчки кода, в какой-то момент, уже перестаёт пугать и даже удивлять.

Он поддерживается и развивается. У него "из коробки" есть свой собственный менеджер пакетов (вроде npm или pip), а также реестр самих пакетов. Из недостатков - не всегда можно получить исходники устанавливаемого пакета или библиотеки (поправьте, если это не так).

Его можно использовать для web. Через webassembly. Именно по этой причине, собственно, я с ним и связался. Пробовал делать эмуляции роста плесени, а последнее - пробовал на нём реализовать параллакс эффект на веб-странице не прибегая к js (если интересно, про это можно почитать тут). wasm-pack позволяет собирать webassembly пакеты и встраивать в своё приложение. Ещё можно делать и при помощи ecmascripten для C++, но, почему-то, C++ не так интересен для меня.

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

По правде говоря, у меня есть чёткое ощущение, что Rust - это не для всех (как и любая другая технология). Он, правда, довольно сложен в понимании, особенно поначалу и особенно для тех, кто не сильно стремился разобраться в предметной области. И хотя он уже довольно популярен, не могу сказать, что его активно внедряют в свои разработки (если судить по статистике на GitHub): всё же инерция в этих вопросах весьма велика. Python'у потребовалось почти 20 лет, чтобы получить признание и широкое распространение. Думаю, Rust имеет все шансы повторить этот путь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
А каково ваше отношение к Rust?
25% Пробовал, понравилось 3
16.67% Пробовал, не для меня 2
25% Не пробовал, но хочу попробовать 3
33.33% Не пробовал и весьма этим горжусь 4
Проголосовали 12 пользователей. Воздержавшихся нет.
Источник: https://habr.com/ru/articles/740936/


Интересные статьи

Интересные статьи

После прошлого поста с подборкой хадкорных карт(Вы не умеете играть в Героев 3: 13 карт S-размера, которые вы не пройдете за вечер), из комментов узнала, что некоторые любят поиграть в альянсе со ...
Меня зовут Дмитрий Руднев. Обычно я пишу в хабы «Электроника для начинающих», «Схемотехника», «DIY или Сделай сам» и некоторые другие. Мне очень нравится просто и понятно писать о разработке радиоэл...
Ещё несколько лет назад съёмка при помощи квадрокоптеров была уделом профессионалов и ярых поклонников острых ощущений. Разбить дрон стоимостью в полторы сотни тысяч рублей было тем ещё удовольствием....
Привет!Я много лет посещал Хабр в режиме "рид онли", но сегодня, читая очередную новость про новую версию Google Chrome 96 и комментарии к ней, я всё же решился на написание статьи.Я работаю в в офисе...
Не спешите прокручивать мой пост - дело совсем не в коде, не в пороге вхождения, фреймворках или отсутсвия обратной совместимости.Я отношусь к PHP с той стороны, которая ...