Rust VS Go: какой язык выбрать разработчикам в 2023 году?

Источник: InfoQ

В 2023 году у нас будет тысяча причин изучать Rust.

7 августа Rust Foundation опубликовала результаты отчета Rust Survey 2022. В отчете показано, что уровень внедрения Rust продолжает расти. Более 90% респондентов указали, что они являются пользователями Rust; Rust используется для большая часть кодирования работает в России, что на 51,8% больше, чем в предыдущем году.

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

Появившийся в 2009 году, язык Go привлек большое внимание своей уникальной моделью параллелизма и мощными преимуществами производительности. Стоит отметить, что, как и язык Rust, создатель языка Go также «ненавидит» C++, а Go также является доминирующим языком облачных вычислений.

В опросе разработчиков Stack Overflow 2022 среди 70 000 ответов на вопрос о «языке программирования, который заставляет людей любить и ненавидеть» программисты явно предпочитают Rust, 86% из них сказали, что им нравится Rust, а 64% сказали, что им нравится Go. Столкнувшись с горячим статусом Rust, некоторые разработчики задались вопросом: стоит ли изучать Go в 2023 году?

Rust VS Go, какой язык выбрать разработчикам в 2023 году?

Rust VS Go, какой язык выбрать разработчикам в 2023 году?

Кроме того, за последние два дня вопрос о том, выбрать ли Rust или Go, также стал горячей темой в Hacker News:

Rust VS Go, какой язык выбрать разработчикам в 2023 году?

Пользователь сети, поддерживающий Rust, сказал: «Меня тоже долгое время беспокоил этот выбор. В конце концов, Rust победил. Во-первых, я чувствую, что Rust ближе к вещам предыдущей эпохи Pascal, и вы можете контролировать все. ; во-вторых, если wasm и родственные технологии будут большой вспышкой, Rust будет более безопасным выбором; тогда у нас уже есть Python для быстрой разработки, так что имеет смысл выбрать что-то более экстремальное, а Go находится где-то посередине. Наконец, Rust следует использовать для Core и High-Profile, так что вряд ли он будет устранен».

Другой разработчик, который не согласился, сказал: «Я разрабатывал на Go почти десять лет, но недавно я также попробовал Rust. Я думаю, что в настоящее время существует некое обязательное и вводящее в заблуждение предпочтение Rust, исходя из моего опыта работы в различных стартапах, включая мой текущий, Go, безусловно, лучший выбор для бэкэнд-разработки! Обратите внимание, производительность, функциональность или что-то еще... эти два языка очень и очень похожи!"

Я должен сказать, что и Go, и Rust определенно являются отличными языками программирования. Они современные, мощные, универсальные и обеспечивают отличную производительность. Но на самом деле нет смысла напрямую сравнивать Go и Rust, кто лучше, потому что каждый язык программирования представляет собой ряд глубоких компромиссов, стоящих за ним. Разные языки будут оптимизированы для разных нужд, поэтому при выборе языка мы также должны учитывать, для решения каких задач мы хотим его использовать. Итак, мы начнем с применимых сценариев языков Go и Rust и обсудим «путь» дизайна Go и Rust.

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

Go против Rust: сходства

Rust и Go имеют много общего, поэтому люди часто сравнивают их. Какие цели у них общие?

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

—Гинтс Дрейманис

и:

Go — это язык программирования с открытым исходным кодом, который упрощает создание простого, надежного и эффективного программного обеспечения.

— golang.org

Безопасность памяти

И Go, и Rust входят в число современных языков программирования, уделяющих особое внимание безопасности памяти. За десятилетия разработки старых языков, таких как C и C++, стало ясно, что одной из основных причин ошибок и багов является небезопасный/неправильный доступ к памяти.

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

Быстрый, компактный исполняемый файл

Оба являются компилируемыми языками, что означает, что программы могут быть переведены непосредственно в исполняемый машинный код, так что программы могут быть развернуты как один двоичный файл. В отличие от интерпретируемых языков, таких как Python и Ruby, нам не нужно поставлять с программой интерпретатор и множество библиотек/зависимостей. Как прямое отражение этой основной силы, программы на Rust и Go, как правило, работают быстрее, чем интерпретируемые языки.

Язык общего назначения

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

Прагматичный стиль программирования

Ни чрезмерно функциональные языки (такие как Scala или Elixir), ни полностью объектно-ориентированные (такие как Java и C#). Наоборот, хотя и Go, и Rust имеют функции функционального и объектно-ориентированного программирования, они всегда подчеркивают прагматическую направленность — то есть решают задачу наиболее подходящим образом, а не заставляют всех использовать конкретный метод через «идеологию». способ делать вещи. **Но если вам действительно нравится стиль функционального программирования, на стороне Rust есть больше связанных инструментов, что является одним из преимуществ Rust по сравнению с Go. **

Мы, конечно, можем спорить о том, что представляет собой действительно «объектно-ориентированный» язык. Но, честно говоря, стиль объектно-ориентированного программирования, которого ожидают пользователи C++, Java или C#, на самом деле не существует в Go или Rust.

— Джек Мотт

Массовое развитие

И Rust, и Go предоставляют множество полезных функций для крупномасштабного программирования, поэтому они оба могут адаптироваться к реальным потребностям больших команд разработчиков и больших баз кода. **Например, программисты на C годами спорят о том, где ставить круглые скобки, и должен ли быть код с отступом табуляцией или пробелом; но Rust и Go уже используют стандартные инструменты форматирования (в Go есть gofmt, в Rust это rustfmt) полностью решают эти проблемы. проблемы. Они автоматически переписывают ваш код, используя соответствующий стиль.

Дело не в том, что этот конкретный формат изощрен, просто **программисты на Rust и Go более прагматичны и предпочли бы выбрать единый стандарт реализации. **

Стиль gofmt может не всем нравиться, но у gofmt каждый найдет что-то для себя.

— Роб Пайк

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

В начале своей карьеры я использовал Java и Ruby, поэтому написание кода на Go и Rust всегда было немного пугающим и неподконтрольным мне. Но когда я зашел в Google и увидел сервис, написанный на Go, я испытал настоящее облегчение, потому что мне было легко создать и запустить его.

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

— Сэм Роуз

**Ржавчина или переход? **

После обсуждения стольких проблем и того факта, что оба языка настолько хорошо спроектированы и мощны, есть ли какой-либо результат в этом соревновании? Или, поскольку оба являются отличными вариантами, почему люди до сих пор возмущаются в социальных сетях, пишут длинные комментарии в блогах, говоря, что «Rust для идиотов» или «Go вообще не язык программирования»? Какие-то резкие слова?

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

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

Go и Rust: производительность

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

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

Компилятор Go также не тратит много времени на создание наиболее эффективного машинного кода, он больше озабочен быстрой компиляцией больших объемов кода. ** Таким образом, в тестах времени выполнения программа Rust часто превосходит программу Go. **

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

Поскольку цель Rust — дать программисту полный контроль над базовым оборудованием, **программы на Rust можно глубоко оптимизировать, чтобы приблизиться к максимальной теоретической производительности машины. ** Это делает Rust лучшим выбором для определенных случаев использования, когда скорость выполнения превыше всего, например, для программирования игр, ядер операционной системы, компонентов веб-браузера и систем управления в реальном времени.

  • Простота

Неважно, насколько мощным является язык программирования, если он слишком сложен для изучения и отпугивает большинство людей. Кажется, что Go был специально разработан, чтобы отличаться от языков возрастающей сложности, таких как C++: ** У него очень небольшой синтаксис, очень мало ключевых слов и даже не так много функций. **

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

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

— Ранние впечатления программиста на Rust от Go

Ключевым моментом здесь является "простота" три слова. Конечно, просто не значит легко. Но маленький и простой язык определенно легче выучить, чем большой и сложный язык. Существует не так много способов добиться одного эффекта, поэтому качественный код Go почти всегда выглядит одинаково. В этом есть еще одно преимущество: мы можем быстро понять, что делает служба, с которой мы не знакомы.

Rust VS Go, какой язык выбрать разработчикам в 2023 году?

** Основная онтология Go невелика, но стандартная библиотека очень мощная. **То есть, помимо синтаксиса Go, наша кривая обучения также должна учитывать эту часть стандартной библиотеки.

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

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

— Лорис Кро

  • Функция

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

— Деватон

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

Rust VS Go, какой язык выбрать разработчикам в 2023 году?

Но также из-за того, что Rust имеет много особенностей дизайна, его сложнее изучить, особенно на начальном этапе. Но это нормально, C++ или Java, в конце концов, есть чему поучиться, и они даже не предлагают расширенные функции Rust, такие как безопасность памяти. Так что действительно неразумно критиковать слишком сложный звук Rust: он разработан, чтобы подчеркнуть экспрессию и богатые функции, мы не можем ожидать, что он будет таким простым и чистым, используя при этом преимущества. Так что, конечно, у Rust есть своя кривая обучения. Но пока эта трудность будет преодолена, впереди будет гладкая дорога.

Если вы готовы изучать более сложный синтаксис и семантику (и более высокую планку читабельности кода) в обмен на высочайший уровень производительности, Rust может даже соперничать с C++ и D. — Дэйв Чейни

**Хотя Rust и Go заимствуют некоторые функции друг у друга (например, дженерики), справедливо будет сказать, что возможности Rust по-прежнему лучше, а возможностей Go относительно мало. **

  • Параллелизм

Большинство языков предоставляют ту или иную форму поддержки параллельного программирования (т.е. выполнения нескольких операций одновременно), но Go был разработан для этого с нуля. ** Go не использует потоки операционной системы, но предоставляет облегченную альтернативу: горутины. **Каждая горутина — это независимо выполняющаяся функция Go, которую планировщик Go сопоставляет с одним из управляемых потоков операционной системы. То есть планировщик может очень эффективно управлять большим количеством параллельных горутин, используя только ограниченное количество потоков операционной системы.

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

Go также предоставляет каналы для горутин, которые представляют собой быстрый, безопасный и эффективный способ общения и обмена данными. Уровень параллелизма в Go действительно очень высок, а опыт использования весьма расслаблен и приятен.

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

Go упрощает создание тщательно деконструированного приложения, которое можно развернуть как набор микросервисов и в полной мере использовать преимущества параллелизма. В Rust это не невозможно, просто это сложнее реализовать. В каком-то смысле Rust больше подходит для программистов, которые не должны допускать дыр в безопасности, вызванных проблемами с памятью, но, соответственно, при выполнении некоторых задач, относительно простых для других языков (в том числе GO), предпочитают Have to pay больше усилий. — Соня Коптева

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

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

— Ранние впечатления программиста на Rust от Go

Хотя реализовать параллельные программы на Rust может быть непросто, это все же вполне выполнимо, и** эти программы также выигрывают от тщательно разработанных гарантий безопасности памяти Rust. **В качестве примера возьмем класс Mutex из стандартной библиотеки: в Go мы можем забыть получить мьютекс перед доступом к чему-либо, но в Rust об этом вообще не нужно беспокоиться.

Go фокусируется на параллелизме как на одной из основных концепций. Это не значит, что мы не можем добиться эффектов параллелизма, подобных Go в Rust, но сложность реализации — своего рода испытание для программистов. Go фокусируется на параллелизме как на одной из своих основных концепций. Это не значит, что мы не можем добиться эффектов параллелизма, подобных Go в Rust, но сложность реализации — своего рода испытание для программистов.

—— Дэйв Чейни

  • безопасность

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

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

— Почему стоит выбрать Rust?

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

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

— Гжегож Носек

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

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

«Борьба с проверкой заимствования» является обязательной для новичков в Rust, но по большей части проверка на самом деле не является врагом. Проблемы, которые он находит, действительно являются реальными ошибками (или, по крайней мере, потенциальными ошибками) в коде. Это может заставить нас коренным образом реорганизовать наши программы, чтобы избежать таких проблем - Если вы действительно ставите правильность и надежность в качестве своего главного приоритета, то это строгое требование, очевидно, хорошо.

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

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

— Мэтью Эндлер

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

Если вы программист на C или C++ и потратили недели на поиск ошибок безопасности памяти в языке, вам понравится Rust. Таким образом, «борьба с проверкой заимствования» превращается в «возможно ли это с помощью компилятора? Круто!»

— Гжегож Носек

  • Увеличить масштаб

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

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

Для больших приложений и распределенных систем скорость выполнения кода часто менее важна, чем скорость разработки: такой язык, как Go, который намеренно делает акцент на бережливом дизайне, может сокращать время адаптации новых разработчиков и позволять им быстрее участвовать. Чтобы внести свой вклад в большие кодовые базы.

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

— Лорис Кро

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

Rust и Go: различия

Хотя и Rust, и Go являются популярными и широко используемыми современными языками, на самом деле они не являются конкурентами, поскольку нацелены, возможно, на совершенно разные варианты использования**.

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

Итак, можем ли мы начать с подходов, используемых Rust и Go, и интерпретировать их соответствующие сущности? Давайте попробуем это вместе.

  • вывоз мусора

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

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

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

— ПингКАП

  • близко к оборудованию

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

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

Оба языка имеют разные области применения. Go хорош для написания микросервисов и типичных задач DevOps, но это не язык системного программирования. Rust лучше справляется с задачами, которые подчеркивают параллелизм, безопасность и/или производительность, и имеет более крутую кривую обучения, чем Go.

— Мэтью Эндлер

  • Сначала производительность

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

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

Rust работает быстрее, чем Go. В бенчмарках Rust действительно быстрее, в некоторых случаях на порядок. Но прежде чем выбрать Rust, проясните: Go не сильно отстает в большинстве тестов и по-прежнему сохраняет преимущество в производительности по сравнению с такими языками, как Java, C#, Java и Python.

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

— Эндрю Ладер

  • Правильность

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

И Go, и Rust помогают вам писать правильные программы, но по-разному: **Go предоставляет отличную встроенную среду тестирования, в то время как Rust фокусируется на устранении ошибок во время выполнения с помощью средств проверки заимствования. **

Мое мнение: для кода, который должен быть выпущен завтра, используйте Go, если это код, который должен стабильно работать в ближайшие пять лет, то выбирайте Rust.

— Гжегож Носек

Хотя и Go, и Rust достаточно хороши для серьезных проектов разработки, лучше полностью понять их различные функции и преимущества. Короче говоря, не имеет значения, что думают другие люди: ** Только вы можете решить, какой язык программирования больше подходит для вашей команды и нужд проекта. **

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

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

— Эндрю Ладер

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

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

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

Посмотреть Оригинал
  • Награда
  • комментарий
  • Поделиться
комментарий
Нет комментариев