Язык программирования 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++, разработаны таким образом, чтобы программист мог влиять на то, как и когда программа использует доску. Благодаря такому контролю над динамической памятью он может заставить программу очень быстро работать.
Именно поэтому С и C++ часто используют, чтобы писать код «для железа», который будет взаимодействовать напрямую с аппаратным обеспечением. Машины, у которых нет операционной системы вроде Windows или Linux, включая аппараты для диализа и кассы, работают на таком коде.
Но несмотря на скорость, у них есть и недостаток. Они требуют, чтобы программист внимательно следил за тем, что записано в памяти, и когда это нужно стереть. Если про это забыть, произойдет сбой: в какой-то момент программа попытается использовать место в памяти, которое считает пустым, но там уже будет что-то храниться. Кроме того, этой лазейкой может воспользоваться злоумышленник.
Хакер обнаружит, что программа не очищает память как следует — информация, которая должна быть стерта (пароли, финансовые данные и так далее), все еще хранится, — и воспользуется ей. По мере того, как код на С или C++ становится все длиннее, даже очень осторожный программист может допускать ошибки, наполняя программу багами.
В 1990-х годах стали набирать популярность новые языки — Java, JavaScript и Python. Они использовали совершенно другой подход. Чтобы снизить нагрузку на программиста, они автоматически управляли памятью, применяя «сборщиков мусора», компоненты, которые периодически очищали память во время работы программы. Вуаля! Теперь можно было писать код без ошибок памяти.
Но была и обратная сторона — потеря контроля. Программы начинали работать медленнее, поскольку важное время обработки данных уходило на сбор «мусора». И программы, написанные на этих языках, требовали больше памяти.
Таким образом, мир программирования разделился на два лагеря. Если программа должна была работать быстро или помещаться на крохотном чипе в устройстве, вероятнее всего, ее писали на С или C++. Если это было приложение для веба или мобильного телефона — а число таких программ в мире стремительно росло — требовалось использовать новый язык, который собирал «мусор».
С Rust Хор хотел устранить противоречие между этими подходами. От программистов не требовалось вручную задавать местоположение данных: это делал Rust. Но при этом он задавал множество строгих правил о том, как данные могли использоваться или копироваться внутри программы.
Пришлось бы учить эти правила, которые были бы более трудными, чем в 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 развивалась собственная культура, которая отличалась дружелюбием и открытостью к новичкам. Даже сообщения об ошибках, которые создает компилятор, полны заботы: они описывают ошибку и предлагают возможные варианты решения.
Наконец, 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 проектами: крупные компании могут позволить себе наращивать участие и подтолкнуть проект к решению проблем, которые их волнуют. У небольших групп таких ресурсов нет.
Впрочем, пока поводов для тревоги не было.
В 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-канал, чтобы быть в курсе последних новостей и событий!
Опрос Stack Overflow-2023: JavaScript стал самым используемым языком, а Rust — самым любимым
Форум Stack Overflow подвёл итоги своего ежегодного исследования IT-сферы. Более 90 тыс. человек выбрали самый популярный язык программирования и лучшие инструменты для работы.
Так, в рейтинге самых часто используемых языков на первом месте уже одиннадцать лет держится JavaScript. На втором месте — HTML/CSS, на третьем — Python.
Организаторы исследования-2023 немного изменили формат рейтинга любимых языков. Он теперь отображает процент тех, кто использовал тот или иной язык и кто только планирует. Например, 40% участников опроса намерены попробовать писать на JavaScript, а 57,83% уже попробовали и будут пользоваться им дальше. Самым популярным в этом разделе оказался Rust: 84,66% респондентов остались им довольны.
В списке любимых IDE безоговорочно лидирует Visual Studio Code, процент её пользователей вырос с 75% до 81%.
Рейтинг инструментов делового общения возглавляет Microsoft Teams, за ним следует Slack и Zoom (при этом в прошлом году Zoom был на первом месте). Среди облачных платформ первое место заняла Amazon Web Services, на втором — Microsoft Azure, на третьем — Google Cloud.
В этом году Stack Overflow добавил в исследование новый раздел, посвящёный использованию ИИ-инструментов.
«Мы углубились в AI/ML, чтобы понять, как разработчики думают об этом и используют его в своих рабочих процессах», — заявляют организаторы опроса. Результаты показали, что разработчики активно интересуются ИИ-инструментами: 44% респондентов уже ими пользуются, 26% планируют в ближайшее время.
Среди плюсов ИИ респонденты выделили повышение производительности и ускорение обучения. Чаще всех ИИ-инструменты используют блокчейн-разработчики, дата-сайентисты и фронтендеры, чаще всего для таких задач, как написание кода (83%), дебаггинг (49%) и документация (34%).