можно ли изучить беретту в раст

Чего не стоит делать в Rust, если начали играть в 2021 году

можно ли изучить беретту в раст

Rust – это необычный симулятор выживания, который привлек к себе внимание огромное количество геймеров. При этом новички часто думают, что в этом проекте нет ничего сложного, и уже с самого начала делают все то, что и в других играх с элементами выживания.

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

Одному будет тяжело

можно ли изучить беретту в раст

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

Также стоит отметить, что 99% других игроков не дадут вам мирно существовать в виртуальном мире игры. Вам постоянно придется отбиваться от обезумивших «дикарей», которые захотят отобрать ваши вещи и ресурсы. Естественно, ни у одного новичка не получится защитить себя от оравы более опытных игроков, поэтому лучше изначально залетать в Rust хотя бы с парой друзей.

Никому нельзя верить

можно ли изучить беретту в раст

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

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

можно ли изучить беретту в раст

Курс юного строителя

можно ли изучить беретту в раст

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

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

Все вещи в одном месте

можно ли изучить беретту в раст

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

Ни в коем случае не размещайте абсолютно все запасы на единственной базе, да еще и в конкретном помещении. В таком случае после случайного налета кучки любителей халявы вы потеряете абсолютно все. Конечно, вряд ли у новичка хватит ресурсов, чтобы построить себе 4-5 домов и правильно распределить по ним ценные предметы, но хотя бы попробуйте сделать что-то подобное. Неплохим решением будет на территории одной базы построить несколько «нычек» и распределить по ним ресурсы и предметы.

Не забывайте про аптечки

можно ли изучить беретту в раст

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

можно ли изучить беретту в раст

Поставьте себе домофон

можно ли изучить беретту в раст

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

Не используйте факел

можно ли изучить беретту в раст

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

Вы всегда в опасности

можно ли изучить беретту в раст

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

Перестрелка – не самая лучшая идея

можно ли изучить беретту в раст

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

можно ли изучить беретту в раст

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

Источник

Гайд для новичков в Rust – выживание с нуля в Раст

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

можно ли изучить беретту в раст

Выбор сервера

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

Первые шаги

Игрок появляется буквально голым в середине огромной карты. Первый шаг – скрафтить топор.

можно ли изучить беретту в раст

Для этого нам понадобятся 30 деревьев и 5 камней. Сделали топор – убегаем от городов и мест возрождений. Потому что в городах много других игроков, которые не пощадят вас. Строим очаг в горах или лесах, для этого понадобится около 80 деревьев.

Дальнейшие шаги будут зависеть от того, как обострено чувство голода:

Поднимаемся с колен

Огонь привлечет других игроков, у которых, скорее всего, уже есть автоматы и прочие ништяки. Ночью ведем себя словно герои фильма «Тихое место», утром делаем печку, чтобы не умереть от холода, а также для плавки металла. Понадобятся 15 камней, 20 деревьев и 50 единиц топлива.

можно ли изучить беретту в раст

Берем ипотеку

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

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

можно ли изучить беретту в раст

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

Получается, что в пещере:

Вооружение

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

можно ли изучить беретту в раст

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

Зеленые военные сундуки — вариант попроще. Найти можно на большинстве монументов.

Нападение на других игроков

Секреты и хитрости для начинающих по зачистке:

Готово! Теперь вы затеряетесь в (по началу) недружелюбном для новичков мире.

Источник

Что делать после вайпа в Rust

Читайте в этой статье

Сразу же после вайпа

можно ли изучить беретту в раст

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

В общем для начала вам нужно побыстрее убраться с пляжа, и уйти куда подальше от него. По дороге собираем камушки, пеньки и рискованно ломаем бочки и собираем скрапа (потом он нам ещё понадобится).

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

Ищем место, где скалы смогут окружить ваш дом с одной или же несколько сторон, что-бы ваш дом был незаметнее.

Далее когда вы обустроились, вам обязательно нужно поставить шкаф, коль на вашей территории смогут строить дома и делать всё, что им захочется. Положите туда отчасть ресурсов (сколько необходимо), что бы дом не начал гнить и ломаться. Поставьте спальник. И тут задаётся вопрос, какие-же всё таки двери устанавливать в дом. Я конечно же люблю, и вам советую сразу ставить железные двери. А из замков, обязательно даже если очень мало ресов ставьте кодовой замок. Так же поставьте несколько спальников, что бы можно было справится сразу после смерти дома. И еще немало важный момент, как лучше прокачать стены. Стены прокачиваете до камня. И запомните, до железа в начале не качайте. Бродячие игроки заметят ваш дом, и подумают, что вы мажор и у вас там супер лут (калаши и.т.д), и попытаются вас зарейдить. Будет лучше, если у вас есть лишнее железо прокачать только пол и фундамент. Некоторые разумные люди пытаются сломать фундамент, что бы пролезть под ним и собрать весь ваш лут. Обязательно проверьте какой стороной стоят ваши стены и всё остальное, либо ваш дом опять-же будет легко зарейдить даже копьями. Так-же рекомендую для себя сделать деревянную броню которая даёт +15 защиты от снарядов, которая очень нужна в начальных войнах. Одежду делать необязательно, необходима только в том случае, если вы живёте в холодном биоме. Я её использую только для выпендросов. И забыл напомнить, если вы рисковый парень, то можете попробовать прохаживаться по айрдропам. Ибо если вы сможете взять с него лут, то вы будете реально красавчиком. Второй этап для вас всё ближе, и ближе!

Середина

можно ли изучить беретту в раст

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

В этом этапе пытайтесь очень, очень много добывать скрапа (металлолома) из бочек. После того как вы добыли скрапа сразу крафтим первый верстак и исследовательский стол. Вслед за этим опять добываем много скрапа и изучаем в верстаке предметы. В первом верстаке за 75 скрапа может появиться рандомный чертёж.

Снизу изображён список предметов, которые могут выпасть с первого верстака:

можно ли изучить беретту в раст

В первом верстаке, самые нужные вещи это: сачель (сумка с зарядом) c боб гранатами, Pipe Shotgun (пайпа), самодельная двухстволка, железная кирка и топор, револьвер, арбалет, гвоздемёт ну и ган-трап (на выбор). Все предметы из него изучать не нужно, это просто скрап на ветер. Ну может вы и скажете что некоторые предметы нужны. Да я согласен они не помешают, но нам первым делом нужны основные вещи. Задумайтесь зачем они вам нужны, если даже некоторые из них можно найти в ящиках и в айрдропах. В третьем этапе вы их можете изучить, если у вас будет достаточно много скрапа (если вам они вообще прям нужны).

После того как вы изучили основные чертежи из предшествующего верстака, вы можете приступать набирать скрап на крафт второго верстака. Этот верстак покажется вам очень необычным. В нём одно исследование стоит 300 скрапа. Это довольно много, но это того стоит. И в нём шмот уже получше чем в первом верстаке.

Снизу изображён список предметов, которые могут выпасть со второго верстака:

можно ли изучить беретту в раст

Окончание

можно ли изучить беретту в раст

Что-ж начался самый окончательный третий этап. Теперь вы полностью развитый игрок. Будем считать начался информационный век. В этом этапе вы можете приступать и набирать 1200 скрапа на крафт третьего последнего верстака. Это очень долго… Вам нужно сломать около 300-ста бочек. Единственные способы как ускорить сбор скрапа это рейд и убивание бомжей. Рейдя дома часто игроки раста не заглядывают в исследовательские стола, в которых может ожидать джекпот. Я же максимум находил 1000 скрапа (хотя это и есть максимум в исследовательском столе). После того как вы набрали нужно количество скрапа вы можете приступать изучать предметы, но одно исследование стоит 1000 скрапа, и опять же вам придётся идти и доставать скрап.

Снизу изображён список предметов, которые могут выпасть со третьего верстака:

можно ли изучить беретту в раст

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

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

Источник

Так ли страшен Rust, как его малюют

Некоторое время назад я начал понимать необходимость разнообразить мой опыт программирования исключительно на C#. После некоторого изучения различных вариантов, таких как Haskell, Scala, Rust и некоторых других, выбор пал на последний. Со временем я начал обращать внимание, что Rust всё больше и больше рекламируется исключительно как «системный язык», который нужен для вырвиглазно сложных компиляторов и супер-нагруженных систем, с особыми требованиями к безопасности и многопоточности, а для вариантов попроще есть Go/Python/Java/. в то время как я с удовольствием и весьма успешно использовал его как замену моей рабочей лошадке C#.

можно ли изучить беретту в раст

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

Введение

Зачем, собственно, учить новый язык, тем более сложный? Мне кажется, что ближе всего к истине ответ статьи «Побеждая посредственность», а именно:

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

Чем сложнее язык, тем богаче фразы, составленные с его помощью, и тем лучше он может выразить требуемую предметную область. Т.к. концепции обычно изучаются единожды, а применяются многократно, намного выгоднее с точки зрения вложения собственного времени изучить всякие страшные слова вроде «монадические трансформеры» (а еще, желательно, их смысл), чтобы потом экономить свои ментальные силы и тратить их на что-то более приятное. И поэтому весьма грустно видеть тренд некоторых компаний делать специально «упрощенные» языки. В итоге словарь этих языков намного меньше, и выучить его не составляет особого труда, но читать потом программы «моя твоя покупать лук» весьма тяжело, не говоря про возможные неоднозначные трактовки.

Основы

Как обычно новичок знакомится с языком программирования? Он гуглит самую популярную книжку по языку, достаёт её, и начинает читать. Как правило, там содержится HelloWorld, инструкция по установке компилятора, а дальше базовая информация по языку с постепенным усложнением. В случае раста, это растбук, а первым примером является чтение числа из консоли и вывод его на экран. Как бы мы это сделали в том же C#? Ну наверное как-то так

А что у нас в расте?

Утроенное количество кода, все эти реверансы с созданием переменной перед использованием (привет Паскаль!), вызовом кучи вспомогательного кода, и т.п. «Что за ужас» подумает среднестатистический разработчик и в очередной раз убедится в «системности» языка.

А ведь на самом деле это можно написать существенно проще:

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

Почему пример в книжке составлен таким образом? Скорее всего из-за того, что объяснение обработки ошибок происходит сильно позже, а игнорировать их как в случае с C# не позволяет парадигма раста, который контролирует все возможные пути, где что-то может пойти не так.

Лайфтаймы и борроучекер

Ох уж эти страшные звери. Люди бросаются непонятными заклинаниями навроде

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

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

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

И компилятор сам с радостью выведет всё, что нужно, чтобы это работало.

Лично я вижу прелесть концепции в автоматическом управлении в нескольких аспектах

В итоге, код получается чистый (как в языке с GC), но в то же время все ресурсы освобождаются максимально быстро (как в языке с ручным управлением). А лайфтайм: декларативное описание ожидаемого времени жизни объекта. А декларативное описание всегда лучше, чем императивное «освободи объект здесь».

Жестокий компилятор

Некоторое следствие предыдущего пункта. Есть хорошая картинка, она в целом описывает многие языки, но нарисованна конкретно для случая раста:

можно ли изучить беретту в раст

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

Компилятор скомпилирует объявление этой структуры, но воспользоваться ей не получится, т.к. Box является владеющей ссылкой, или unique_ptr в терминах C++. А уникальная ссылка, конечно же, может быть только одна

Следующая попытка человека может выглядеть так:

Теперь у нас есть невладеющие ссылки (они же shared_ptr ), и их может быть сколько угодно на один объект. Но тут возникает две проблемы: во-первых владелец должен где-то быть. А значит мы скорее всего получим кучу ошибок компиляции «владелец умер, когда кто-то ссылался на его данные», потому как dangling pointers раст не допускает. А во-вторых, что важнее, мы не сможем изменять эти значения, из-за правил раста «либо одна мутабельная ссылка, либо произвольное количество иммутабельных, и никак иначе».

После этого человек обычно начинает биться о клавиатуру, и писать статьи что «в расте даже связный список реализовать нормально не получится». Реализовать же его, конечно, можно, но немного сложнее чем в других языках, придется руками добавить подсчёт ссылок (примитивы Rc / Arc / Cell / RefCell ), чтобы рантайме подсчитывать количество этих самых ссылок, потому что компилятор в данной ситуации бессилен.

Причины этого: эта структура данных плохо ложится на концепцию владения раста, вокруг построен весь язык и экосистема в целом. Любые структуры данных, где необходимо наличие нескольких владельцев потребуют некоторых приседаний, например реализация всевозможных лесов/деревьев/графов или тех же связных списков. Но это верно для всех языков программирования: попытки реализовать своё управление памятью в языках с GC приводит к страшным монстрам, работающих через WeakReferences с гигантскими byte[] массивам, воскрешающие объекты в деструкторах, чтобы вернуть их в пул, и прочей страшной некромантией. Попытки уйти от динамической природы JS, чтобы написать производительный код, приводит к еще более странным вещам.

Таким образом, в любом языке программирования есть своя «болевая точка», и в случае раста, это структуры данных с многими владельцами. Но, если мы смотрим с прикладной точки зрения высокоуровневых программистов, наши программы устроенны как раз таким образом. Например, в моем окружении типовое приложение выглядит как некоторый слой контроллеров, которые шарят между собой сервисы. Каждый сервис имеет ссылку на какие-то репозитории, которые возвращают какие-то объекты. Всё это отлично укладывается в концепцию ownership’а. И если учесть, что на практике основными структурами данных являются списки, массивы и хэшмапы, то оказывается, что всё не так уж и плохо.

Что же делать с этим зверем

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

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

Он говорит как раз о том, что мы передали владение ссылкой одному элементу, и уже не можем его использовать повторно. Также он нам рассказывает, что есть некий Copy трейт, который позволяет вместо перемещения объекта производить его копирование, из-за чего его использовать после «перемещения», потому что переместили мы копию. Если вы не знали про его существование, то ошибка компиляции снабдит вас информацией для размышления «А может стоит добавить реализацию этого трейта?».

Вообще, раст для меня первый язык, в котором есть compiler-driven development. Вы просто запускаете компиляцию, если что-то не работает, язык просто скажет вам «хмм, что-то не сходится. Я думаю, проблема в Х. Попробуй добавить вот этот код, и всё заработает». Типовой пример, допустим мы написали две функции, и забыли добавить ограничение на генерик:

Компилируем, получаем ошибку:

Копипастим where T: std::marker::Copy из сообщения об ошибке, компилируем, всё готово, поехали в прод!

Да, IDE всех современных языков умеют это делать через всякие сниппеты, но во-первых тут польза в том, что вы видите, из какого крейта/неймспейса прилетело ограничение, а во-вторых это поддержка всё же со стороны компилятора, а не IDE. Это очень помогает при кросс-платформенной разработке, когда у вас локально всё собирается, а на некоторой матрице на CI сервере где-то что-то падает из-за условной компиляции. На билд-сервере IDE нет, а так лог глянул, подставил, и всё собралось. Удобно.

Я писал некоторое время назад телеграм-бота на расте, в качестве тренировки языка. И у меня был момент, где я решил отрефакторить всё приложение. Я заменил всё, что хотел, а потом в течение получаса пытался собрать проект, и вставлял предложения от компилятора тут и там. По прошествии этого времени всё собралось и заработало с первого раза.

Ну и могу сказать, что по прошествии года с того момента как я впервые начал на расте писать, я научился писать простые сниппеты без ошибок с первого раза. Звучит смешно, особенно для людей с динамических ЯП, но для меня это был серьезный прогресс. А еще за всё время работы с растом я дебаг включал ровно два раза. И в обоих случаях я дебажил FFI с С++ кодом, который сегфолтился. Растовый код у меня либо работал правильно, либо не собирался. В случае с C# у меня уверенность сильно ниже, я все время думаю «а не придет ли тут null», «а не будет ли тут KeyNotFoundException», «правильно ли я синхронизировал доступ к этим переменным из многих потоков», и т.п. Ну а в случае с JS (когда я фуллстечил и писал фронт в том числе) после каждого изменения следовала обязательная проверка в браузере, что там изменилось.

Уверенность в том, что собралось == работает действительно имеет место. Это не значит, что в коде нет багов, это значит, что все баги связаны с логикой приложения. У вас нет неожиданных нуллов, несихнронизированного доступа, buffer overflow и так далее. А их намного легче отловить, а иногда можно вынести на уровень типов (хорошая статья на тему).

Итого

Раст — отличный язык для написания абсолютно любых приложений, а не только высоконагруженных бирж, блокчейнов и трейдинговых ботов. Всегда вместо передачи ссылки можно просто скопировать значение. Да-да, возможно, растовчане закидают меня камнями, но в в паре мест моего бота я вместо того, чтобы силиться объяснить компилятору, что переменную можно спокойно расшарить, я её клонировал, и передавал копию. Да, это не так классно, но у меня нет цели написать максимально производительное приложение, как нет такой цели у людей, пользующихся C#/Java/Go/… Я хочу быть максимально продуктивным, и получить приложение с приемлемой скоростью. Реализовать приложение на расте по всем канонам, исключив все ненужные копирования — весьма непростая задача. Но написать приложение за то же время, что и на своём любимом языке, и получить еще и бесплатный прирост производительности — очень даже реально.

Попробуйте написать приложение на расте. Если у вас не получается пройти борроучекер, проверьте ваши структуры данных и их взаимосвязи, потому что я постепенно начал понимать, что борроучекер это не просто механизм, отвечающий за возможность освобождения памяти, но и отличный детектор правильности архитектуры приложения, из разряда «хей, а почему это объект Х зависит от У, я этого не предполагал!». Если же вы всё понимаете, но объяснять борроучекеру правильный ответ слишком сложно, просто скопируйте значение. Скорее всего, вы все равно получите приложение, работающее намного быстрее (если вы пишете на Java/C#/. как я), либо намного стабильнее (если вы пишете на С/С++), за то же самое время, которое вы бы обычно затратили.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *