Как сломанный лифт привел к появлению одного из самых популярных языков программирования

mrdyw8bplhrseq7eken68mwfbo0.jpeg

То, что начиналось как маленький побочный проект на ноутбуке одного разработчика — сегодня стало одним из самых успешных языков программирования с открытым исходным кодом, которым пользуются Microsoft, Amazon, Google, Tesla, Discord и многие другие.

Если кто не знает эту историю — велком.

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

Семнадцать лет назад программист из Mozilla Грейдон Хоар вернулся с работы и обнаружил, что лифт в его доме вышел из строя. Он был вынужден подниматься на двадцать первый этаж, проклиная всё на свете. А потом узнал, что лифт не работал из-за сбоя программного обеспечения. Тогда он решил попробовать сделать язык программирования, который сводил бы такие ошибки к нулю. Чтобы даже начинающий разработчик мог бы написать код, который не зависал.


v7anoiyh_mw7qmnpobpsmj0m5is.jpeg
Грейдон Хоар

Хоар выплеснул все свои разочарования в код и за несколько месяцев создал основу для простого и гибкого языка, рассчитанного на минимизацию ошибок памяти и предотвращение таких проблем, как поломка его лифта. Он назвал его Rust («ржавчина») — в честь ржавчинных грибов, славящихся своей выносливостью и способностью выживать в любых условиях.

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

Чтобы облегчить бремя постоянного управления памятью, такие языки как Java представили концепцию «сборщиков мусора». Эти сборщики предназначены для периодической очистки системной памяти, сводя к минимуму риск ошибок памяти. Однако это происходит за счет более высокого общего использования памяти и большего потребления ресурсов системы — для постоянного поддержания работоспособности сборщиков.

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

Ошибки типа переполнения буфера и выхода за пределы массива в языке стали невозможны в принципе. А ведь как раз подобные (человеческие) ошибки в языках с ручным управлением памятью типа С и С++ и приводили к самым опасным уязвимостям вроде удаленного выполнения кода.


hn3tn-v__1uei9nevhvpnjig4oc.jpeg

Mozilla взяла Rust на вооружение и начала спонсировать проект в 2009 году — в рамках разработки экспериментального быстрого браузерного движка под названием Servo. Этот проект был официально анонсирован компанией в 2010-м. С тех пор язык Rust стал широко поддерживаемым проектом с открытым исходным кодом, используемым для всего, от ПО для лифтов — до масштабных приложений, решающих задачи масштаба Microsoft и Amazon.

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


Народная любовь

В январе 2014 года главный редактор компьютерного журнала Dr. Dobb’s Journal Эндрю Бинсток прокомментировал шансы Rust стать полновесным конкурентом C++. По словам Бинстока, хотя Rust «многие считают удивительно элегантным языком», его внедрение замедлилось, потому что он чересчур сильно менялся между версиями.

Но популярность Rust после его официального релиза в 2015 году росла фантастическими темпами. Несмотря на свою молодость, Rust быстро вошел в число самых популярных языков программирования. Например, в индексе сообщества программистов TIOBE в июле 2019 года он занимал 33-е место, а уже к июлю 2020 года поднялся на 18-е. Точно так же, согласно опросу разработчиков Stack Overflow, Rust является «самым любимым» языком опрошенных с 2016 года. Его любят 86% разработчиков, на втором месте — TypeScript с одобрением 67%, на третьем — Python с 66,7%.


dltaqhaknyafdghalyowur2kqde.jpeg

В опросе Stack Overflow показывается процент тех, кто разрабатывает с помощью языка или технологии и выражает заинтересованность в продолжении разработки с их помощью

В результате многие программисты теперь видят в Rust серьезную альтернативу C и C++ даже в сферах, где эти языки доминировали. Дэйв Херман, соучредитель Mozilla Research, расписал некоторые из преимуществ языка в своем посте:


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


Что сейчас

В бизнес-мире на одной любви не прожить. А поскольку у Mozilla сейчас не самые лучшие времена, в том числе из-за давления со стороны Chrome и Edge, то и развитие нового языка оказалось под угрозой.

В августе 2020 года Mozilla уволила 250 из 1000 своих сотрудников в рамках корпоративной реструктуризации, вызванной пандемией. Команда разработчиков Servo, браузерного движка, написанного на Rust, была тогда полностью расформирована. Это вызвало обеспокоенность по поводу будущего Rust, поскольку члены команды вносили активный вклад в разработку и поддержку языка.

На следующей неделе основная команда Rust признала серьезные последствия увольнений и объявила о планах по созданию фонда поддержки Rust. Первой целью фонда должно было стать владельцем всех товарных знаков и доменных имен, относящихся к языку, и взять на себя финансовую ответственность за их стоимость.


ez0hdzdbu7lvuhjlbtv1sfap-lk.jpeg

8 февраля 2021 года пять компаний-основателей (AWS, Huawei, Google, Microsoft и Mozilla) объявили о создании Rust Foundation. В сообщении в блоге, опубликованном в апреле того же года, Google заявила о поддержке Rust в рамках Android Open Source Project в качестве альтернативы C и C++. Низкоуровневый код для Android теперь в самой Google пишется на Rust.

К 2022 году размер сообщества Rust увеличился втрое и превысил три миллиона пользователей. Его включили в рекомендованный Агентством национальной безопасности США список безопасных для памяти языков. Rust поставили в один ряд с другими хорошо зарекомендовавшими себя языками, такими как Java, C# и Ruby.

Сейчас использование Rust продолжает расти, особенно в автомобильной и аэрокосмической промышленности, где критически важно, чтобы ничего не сломалось. Язык также любят многие крупные ИТ-компании, включая Microsoft, Amazon и Dropbox. За счет этого использование Rust продолжает расти, уменьшая общую зависимость разработчиков от C и C++, которые считаются менее безопасными, особенно в руках неопытных программистов.

От программирования лифтов — к запуску космических ракет и электрокаров. Неплохо для «ржавчины».

По мотивам.

© Habrahabr.ru