Взгляд в прошлое

Давайте представим на минуту, что вы вернулись в 90-е, когда JavaScript был создан для Интернета (каким-то образом всего за 10 дней… вы можете в это поверить?). Допустим, вы знали, что JavaScript будет широко распространен, будет использоваться исключительно всеми будущими версиями веб-браузеров и многоцелевой, что означает, что у вас может быть продвинутое приложение с полным стеком, полностью написанное на JavaScript (например, React, Node.js, GraphQL). Если бы вы знали, что за этим будущее, и хотели бы создавать исключительно веб/мобильные приложения, вы, вероятно, приложили бы все свои усилия, чтобы стать экспертом в этой области, верно?

Как главный инженер-программист и предприниматель, у меня есть достаточный опыт работы с различными языками программирования и технологиями. Я создавал приложения на Java, Python, JavaScript, Go, Swift, Perl (пожалуйста, не спрашивайте, почему) и многих других, но недавно я обратился к Rust для всех своих стартап-проектов. В этой статье я объясню, почему Rust стал моим любимым языком и какую пользу он может принести вашим стартап-проектам.

Почему другие компании переходят на Rust?

Вот простые и "очевидные" причины, которые может найти быстрый поиск в Google:

Производительность

Одним из самых больших преимуществ Rust является его производительность. Rust спроектирован так, чтобы быть, как сказали бы некоторые… невероятно быстрым и эффективным, что делает его отличным выбором для приложений, которым необходимо быстро обрабатывать большие объемы данных. С Rust вы можете быть уверены, что ваше приложение сможет обрабатывать большой трафик и большие объемы данных без замедления.

Безопасность

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

Сообщество

Rust имеет быстрорастущее сообщество разработчиков, увлеченных языком и его потенциалом. Это сообщество постоянно создает новые библиотеки, инструменты и фреймворки, упрощающие разработку приложений на Rust. Будем надеяться, что Rust's Cargo не станет похож на npm… (например, положительный, десять тысяч, нечетный)

Кривая обучения

Несмотря на то, что видео на Youtube заманивают вас словами «Изучите Rust и получите работу в MAANGAMA (или где-то еще) за 10 дней», Rust — не простой язык для изучения. Тем не менее, его синтаксис похож на C и C++, но читается как языки более высокого уровня, поэтому, если вы знакомы с ними, вы можете найти Rust вполне доступным. Кроме того, сообщество Rust создало множество ресурсов для изучения языка, включая книги, учебные пособия и онлайн-курсы.

Задел на будущее

Наконец, Rust — это язык, созданный для будущего (Разве они все не заявляют об этом во время создания? Ну, все, кроме, может быть, brainf**k). Он разработан таким образом, чтобы его можно было масштабировать, обслуживать и адаптировать, что делает его отличным выбором для компаний, которые хотят создавать приложения, которые выдержат испытание временем.

В Rust мы можем делать практически все, что захотим, но должны ли?

Прогноз

А что, если появится новый язык с таким огромным «потенциалом»? Его поддерживает сообщество, у него есть возможности, он быстрее большинства, надежнее большинства, широкомасштабное внедрение и поддержка. Заставит ли это вас забыть о его нынешних недостатках? Возможно, он молодой и ранний (как был JS), поэтому он не так прост и практичен для некоторых применений, как альтернативные языки. Вы можете получить серверное веб-приложение, работающее с Flask на Python, подключить его к облачному провайдеру для различных сервисов (БД, файловое хранилище и т. д.) и иметь дюжину полностью функционирующих конечных точек REST API примерно за 4 часа работы. Означает ли это, что вы должны выбрать его вместо Rust?

Итак, большой вопрос, почему я почти исключительно использую Rust?

(Мои ответы дополняют скучные ответы выше)

Производительность

Rust работает невероятно быстро, и на этот раз нам не нужен курсив, потому что это не шутка. Конечно, в базовом CRUD-приложении вы вообще заметите производительность Rust? Возможно нет. К тому времени, когда ваша миленькая анимация успеха завершится, ваш бэкэнд Python также завершит свой POST-запрос. Но что, если я захочу в будущем заняться практически чем-то другим? Что делать, если у меня большие данные или я хочу сделать много преобразований? Что, если я хочу иметь возможность запуска параллелизма, если это необходимо? Что, если это сведется к миллисекундам?

Безопасность

Как стартап, безопасность должна быть одним из ваших главных приоритетов. Не обязательно из-за хакерофобии и кибербезопасности; это становится гораздо более важным по мере масштабирования. Скорее, вы должны отдавать приоритет высокому времени безотказной работы и точности данных. Здесь слишком много ошибок, и ваше имя запятнано: худший страх стартапа. Безопасность достижима во многих языках, если вы действительно хотите научиться делать их как таковые. Тем не менее, Rust в основном навязывает вам свои руки. Я воспользуюсь дополнительным преимуществом.

Сообщество

Учитывая, что сообщество растет так быстро и так увлеченно, я чувствую, что отсутствие столь необходимых пакетов и фреймворков (например, пример Flask CRUD API) не будет аргументом в ближайшие несколько лет.

Кривая обучения

Помимо того, что язык более сложен для начала, по сравнению с Python или JavaScript с накоплением пакетов и фреймворков, побочный эффект более ограниченной экосистемы Rust способствует более высокой кривой обучения. Вам нужно гораздо более глубокое понимание того, что на самом деле происходит «под капотом», на что вы могли бы закрыть глаза в вышеупомянутых примерах. Но если вы видите в этом негатив, почему вы все еще читаете эту статью? Я процветаю и ищу принудительное обучение, рассматривая его как возможности, а не требования.

Задел на будущее

Как я упоминал в своем разделе ретроспективных взглядов, я считаю, что у Rust есть потенциал для будущего. Или, что еще лучше, возможность стать вашим будущим. Зачем разработчикам PHP все эти ламбо? Кроме того, по мере увеличения сложности приложения экспоненциально труднее предотвращать, находить и исправлять ошибки. То же самое можно сказать и о производительности приложения. Само существование Rust направлено на решение этой проблемы. Многие очень крупные технологические компании начинали так же, как и вы. Возьмем, к примеру, Инстаграм. Они начали с 2 основателей и быстро увеличили свою пользовательскую базу до 100 000 пользователей за одну неделю! Их первоначальный технологический стек, конечно, мог бы справиться с этим, но не думаю, что они достигли 500 миллионов пользователей в день без многочисленных рефакторингов. Если ваша первая мысль: «Я никогда не попаду в такие числа», зачем вы вообще пытаетесь?

Конечно, Rust не идеальный язык, и я ни в коем случае не утверждаю, что это так. Я, однако, утверждаю, что это может приблизиться. Его производительность, функции безопасности, растущее сообщество, доступная кривая обучения и уверенность в завтрашнем дне делают его отличным выбором для предпринимателей, которые хотят построить следующий большой проект. Если вы рассматриваете Rust для своего следующего стартап-проекта, я рекомендую вам попробовать — вы можете просто удивиться тому, чего вы можете достичь.