Top.Mail.Ru
Истории

Как Rust стал любимым языком программистов

Истории
Елена Лиханова
Елена Лиханова

Старший редактор RB.RU

Елена Лиханова

Многие проекты появляются потому, что программист сталкивается с проблемой и хочет ее решить. Примерно это случилось с Грэйдоном Хором, который из-за сбоя программы лифта задумался о создании компактного и быстрого языка программирования. Он получил название Rust.

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

Как Rust стал любимым языком программистов

В 2006 году 29-летний программист Mozilla Грэйдон Хор возвращался домой в свою квартиру в Ванкувере, и обнаружил, что лифт опять не работает. Пришлось подниматься на 21 этаж.

Он знал, что такие сбои часто связаны с использованием памяти. Программы для таких машин, как лифт, часто создают на C++ или C. Эти языки позволяют писать компактный код, который очень быстро выполняется. Проблема в том, что они не защищены от сбоев. Microsoft оценивает, что 70% уязвимостей в коде вызваны ошибками памяти в программах на этих языках.

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

17 лет спустя Rust стал одним из самых популярных языков на планете — возможно, даже самым популярным. На нем пишут 2,8 млн программистов, а компании от Microsoft до Amazon видят в нем свое будущее. Чат-платформа Discord использует Rust, чтобы ускорить свою систему, Dropbox — чтобы синхронизировать файлы на компьютере, а Cloudflare — чтобы обрабатывать более 20% всего интернет-трафика.

По результатам опроса Stack Overflow, Rust уже 7 лет становится самым любимым языком программирования для разработчиков по всему миру.

Нет ничего необычного в том, что кто-то создает новый компьютерный язык. Программисты постоянно придумывают их в качестве побочных проектов. Но это редкий случай, когда один из них закрепляется и входит в пантеон программистов наряду, скажем, с JavaScript, Python или Java.

Чтобы понять, что делает Rust таким полезным, стоит разобраться, как языки программирования работают с памятью компьютера.

Можно представить динамическую память как доску. Когда программа работает, она постоянно записывает небольшие фрагменты данных на доске, отслеживая, какие из них где находятся, и стирая их, когда они уже не нужны.

Однако разные языки программирования делают это по-разному. Старые, такие как С или C++, разработаны таким образом, чтобы программист мог влиять на то, как и когда программа использует доску. Благодаря такому контролю над динамической памятью он может заставить программу очень быстро работать.

Хочешь быстро стартовать в IT? Выбирай направление для обучения в каталоге курсов программирования.

Именно поэтому С и C++ часто используют, чтобы писать код «для железа», который будет взаимодействовать напрямую с аппаратным обеспечением. Машины, у которых нет операционной системы вроде Windows или Linux, включая аппараты для диализа и кассы, работают на таком коде.

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

Хакер обнаружит, что программа не очищает память как следует — информация, которая должна быть стерта (пароли, финансовые данные и так далее), все еще хранится, — и воспользуется ей. По мере того, как код на С или C++ становится все длиннее, даже очень осторожный программист может допускать ошибки, наполняя программу багами.

В 1990-х годах стали набирать популярность новые языки — Java, JavaScript и Python. Они использовали совершенно другой подход. Чтобы снизить нагрузку на программиста, они автоматически управляли памятью, применяя «сборщиков мусора», компоненты, которые периодически очищали память во время работы программы. Вуаля! Теперь можно было писать код без ошибок памяти.

Но была и обратная сторона — потеря контроля. Программы начинали работать медленнее, поскольку важное время обработки данных уходило на сбор «мусора». И программы, написанные на этих языках, требовали больше памяти.

Таким образом, мир программирования разделился на два лагеря. Если программа должна была работать быстро или помещаться на крохотном чипе в устройстве, вероятнее всего, ее писали на С или C++. Если это было приложение для веба или мобильного телефона — а число таких программ в мире стремительно росло — требовалось использовать новый язык, который собирал «мусор».

С Rust Хор хотел устранить противоречие между этими подходами. От программистов не требовалось вручную задавать местоположение данных: это делал Rust. Но при этом он задавал множество строгих правил о том, как данные могли использоваться или копироваться внутри программы.

программист за работой

Фото в тексте: Unsplash

Пришлось бы учить эти правила, которые были бы более трудными, чем в Python или JavaScript. Код становился сложнее, но безопаснее — не нужно было бояться, что в память случайно попадут опасные баги.

Важно отметить, что Rust также обеспечивал бы «безопасность параллелизма». Современные программы выполняют несколько задач одновременно — другими словами, параллельно — и иногда разные строки кода пытаются изменить один и тот же фрагмент памяти почти в одно и то же время. Система памяти Rust это предотвращала.

Когда Хор впервые открыл свой ноутбук, чтобы приступить к созданию Rust, у него уже было 10 лет опыта в программировании. Поначалу это был всего лишь сторонний проект, который он совмещал с работой в Mozilla. Когда он показал результат другим программистам, реакция была смешанной. Однако руководство компании было заинтриговано.

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

В 2009 году Mozilla решила официально спонсировать Rust. Изначально предполагалось, что это будет open-source проект, и руководить им будут те, кто непосредственно над ним работает. Однако компания стала развивать его собственным усилиями и платить разработчикам.

За следующие 10 лет к проекту присоединилось около десятка инженеров.

К началу 2010-х годов Rust привлекал добровольцев со всего мира, из самых разных технологических отраслей. Некоторые работали в крупных технологических компаниях.

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

Rust все меньше нуждался в собственном сборщике мусора — и к 2013 году команда убрала его. Теперь программы на Rust выполнялись еще быстрее: никаких остановок на очистку. Работа Rust стала удивительно эффективной. Он стал ближе к «железу», как C и C++ — и при этом был безопасен для памяти.

Параллельно внутри сообщества Rust развивалась собственная культура, которая отличалась дружелюбием и открытостью к новичкам. Даже сообщения об ошибках, которые создает компилятор, полны заботы: они описывают ошибку и предлагают возможные варианты решения.


Читайте по теме:

Как устроен алгоритм Duolingo

Учите английский, а не Python: как ИИ меняет программирование


Наконец, 15 мая 2015 года была представлена первая версия Rust. Вскоре инвестиции начали окупаться.

В 2016 году Mozilla выпустила Servo, новый браузерный движок, построенный на Rust. В следующем году другая группа использовала новый язык, чтобы перезаписать часть Firefox. Это изменение дало браузеру заметный прирост производительности.

Вскоре разработчики начали получать обратную связь от других компаний, которые тестировали Rust.

Facebook* использовала Rust для редизайна программного обеспечения, которое ее разработчики применяют для управления внутренним исходным кодом.

Rust стал появляться в ядре некоторых чрезвычайно важных программных продуктов.

В 2020 году Dropbox представила новую версию движка, отвечающего за синхронизацию файлов между компьютерами пользователей и облачным хранилищем Dropbox, переписанную на Rust. Первоначально система программировалась на Python, но теперь она обрабатывала миллиарды локальных файлов (и триллионы синхронизированных онлайн).

По словам Паркера Тиммермана, программиста, недавно покинувшего Dropbox, благодаря Rust эта задача стала проще и даже приятнее.

«Писать на Rust приятно, что, может быть, звучит немного странно, но это просто фантастический язык. Это весело. Чувствуешь себя волшебником, а с другими языками такого никогда не бывает», — говорит он.

Инженеров Discord долгое время раздражало, что сборщик мусора в Go — языке, на котором они писали критически важные компоненты программы, — замедлял работу. Их программа выполняла бы эту процедуру примерно каждые две минуты. В 2020 году они переписали ее на Rust и обнаружили, что теперь она работает в 10 раз быстрее.

Даже руководители и инженеры Amazon Web Services убедились, что новый язык позволяет писать более безопасный и быстрый код. Пожалуй, больше всего они оценили его эффективность: Rust потребляет вдвое меньше электроэнергии, чем аналогичная программа, написанная на Java, языке, обычно используемом в AWS.

«Таким образом, я мог бы создать центр обработки данных, который выполняет в 2 раза большую нагрузку, чем мне доступно сегодня», — говорит Миллер.

Некоторые из разработчиков Rust даже обеспокоены его успехом. По мере того как технологические гиганты внедряют этот язык, растет и их влияние на него. Это часто происходит с open-source проектами: крупные компании могут позволить себе наращивать участие и подтолкнуть проект к решению проблем, которые их волнуют. У небольших групп таких ресурсов нет.

программирование, фотография рук на клавиатуре крупным планом

Фото в тексте: Unsplash

Впрочем, пока поводов для тревоги не было.

В 2021 году крупные технологические компании оплатили запуск некоммерческого фонда Rust Foundation для поддержки работы волонтеров. Он предлагает гранты в размере $20 тысяч для программистов, которые хотят поработать над какой-либо важной функцией Rust, и для авторов, испытывающих краткосрочную финансовую нужду.

Кроме того, он оплачивает серверы для хостинга Rust и круглосуточную техподдержку. Ранее этим занимались «два добровольца, которые в основном находились на дежурстве 50% своего времени», — типичная история для open-source.

Язык невероятно и быстро вырос. Если считать, что Rust родился в 2006 году, то сейчас он выходит из подросткового возраста и вступает в стадию зрелости. Автомобильные компании используют Rust, чтобы создавать критически важный код для автомобилей, а вслед за ними его внедряют и аэрокосмические компании.

«Он будет использоваться везде», — считает Тиммерман из Dropbox. Более того, руководство Microsoft публично говорит то, о чем, вероятно, думают многие другие игроки: что новый код все чаще будут писать на Rust, и все реже — на C и C++.

Впрочем, старые программы на C и C++ не исчезнут совсем. Вероятно, они будут применяться еще много десятков лет. Но если Rust станет распространенным языком для нового кода, со временем мы начнем замечать, что программное обеспечение становится все надежнее, а баги — все реже.

Больше всего этому удивляется сам Хор. «Большинство языков программирования умирают при рождении» — говорит он.

* Meta и входящие в нее Facebook и Instagram признаны экстремистскими организациями, деятельность которых запрещена в РФ.

Источник.

Фото на обложке: Trismegist san / Shutterstock

Подписывайтесь на наш Telegram-канал, чтобы быть в курсе последних новостей и событий!

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 История бьюти-сети «Золотое Яблоко»: как развивался крупный парфюмерный супермаркет
  2. 2 5 компаний, которым кризис пошел на пользу: что стоит почерпнуть из их опыта?
  3. 3 Рождение звука и инновации восприятия: история компании Dolby
  4. 4 130 лет Philips: от телевизоров и наушников до медицинского оборудования и нейросетей
  5. 5 От пространств для хипстеров к офисам «на районе»: история стартапа «Делатели офисов»
FutureFood
Кто производит «альтернативную» еду
Карта