Как родилась ржавчина: история ошибки

Как родилась ржавчина: история ошибки

1 ноября 2023 г.

Мы все знаем истории о том, как рождались другие языки программирования. А как насчет Руста?

Rust — это язык, который удивительным образом избежал кембрийского бума языков программирования, оставив позади Ada, D, OCaml и многие другие.

Грейдон Хоар нашел свою нишу на рынке языков программирования. Он заметил, что можно писать высокопроизводительные системы в сумасшедшем стиле C или C++ или использовать Java — безопасный и требовательный к ресурсам зверь.

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

Одной из таких проблем является безопасность памяти. В таких языках, как JavaScript, вам не важно, где хранятся ваши переменные и массивы. В этом районе никогда не происходит ничего плохого. Если вы захотите получить доступ к элементу массива за пределами границ, вы получите ошибку, и все.

Но реальность для языков программирования низкого уровня иная.

Это постоянная борьба с утечками памяти и ошибками.

C и C++ позволяют делать практически все. Например, вы можете создать массив из десяти элементов и прочитать одиннадцать элементов из этого массива.

Угадайте, что произошло в стандартном коде C и C++? Вы получили данные из-за пределов массива. Часть данных, хранившаяся рядом с массивом.

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

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

Идея Грейдона заключалась в концепции языка, который является заменой C и C++ и исправляет распространенные ошибки памяти, направляя и блокируя доступ к данным за пределами приложения. Это называется безопасностью памяти.

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

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

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

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

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

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

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

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

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

Изобретатели Rust и все специалисты, занимавшиеся его разработкой, четко поставили цель. Очень быстрый и безопасный для памяти язык. Видя широкое распространение Rust во всех отраслях, они добились этого.

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

Мы также можем применить такое же отношение к своей жизни и просто наслаждаться процессом и всеми возможностями исследования, которые дает нам жизнь.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE