Недавно я читал эту статью о Почему Python не является языком программирования будущего. Я не уверен, произойдет ли это, но автор делает несколько очень интересных моментов. Одно из них, к которому я особенно чувствителен, — это производительность. Я вырос как разработчик C/C++ (и других языков, таких как Pascal, Assembly, COBOL, Prolog, LISP или даже APL). Это были веселые времена, но вам приходилось серьезно думать об управлении памятью и эффективности кода, поскольку сегодняшней роскоши в виде невероятно быстрых процессоров и гигантского объема памяти у нас не было.

Однако с конца 90-х в моем мире доминируют такие языки, как Java, Python, JavaScript, R, и, хотя я признаю, что у них есть свои преимущества, я никогда не чувствовал себя комфортно ни с одним из них. Все они как-то кажутся немного неряшливыми, слишком многословными или загадочными. И они не являются действительно скомпилированным кодом, что, на мой взгляд, означает отсутствие максимально возможной производительности. Когда я вернулся в школу, чтобы получить степень магистра в области вычислительной техники, я вспоминаю, как здорово было снова использовать C/C++ и интегрировать с высокопроизводительными библиотеками Fortran, такими как BLAS и LAPACK, необходимые для квантовой физики или астрофизических вычислений, чтобы выполнять их за короткое время. «разумное» количество времени.

Изучение ржавчины

В любом случае, в приведенной выше статье предлагаются три варианта для рассмотрения на будущее: Rust, Go и Julia, и рекламируется Rust как решающий проблему производительности с концепцией владения и заимствования, что привлекло мое внимание. Похоже, что многие люди также верят, что Rust заменит C++, и TIOBE index (ранжирование языков программирования) за январь 2023 года подчеркивает, что производительность казалась важной. Конкурент C++, Rust, снова вошел в топ-20 (год назад он был на 26-м месте), но на этот раз, похоже, по-настоящему.. Поэтому я недавно решил погрузиться в это, и мне очень нравится то, что я вижу до сих пор.

Среду Rust framework было легко установить на мой Mac, и она хорошо поддерживалась в Visual Code, который является моей текущей IDE. В принципе, я был готов к работе за считанные минуты. Язык чрезвычайно хорошо задокументирован, и многие пакеты (также известные как ящики) легко доступны.

Одна интересная вещь, которую Rust сделал со мной, заключается в том, что по какой-то причине я на самом деле читаю документацию, а не сразу погружаюсь в написание кода, как неуправляемый гик, которым я являюсь. Rust кажется мирным пространством, где все объясняется в четких и кратких терминах, что заставляет вас сначала понять это. Теперь, конечно, я написал несколько строк кода, но в контролируемой и корректной манере (иначе компилятор Rust будет вас ругать).

Пакеты ржавчины

Одно из моих беспокойств заключалось в том, что, поскольку это относительно новый язык, он еще не будет оснащен библиотеками, которые мне нужны для поддержки моих проектов исследований и разработок. Но до сих пор этого не произошло. Например, я быстро нашел Diesel для подключения к базам данных, и есть несколько вариантов построения или взаимодействия с API, такими как Warp, Rocket, Actix или Reqwest.

Один из ящиков, который привлек мое особое внимание, — Единица измерения. Эта тема представляет для меня большой интерес, поскольку, как член группы CODATA, занимающейся цифровым представлением единиц измерения (DRUM), мы ищем именно такие инструменты. Благодаря этому пакету единицы измерения могут быть правильно выражены в Rust из коробки на основе стандарта СИ. Разработчики также выбрали правильный подход к использованию количеств, а не просто единиц (что может быть двусмысленным). Мне слишком рано говорить, насколько хорошо это работает, и я планирую продолжить расследование, как только у меня появятся навыки работы с Rust. Но это говорит мне о том, что сообщество Rust уделяет внимание стандартам и потребностям данных, научных и исследовательских сообществ. Это был бы отличный вариант для создания API на основе единиц измерения и количества измерений или фундаментальных физических констант.

C/C++ против Rust?

Я уверен, что между C/C++ и Rust есть много различий, но одно из них, которое я быстро обнаружил, — это безопасность и надежность кода. C/C++ позволит вам делать все, что вы хотите: хорошие вещи, великие вещи, плохие вещи и очень-очень плохие вещи. С другой стороны, Rust элегантно заставляет вас думать наперед и быть дисциплинированным в своем коде, гарантируя, что все потенциальные проблемы будут обнаружены во время компиляции, а не во время выполнения, когда уже слишком поздно. Поначалу это может быть тревожно или утомительно, но вы быстро оцените, насколько это ценно.

Стать Растацем

Rustaceans — это люди, которые используют Rust, вносят свой вклад в Rust или заинтересованы в развитии Rust. Вы можете найти их на https://rustaceans.org, или встретиться с сообществом в Discord или других местах, таких как Zulip. Похоже, я только что стал одним из них, и я с нетерпением жду дальнейшего изучения Rust. Следите за обновлениями.