#29 Rust: зачем выбирать этот язык в 2025 году? | Дмитрий Коваленко

Мне вообще кажется что раст - Это один из самых сбалансированных языков с точки зрения такой лоу-левел и вот этой

на библиотеке А то есть когда ты пишешь на расе ты вообще не думаешь о том что ты там пишешь какой-нибудь там сиш най код который там что-то он вообще там нет не горбаш колектора ничего но он он он довольно приятный и довольно читаемый то есть в плане того что у тебя Control Flow конечно не всегда такой классный Как там в том же Акам или в функциональных языках но всё равно он очень читабельный с этими с релми с опши нами с с типа Аля функторы которые преобразовывает и так далее вот так вот мне кажется О'кей сейчас поговорим ребят Всем привет Это подкаст организованное программирование с вами её ведущий Кирилл Мокевнин и у нас сегодня снова Дима Коваленко Кто помнит буквально в это воскресенье у нас вышел подкаст с ним же про Асем нас конечно там тоже ругали за некоторые неточности и то что мы может быть местами перепутали Но на самом деле в основном очень похвалили Дима очень зашёл аудитории своим энтузиазмом своей глубиной познания разных штук и ребята очень просили повторить сказали что блин будет классно если вы Поговорите про раст Я в общем-то подумал а что нет Э мы тут все рядышком И вот оно всё так быстро происходит поэтому мы с Димой договорились И мы вот снова здесь и снова разговариваем и сегодня будем говорить про раст почему-то все очень просили про него Я кстати не очень понимаю почему А мне почему-то знаешь кажется Дим что есть такая некая мечта знаешь как вот м Не ну я фронтендер или там я ещё кто-то А вот есть такое настоящее программирование суровых ребят на Расте и вот хочется про это послушать вот у меня какое-то такое ощущение есть может быть да на самом деле большой момент маркетинга языка правильно раз Возможно даже кому-то уже начинает надоедать со своими вот этими мы всё перепишем на раз но да я хочу просто продолжить твоё представление меня ребята Зацените как я подготовился вот Зацените я себе студию в офисе собрал у меня тут есть Мой третий кохо Короче я тут прямо заморочился вообще И я выспался перед записью поэтому я думаю что неточности может быть будет поменьше вот Ну да я думаю что СТ - это очень интересный такой эксперимент языка который оправдался и это очень приятный и очень хороший язык Мне он поначалу тоже не нравился до того как я нашёл фултайм работу на расе точнее она меня нашла Вот и как-нибудь как-то так вот сейчас уже продолжаем продолжаем работать потихонечку Ну по поводу того что он мне тоже поначалу не нравился У меня наверно другое было впечатление но давай немножко про историю его Я точно помню была история следующая мозила значит в какой-то момент такие нас не устраивает видимо плюсы Наверное тогда да тамб Kit Вот это всё они говорят Давайте напишем свой собственный движок а для своего собственного движка нужен свой собственный язык Откровенно говоря вот как с такой вот с бизнесом посовещались и решили не особо разговаривая с бизнесом потому что вот ты говоришь удачный эксперимент х а удачны ли он с точки зрения бизнеса Потому что когда они начинали мазила была на коне по-моему С тех по там что-то всё очень плохо получилось что случилось-то смотри раст был довольно нишевым таким интересным низкоуровневый Аля языком программирования у которого был рбш коллектор То есть это был вообще не замена c+ Plus поначалу он был таким м подобным язычком который мой компилятор был довольно тоненький написан на кале и он просто вот был ну таким знаешь супер нишевым языком там Если я сейчас скажу какой-нибудь Дже или какой-нибудь один Там про него никто не слышал потом у человека который работал в Мозиле я не помню кто конкретно Ну короче какой-то стаф инженер естественно какой-нибудь принципал у них была естественно проблема там с безопасностью в браузере потому что это Ну всегда это проблема когда у тебя очень стабильное приложение Ты всё пишешь на си Ну у тебя сек фоты сек фол Тами погоняю там ну Pointer Exception и так далее вот эти все ошибки которые всем не нравятся да то есть ты используешь конечно же какие-то там всякие гринды какие-то мче какие-то там статические анализаторы но хотелось бы чтобы это всё была в компиляторе и по совместительству он был одним из тех кто вот игрался с этим языком был по-моему одним из кор контрибьютор и вот у него возникла идея А давайте мы придумаем новый концепцию для компилятора bor Checker Да где ты вместо того чтобы всё это делать как бы отдельно от языка прямо в компилятор встроить вот эти сейв чеки и вот собственно мозила начала спонсировать этот язык программирование именно вот этот вот B cheer этап и соответственно они дожа его до 1 который вышел в пятнадцатом году по-моему да по-моему в пятнадцатом Вот и с того момента ра уже плюс-минус как бы под брендом мозила он начал развиваться как даже отдельный язык сейчас ра очень много где использует прям очень много где это здорово Я считаю Угу а с точки зрения давай так мозиллы и её планов вот этого переписывания Что даст этом преимущество Я так понимаю что это они как раз таки всё просрали смотри насколько я знаю Спайдер манки не переписан на раз но очень многие моменты которые в мази то есть очень много библиотек которые ты будешь использовать Там они где-то плюс-минус как-то пришли из мозилы то есть там ну к примеру какие-нибудь там да л шрифтов по-моему Ну ба нарах который написанный который леау текст который из текста делает сгку по факту Да достаёшь риф и так далее Вот и у тебя появляется свка которая потом проще отрисовать Уже на экране кстати очень много занимаюсь всякими СШ делами на ра именно редери и так далее Так что если и буду много примеров приводить по этому поводу всякие вот штуки типа сево который на Расте написаны новый движок на браузере это тоже из мозилы как бы пришло очень много таких маленьких вещей которые как бы саппорта изначально мозила а потом его как бы подхватило коммьюнити А насколько я знаю когда вот у мозилы начались проблемы с ну с вот этим вот когда там начались массивный лейф и так далее они они перестали активно спонсировать СТ но это уже был довольно такой блин как е зрелый язык программирования ну уже сейчас Мне кажется он вообще не аффилирован никак с мозилой там R Foundation у него свои проблемы есть но там у них денег я думаю достаточно ну я имел в виду что как бы понятно И ncap многое дал миру и оттуда забрали толь сам при этом умер то есть Мали в общем-то с бизнесом итоге Хотя понятно что все новые стоят на плечах гигантов это это ожидаемая стандартная история в принципе да то есть ну как бы Ну опять же кто-то должен делать Ты конечно бизнес бизнесмен знаешь вообще жёсткий Ну кто-то что должен делать инновации вот там я не знаю Ну вот этот мемасик Где вся инфраструктура стоит на маленьком кусочке который сделал какой-то чувак из небраски Да ну это правда так то есть кто-то то должен двигать мир вперёд Ну не то что должен так просто получилось они бы не хотели честно говоря согласен опять же я не уверен что смотри я абсолютно не уверен что проблемы фаер Фокса сильно связаны с растом да то есть не то чтобы они там бросили все ресурсы туда нет я например вообще хейтеров Фокса Как ни странно меня тут сейчас убьют у мой cto вообще жёсткий фанат мозилы и так далее вот Firefox и так далее а я их не люблю потому что у меня постоянно с ними проблемы возникают они постоянно ну м на вебе вот Ну я не знаю я не сильно люблю в этом копаться и так далее мне вот как бы я веб хочу написать и чтобы оно работало вот как в Хроме желательно Ой извини у меня тут прямо огромный паук ползает это это за мной мазила пришла Господи боже мой прям такой Понял прям вылезает с другой стороны ноутбука такой паук и мы с ним встретились взглядами Ладно Мне кажется что у них просто выбрали вот Такой путь скажем так открытого открытого исходного кода так бы они хотят делать правильно но в итоге то что от них ждут стандартные разработчики Такие как я сейчас которые хотят просто чтобы оно работало Они ждут Хрома и вот они недовольны потому что куча API просто не работают Мозиле Ну вот куча Ну просто они просто не работают Вот я люблю например делать всякие ГПУ в браузере до свидания там всякие F System вообще даже не спрашивайте вот и мне кажется что в принципе тут больше проблема не в том что мозила плохая в том что Chrome он просто захватил так рынок и я не знаю честно говоря Почему Честно говоря я не знаю почему что у них просто Ну вот как бы что бы они ни делали какой бы у них классный браузер быстрый бы не был но я не знаю Мне кажется что уже всё всё проиграно Хотя кто его знает Может я конечно не знаю А вот интересно да Ну перед тем как к языку переходить всё-таки А что с мозилой вот сейчас я фарфолле я вообще не понимаю Мне кажется у них бизнес вообще в чём-то другом сейчас нет Нет Есть Firefox конечно у них есть Firefox они его поддерживают Вполне себе так как у нас любите Ну мой Си Он очень большой фанат мозилы То есть у нас всё под Мозилу заточено очень много чего он пересадил весь камер Саппорт на Мазилу потому что там есть один extension прикольный типа контейнеры в браузере и типа он всех посадил на Мозилу у нас весь камер суппорт работает на фаерфоксе это Забавно и так далее ну то есть это как бы такое знаешь Ну что-то нише естественно Естественно что-то где-то отваливается Ну мы там тесты гоняем под под Firefox тоже ntn тесты чтобы проверять что всё Приложение работает в принципе это ну досягаемость это в принципе рабочий браузер те кто хочет свобод и так далее и не хотят там Chrome ну вполне себе могут использовать Firefox он поддерживается работает да Понятно Вот так вот Раз раз раз и сам по себе Окей давай переходим к языку собственно действительно используется много у меня многие знакомые по хардкору перешли на него им пишут и я наверное добавлю то что у тебя там специфика понятна она ближе там к видео Ну к тяжёлым вычислениям каким-то к браузерных каким-то вещам А у меня есть ещё по встречам вот с разными ребятами история такая то что инструментарий современный под сборку например фронт энда Ну вообще в целом современный весь инструментарий начинает просто переписываться массово на всех языках на раст это линтер это ну вот всё что касается девелопе экспириенс Всё что касается качества кода форматера линтер редакторы Да и так далее Всё это уходит вот в ростовую область и м Одна из таких интересных вещей была вот мы обсуждали в пайтоне там ты знаешь в пайтоне это Бесконечная история с пакетным менеджерами и со всем этим у них каждый год что-то Там новое всё тысячу разных вариантов ничего не работает и вот сейчас там захватывает всё uv по-моему называется и РУФ или Раф он читает я что-то ни разу не произносил его Это история про тоже вот эта вот вся экосистема связанная с пакетным менеджером с формате с нте со всем остальным и это прикольно то есть и получается соответственно там прирост в производительности просто какой-то колоссальный все получают и все радостно пишут я причём изначально когда на это смотрел я такой думаю блин ну а где мы столько То есть у меня в голове было представление всё-таки что ра ну всё-таки близко слишком к таким поскольку нет рбш колектора вот этот Борон мы сейчас про всё это будем разговаривать да я просто обознач мне казалось что всё-таки ну как-то это слишком перебор то есть кто будет потом поддерживать когда энтузиазм иссякнет это же слишком специфичный там язык все дела но во-первых тенденцию всё равно видно и она прямо усиливается То есть она не то что там значит на спад идёт наоборот всё больше и больше а во-вторых вот я сам чем сейчас больше на язык посматривал такой думаю блин этот язык например даже по сравнению с го на котором тоже самое пытаются писать иногда но всё же ростовые вещи как будто бы даже побеждать начинают раз как будто даже не то чтобы сложней го в этом смысле я так не считаю да и более того он явно интересней это уж точно да это это правда то есть опять же давай мы с собой отдельно вынесем вот эту кривую обучение потому что это очень любят обсуждать прямо раз это такой сложный язык Господи боже мой это там такая кривая обучение Боже мой я с этим абсолютно не согласен но я с тобой согласен в том что действительно раз то есть смотри вот возьмём какой-нибудь стандартный Я не знаю чего-нибудь Ну какой-нибудь вот какой-нибудь жава скриптовый бандлер да вот есть да На ра написанный ты там хардкора не увидишь то есть это будет 100 это вообще уникальный язык программирования в плане того что у него есть как бы отделённые блоки вот ском быша в основном код экс типа знаешь вот это а да Вот то есть ты как бы изолирует аутта вот ра тоже самое только ты изолирует и говоришь вот это вот типа такой uns плохой код Но мы его вот то есть например стандартная библиотека Она вся Ну вот типа Асей да то есть у тебя там поинте манипуляции и это очень Ну я вот например тоже пишу свой фреймворк сейчас для рендеринга видео У меня тоже там половина внутренних API Они все в Асей просто потому что ну я не знаю я по что там ассемблер называю Господи действительно у меня кусочек кода на ассемблере есть там э но основная идея в том что ты как бы для пользователя Ты вот от этого вот всего Асей мира от сиш нах вот этих страшных вещей изолировал и дальше ты оперирует очень понятными очень логичными концептами у ра есть много разных типов данных мы наверное тоже ты об этом спросишь скорее всего Вот Но для какого-нибудь JavaScript разработчика который из нед пришёл Никогда он не знал ни си ничего брать какой-нибудь зик или си ну это прямо не вариант Ну это будет там жесть это Это ты просто ну он просто с ума сойдёт А раз Вполне себе Он возьмёт себе там есть готовые парсеры для вот для для парсеров это вообще просто идеальный язык то есть когда тебе нужно что-то распарсить что-то куда-то сложить собрать там текстовые файлы у него действительно очень оптимизированная именно стандартная библиотека и именно там всякие креты вокруг Именно под эту задачу То есть когда ты начинаешь делать какой-то асинхронный раз которые мы вот например на работе тоже делаем веб к примеру вот там начинаются свои проблемы мы тоже можем об этом поговорить наверное отдельно потому что асинхронный раст - это прямо вот чертовщина иногда бывает прямо жёсткая и не очень эффективная но всё равно как бы когда вот ты изолируется в конкретный кусочек кода он может быть жёстко эффективным и абсолютно с точки зрения читабельность высокоуровневым это будет там не c+ Plus который это будет действительно хороший высокоуровневый код Я считаю что в этом наверное одна из самых больших ценностей расто для коммьюнити да да то есть вот когда ты говоришь по поводу сложно то кривое обучение и

высокоуровневый бэкграунд всякие ложи ланги динамические Там jav и так далее после этого ты конечно на это всё смотришь Ты такой о там почти паттерн матчинг о там вот смотри Почему почти там есть патр мачин Ну я имею в виду Да да почти Потому что я не знакомый я я боюсь говорить слова точно потому что сейчас меня за хейтят да то есть потому что для меня вот я визуально смотрю доку я такой о типа там паттерн матчинг и поэтому как бы для меня действительно я такой да блин раз как родной Я бы наверное сейчас сел и начал писать кроме вот этого Боинга и всего остального но я прекрасно понимаю людей которые Ну если он писал только например на дсе Конечно вот кривая обучение я понимаю почему для них будет сложновато но тут очень важно Вот это понимать это не та же самая кривая обучение что и ВХ то есть в этом смысле как бы Наоборот классно потому что Изучая раст вы как бы после этого ну и на функциональных языках вам легче будет писать да и вообще эти концепции понимать потому что их там довольно много л например да ты его в обычных языках редко увидишь это надо либо тянуть некоторые кстати так делают Руби сы любят знаешь резал например тянуть вот в тайпскрипт тоже в последнее время начинают любить это всё дело там какие-то модная библиотечка Для хендлинга ошибок появилась Я забыл как называется ну вот да Ну мы поскольку в Руби это проходили это никогда стримом не становится то есть появляется вот эта вот знаешь такая группа любителей функциональщики

Python проходил это Ruby проходил это многие языки проходили попытки строить на этом всю экосистему но она понимаешь слишком изолированная она мало с чем Джой и поэтому потом получается неприятно но проекты какие-то Да подобные всё равно появляются В общем раз в этом плане выглядит круто но у него всё-таки есть особенности которые очень важно разобрать да то есть отсутствие Garbage коллектора это не бесплатная фича то есть большинство языков она бесплатная для для для компьютера для тебя нет да да И вот да то есть поменялись всё равно на человека переложили Да мы получаем производительность Вот давай немножко поговорим про одну из самых сложных вот э концепций которая Я так подозреваю вообще уникальная То есть это именно инновация ста которая вокруг которой собственно всё и было построено потому что иначе он бы смысла наверное не имел Если бы не было вот этой штуки это заимствование да давай чуть-чуть об этом поговорим да давай я вот я я ходил вчера гулял и думал как бы мне потому что я вообще очень очень плохо объясняю поэтому ты меня сразу останавливай если я что-то куда-то в дебре уйду объясню на примере парсера это очень интересно очень важная тема м то есть смотри вот к примеру берёшь Ты какой-нибудь там я не знаю ну там Ruby или JavaScript допустим ты хочешь написать какой-нибудь Танай Для текста Должны мы объяснять что такое таки назер Ну короче ладно это ты проходишь по тексту и помешаешь какие у тебя конкретные кусочки кода Что значит То есть ты говоришь это там идентификатор это там что-то я не знаю что угодно Как какие угодно они могут быть как обычно это работает скрипте Ты к примеру идёшь по строчке и прямо куски подстроке Ты прямо копируешь и прям ну там создаёшь себе там массив вот этих токенов и говоришь вот там токен с с такой-то подстрокой он там имеет такое-то значение если ты паришься за перформанс Что ты будешь делать ты скажешь не так ты скажешь что токен начало позиции токена там например Пятая и длина токена Там 27 символов это вот здесь находится информация которая там так-то помечена по сути это есть заимствование с точки зрения компилятора то есть по факту ты вместо того чтобы копировать память постоянно а ты говоришь что мы можем позаимствовать кусочек памяти для конкретной переменной к примеру и сказать что вот эта переменная вот этот кусочек памяти имеет такое значение Но для того чтобы вот это кусочек памяти имел значение чтобы мы могли с ним работать нам нужно чтобы общий Да вот эта общая строчка Она всегда была доступна и вот раз по сути автоматизировал возможность отслеживать что вот эти вот отсылки в памяти Да они Валид и если ты просто это сделаешь на си Ты тоже можешь так сделать но если там ты освободишь вот эту внешнюю память а потом попытаешься воспользоваться идентификатором то прости у тебя будет там sec либо у тебя будет какой-то und beh в Расте у тебя это всё автоматизировано И если мы возьмём с точки зрение там Да есть много разных типов Вот например есть тип STR и есть тип это вот то что бывает людей зачем это сделано так вот как раз таки тип STR Да reference string это по факту всего лишь вот этот вот отсылка это слайс на кусочек текста То есть у тебя например если ты хочешь сделать текст у тебя будет вот этот вот эназер на раст ты говоришь у тебя есть строчка которая вот у тебя в памяти лежит да ты е там из файла считал запил неважно И потом Ты создаёшь просто массив очень-очень лёгких поинте по факту у которых всего два машинных слова это поинте и длина соответственно поинте - это начало текста длина - это длина вот этого

слайсинг верифицируемость

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

дропнуть освободить пока ты где-то ещё можешь воспользоваться вот этим вот слайсов что если у тебя вдруг То есть у тебя освобождение не происходит там не знаю по каким-то тикам или ещё как-то оно у тебя происходит явно когда видно что нету никаких слайсов оно у тебя происходит не тогда когда не видно что есть слайсы оно у тебя происходит довольно оден то есть когда у тебя есть блоки ну по факту У тебя есть функция Да у тебя внутри функции есть строчка если ты эту строчку никуда не отдал она у тебя дропнется в конце функции Что делает ра он тебе говорит то есть ты можешь например внутри функции Да внутри тела функции вызвать другую функцию и туда уже передать вот этот вот слай да то есть френс и раз тебе говорит что мы точно мы гарантируем что Это наверно тяжело объяснять без примера кода Но к примеру допустим у тебя есть функция Да ты выделил строчку внутри функции у тебя есть какой-нибудь другая функция Куда ты передаёшь слайс этой строчки и он тебе возвращает объект к примеру массив токенов Да массив вот этих токенов которые ссылаются на верхнюю строчку Ты хочешь вернуть этот массив токенов И раз тебе скажет а аа ты строчку выделил внутри этой функции мы её здесь дробни а ты хочешь вернуть референс на вот эту вот строчку внутри этой функции так нельзя пожалуйста вынеси эту строчку наверх либо там Ну придумай как это обойти чтобы у нас была возможность отследить это всё правильно и дропнуть её только тогда когда ты уже не хочешь пользоваться вот этими Вот массивом референсов вот вот это про это Ну да да это на самом деле очень понятная логичная так-то конструкция если подумать но на практике так ли это легко очевидно и логично потому что все говорили о том что ну это ломает мозг Потому что потому что Хороший вопрос а так как у нас сразу объясню Да я работаю в Компани я сейчас объясню то есть смотри идея В чём идея в том что люди капец Какие ленивые капец Какие ленивые у нас в компании мы нанимаем инженеров на Расте и мы все инженеры которых мы нанимали они все не знали ста Просто я это вижу какой бы хороший инженер не был первый твой итен работы вот с этим Баш колектором так вот попытаться с наскока это всё вот так вот и всё починил Да вот я не знаю там скопировал первый скопировал первый ответ думаешь про то что это происходит потому что ну вот это просто как бы ну это наша природа Мы хотим быстро решить эту проблему и многие Ну как бы попер это компилятор ские ошибки они бывают А такие ну Шила в заднице Блин вот тут не так вот тут не так И тут тебя всё не так и здесь тебе всё не так ну то есть когда ты начинаешь Вот именно то есть через какое-то время да это вот наверное то что является кривой обучение тебе нужно какое-то время поработать с вот этим рокером чтобы понять что тебя хотят То есть ты когда ты понял в чём о заключается ты потом там просканировал эту ошибку и ты уже понимаешь что тебе нужно сделать но когда ты первый раз с этим сталкиваешься начинаешь как обезьянка такой происходит вот в этот момент многие там начинают жаловаться на раз к примеру мне так кажется но по факту Да наверное какое-то время действительно тебе нужно чтобы привыкнуть к к этим ошибкам не то чтобы они сложно решаемые некоторые вообще там кстати есть такие ошибки которые вообще не решаемы это вот одна из самых больших тоже проблем Потому что ты такой-то ься сделать [музыка] опять вем нашему примеру У тебя есть строчка иты хочешь в структуру засунуть строчку которая будет как бы представлять собой То есть ты владеешь этой строчкой внутри структуры и сюда же в эту структуру положить Вектор токенов которые будут на эту строчку так называемый этого сделать Просто нельзя вот и ты можешь см

бывает в некоторых моментах костылями бывает в некоторых моментах это вообще не решаемо если ты начинаешь там работать с инками всякими то есть асинхронным растом там там свои проблемы и синк такой он в mvp состоянии Сейчас Поэтому у тебе всё приходится оборачивать в так называемые Smart поинте то есть поинте которые умеют сами знать когда им освободиться по сути reference coun то есть по сути какого-то типа горбаш Collection вот там в котлине насколько я знаю что-то похожее есть когда они бил са нативные То есть ты просто начинаешь Всё вокруг оборачивать в Arc и там например тоже в c+ Plus такие часто пользуются вещами и у тебя соответственно от вот этого вот Боро чекера не остаётся особо и пользы потому что ну у тебя всё по сути в ран тайме освобождается и можно этим начать злоупотреблять ты имеешь для синхронного Кода да можно можно начать это всё то есть у ра то есть естественно у ра есть Миллион всяких вот всяких тон то есть там действительно очень большая стандартная библиотека прям очень большая и у тебя например есть там всякие то есть раз во-первых как и ака к примеру это по дефолту всё у тебя иммутабельность

readonly да какая-то какая-то часть данных Ты когда знаешь что она ли ты можешь передать несколько rly там reference в разные функции и иметь их Да но ты не можешь передать несколько мутабельных функции потому что у тебя тогда начинаются конфликты То есть ты можешь это сделать естественно но там например несколько трев ты не можешь передать и так далее А это сложный момент Но есть например возможность это всё обойти и спрятать мутабельность внутри функции когда у тебя например рочер начинает ругаться на то что у тебя здесь мутабельный референс ты такой Окей Ладно пойду возьму сделаю внутренний refs Да это такой Тип который для компилятора наружи он выглядит Как read Only но по факту представляет собой мутабельность это бывает очень-очень полезно для некоторых вещей Особенно для публичных абиб тек но с точки зрения как бы эффективности и с точки зрения корректности выполнения кода естественно это всё не очень хорошо Угу знаешь что ещё подумал Понятно сколько раз перекладывает на человека думать а но нужно ли тебе то есть происходит ли из-за всего этого то что тебе нужно гораздо больше думать про вот все уровни стека вызовов с которым ты работаешь сейчас из-за того что у тебя есть вот это заимствование что тебе вот надо выносить выше для того чтобы она оставалась в памяти та же самая строчка или нет Нет я так не думаю ты обычно обычно копишь код Нет ты просто пишешь код когда ты столкнулся с этой проблемой ты начинаешь думать что куда вынести иногда компилятор прямо тебе говорит Сделай биндинг на эту переменную Ты просто там автофикс нажимаешь себе ВД Ешки оно Просто у тебя выносят там переменную куда куда ему хочется то есть Обычно нет Ты обычно пишешь код и думаешь про алгоритм Ну как бы как обычно я не думаю иногда с точки зрения А да вот когда ты Ты проектирует к примеру вот у меня к примеру Вот фреймворк который я делаю Frames для видео там очень интересный момент а то есть я изначально его пытался спроектировать так чтобы минимизировать вот эти Смарт поинте и я думал где в какой момент я буду читать вот медиафайлы к примеру Я хочу картинку считать Да за декоди чтобы я не прокиды эти Смарт поинте везде А где я считаю и как я буду делать свой а так чтобы у меня именно лайф таймами это всё прокиды чтобы у меня было меньше вот этой вот всяких всяких вещей но всё равно пришлось всё завернуть Да ладно Ну если ты да как бы на с точки зрения дизайна возможно но когда ты пишешь прикладной особенно код когда паттерн решён это вообще легко вот эта штука с заимствованиями В итоге сообщество что что вообще говорят про неё люди это следующий шаг - это действительно эволюция и всё такое или это просто вот некое ответвление которое Ну получилось и получилось со своими косяками где-то подходит где-то Нет надо всё равно дисциплину всё такое то есть вот если мы берём плюсы и берём Вот раз его вот этой вот системой что всё-таки и твоё мнение и мнение коммьюнити и будет ли что-то с этим дальше происходить очень Мне тяжело об этом думать с точки зрения коммьюнити Потому что люди абсолютно разные то есть смотри В какой пузырь ты попал так там и говорят действительно есть абсолютно разные компании разные люди которыми пользуются И если мы сравниваем c+ Plus Ну естественно Это лучше Ну естественно когда у тебя встроенный в компилятор bor Checker когда у тебя SA тузы встроенный прямо в компилятор и ты можешь их обойти когда тебе нужно пометить свой код какей который вот так вот нужно под лупой просматривать это действительно хорошо Ты можешь на c+ Plus навернуть миллиард сейф чекеров статических анализаторов

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

заимствован Они все такие жёсткие сиш неки и ассемблер сы Вот и когда я там делал доклад про раст и они такие все на меня такие смотрели Ну типа Боже мой что ты мне рассказываешь какой раст мне там поинте что мне нужной делать типа я вообще что что что это такое они такие смотрели на меня глаза закатывали а потом один вышел начал рассказывать как он придумал reference ced Pointer я такой А понятно Вот вы вот вы вот вы нашли дошли до эволюции Короче ребята ну да ладно вот то есть всё зависит от комьюнити дать этот язык например JavaScript разработчику он скажет вот это тяжело но зато какой перформанс это тоже эволюция то есть всё короче всё относительно Ну это понятно но в любом случае есть как бы разработчики которые языка определение дизайна То есть я имею в виду ты наверное не очень в курсе просто да что у них там внутри происходит на тему того как они на это смотрят и что они будут дальше с этим делать развивать оставить так же ты имеешь в виду именно внутри раз конечно оставят конечно Они будут развивать эту тему кор Ну я имею в виду Давай так я понимаю что оставят речь идёт скорее о том что они считают что оно дошло до точки когда Ну вот всё система такая какая она есть или они с течением времени СП тамм поняли что есть какие-то недостатки в дизайне или можно что-то сделать эффективнее лучше они будут рабо Ду чеке нет рочер именно с точки зрения дизайна он Станется таким же Я активно слежу за за расто выми дискуссия за rfc за пропо залами за их род мапа просто потому что ну это мой основной язык программирования я его много где использую я как бы сейчас пытаюсь сделать свой большой фреймворк Мне нужно знать куда он двигается и естественно нет они будут работать только над тем чтобы сделать его более понятным более лёгким для восприятия в плане того что там вот лайфтайм да у них есть отдельный синтаксис для того чтобы их описать и не всегда это бывает Понятно когда он тебе нужен Потому что у тебя к примеру его может не быть а потом тебе например добавь его сюда А когда у тебя появляется второй лайфтайм это вообще бывает редко но это бывает очень очень полезно Очень нужно и 95% ладно Глупо конечно мне из головы сказал цифру коммьюнити Вообще никогда не видела кода на расти с двумя лайфтайм то есть как это выглядит это выглядит как дженерик с апострофом то есть небольшая ссылочка как кам АЦ и ты можешь сказать что вот у меня есть несколько лайфтайм в этой функции и один лайфтайм обязательно должен пережить другой лайфтайм а третий должен пережить второй и это бывает очень полезно но в основном Это всегда когда ты это видишь это значит что что-то где-то написано неправильно и соответственно в первая твоя реакция это типа блин этот код неправильный И вот я трастовая блин Боже мой не могу сказать ростовчане команда именно команда разработчиков ста которые вот работают над растом они именно работают над тем чтобы сделать вот эти все ошибки максимально понятными для людей и максимально максимально легко фиксят только становиться легче с точки зрения с точки зрени Вот именно прикладного использования именно синхронном ра считаю что это уже в при довольно довольно не проблема кстати вот ты сказал по поводу вот ошибок того что будут париться Я вообще современные языки да Одна из таких тенденций которую я люблю она связана с тем что очень парится о Developer Experience и очень много Тулин уделяют внимание В современных языках да Для того чтобы люди не парились и Я так подозреваю что ра Вот чуть ли не на передовой находится Да в плане того насколько там Тулин изначально стали делать крутым Тулин - это да Тулин - это очень большая тема это одна из самых крутых преимуществ для там c+ + для для c+ Plus разработчиков потому что ну там приходит куча c+ плюсиков из Гугла А у них там свои вот эти Билд системы То есть как на гуглов проект не посмотришь там я не знаю на Chrome на sk на что угодно Ну боже Ну проклято Господи там что только не накручены у тебя Ну ты знаешь прикол Что для того чтобы Chrome собрать тебе нужен nots который использует V8 который который собирался в предыдущем сборке Хрома Господи боже мой То есть они там что какой там у них у Гугла проект свой Базель Да вот этот или я забыл как называется Короче вот а здесь у тебя есть уже готовая решение для пакетного менеджера для сборщика который поддерживает всё что хочешь иф comp и и воркспейс как бы ну то есть для Ман репозиториев вообще там вот всё что у тебя нужно для билдов оно у тебя есть из коробки естественно не без проблем но когда у тебя есть одна тул зови которая уже решает твою проблему Да вот эту вот тебе не нужно об этом думать ты одной командой установил зависимость ты одной командой установил сам раз ты одной командой обновил ты одной Командо установил себе прямо Ну вот то что мне кстати очень сильно нравится у тебя например ты хочешь установить новый компилятор новый Таргет для ста ты это всё устанавливаешь одной командой Или например компонент То есть ты там форматер у тебя тоже всё встроено в язык Ты просто установил себе форматер дефолт дефолтный ра расто вый форматер и ты об этом не думаешь lsp интеграция на R аналайзер он очень сильно вырос очень просто всё устанавливается в в вот в одну секунду и всё Вот именно что работает вот так как должно быть это очень здорово Не могу кстати не отметить несколько вещей про экосистему во-первых Я точно знаю что ust один из немногих языков вот я помню Swift когда Apple начал делать ust это ребята сразу приняли решение что мы не будем делать редакторы специальные и там поддержку в редакторах сами мы сделаем lsp а дальше Вставайте куда угодно и поэтому поддержка lsp в Расте насколько я помню Она изначально была Что называется First CL вот да Ну смотри там немножечко не так то есть как было был Был изначально lsp протокол отра который использовался который работал но потом пришёл один чувак сказал я сделаю лучше и он написал Rust аналайзер у него это как бы отдельная такая тузове как бы такой lsp и плюс ко всему туда на кручена просто Миллион всяких полезных вещей и раз со временем они запретили их собственную имплементация этого человека по-моему даже в команду и он у них нам на зарплате работает над этим рана лазером Вот кстати я могу здесь ошибаться не знаю точно знатоки расто Я знаю что вы здесь я знаю что что я всё Я знаю что вы уже там строчить свои комментарии да Ах как же меня триггернуло на прошлом выпуске Боже мой Господи твою мать нехай я имел в виду что дело не в самой имплементации Смысл в том что в любом случае это lsp да это это стандартная спецификация соответственно пожалуйста Бери ВИМ там что угодно Используй у тебя будет первоклассная поддержка всего этого добра второе просто не могу не отметить я так сказать с элементами популяризации Руби что человек который написал Карго это вот это вот пакетный менеджер всё остальное вообще Для этого пригласили ребята из Руби потому что был момент если да просто был такой момент когда в примерно в середине дся там 2010 какой-то самым крутым под рубе был написан практически самый крутой пакетный менеджер который назывался бандлер и бандлер настолько был удачный и настолько как бы классно его реализовали что на базе него было сделано просто огромное количество пакетных менеджеров в разных языках cocs New Get был сделан потом был yarn в Джесси сделан Это был сделано всё теми же самыми людьми их специально это Cats он ещё и у не послу список капец Это ко разработчик там у него только нет и в конечном итоге вот да да это легенда вот в этом плане его позвали собственно сделать Карго Ну и вот главный специалист по пакетным менеджерам сделал эту штуку Да блин Прикол вообще здоро зано можеш почитать японский След давай так это на японский След звучит как название документалки Так что в этом плане это для меня тоже внушает доверия Хорошо Давай мы сейчас немножко отвлеклись Давай снова тогда вернёмся в язык потому что в языке много всяких фишек Да которые интересно пообсуждали тем это работа с ошибками которую например тот же самый го очень много к нему вопроси ков по этому поводу А вот в расти это сделано совсем по-другому и сделано честно говоря так как мечтали бы многие вообще программисты было бы сделано в других языках туда это тащат в виде библиотек Мы уже об этом немножко с тобой говорили да давай в двух словах это обсудим Ну всё очень просто у тебя есть встроенный л тип А у тебя есть встроенный Ну смотри всё не без своих проблем есть везде свои нюансы то есть что такое Л это по факту У тебя есть инам то есть как бы в раз во-первых встроеный алгебраические типы данных к ним есть вопросики по emory леау потому что они довольно Ну если у тебя большие и намы они бывают частенько очень много памяти занимает Ну потому что их можно сделать эффективнее Ну да ладно это нормально в принципе там не сильно большие оверхеды Что такое это по сути инам где у тебя есть два варианта либо Окей либо а окей со значением либо эррор с ошибкой что то есть получается что любая любой API ста он возвращает вот этот то есть как бы в принципе у тебя есть два варианта ошибки Первый вариант - это паника которая всё это Dead это unwrap это то что вообще ни в коем случае нельзя допускать в продакшн коде потому что это там руинит твои треды и так далее То есть это Не ну это эт Походу это не это не совсем Exit там есть некие хуки есть авады и так далее но это всегда очень плохо то есть например там у нас к примеру имейлы не уходили потому что markdown пасер иногда паниковать а markdown парсер написан в библиотечку и в библиотечка этого вообще нельзя допускать то есть потому что у тебя просто крашится программа Да у тебя просто крашится по сути да и ты ээ можешь даже и может даже и ничего не залагивает

сделал поэтому очень важно всегда возвращать ошибку но тут возникает другой вопрос А какие тип ошибки Да потому что раз жеж строго типизированный язык Ты же не будешь строчку возвращать поэтому там придумывали много разных классных библиотек типа any и так далее которые позволяют тебе как бы абстрагироваться от вот этих вот типов ошибок вывести какой-то такой общее репрезентацию разного разных типов ошибок и потом уже собственно говоря их там логировать делать что с ними хочешь но очень многие проекты расти которые я видел Они забивают на это всё И у них начинается хаос потому что у них там своя своя имплементация типа ошибки на каждый на каждый под проект в Ворк спейсе потом это всё не мачи они пишут миллион конвертеров из одного типа ошибки в другой тип ошибки и начинается вот этот вот Madness А ещё хуже когда они начинают делать что-то типа Box Error Вот это вообще тоже интересный момент мы можем с тобой позже затронуть про динамические диспач и дженерики Мне кажется это тоже важно обсудить потому что очень классная штука но в этом конкретном случае это просто начинается очень такие ну сайд эффекты начинаются у тебя нет конкретных типов ошибок и так далее поэтому это действительно очень классно когда у тебя всегда есть доступ к ошибке ты всегда это можешь красиво замачивать То есть у ра есть специальный синтаксис для того чтобы ты вызвал функцию если ты поставил знак вопроса в конце и у тебя функция возвращает эррор то как бы у тебя компилятор сам за тебя сделает тамра И ты всегда знаешь что если эта функция что-то вернула то это там внутренний тип то что внутри собственно говоря поэтому работать и описывать там такие вещи как раз таки типа парсеров очень классно Потому что ты всегда знаешь что если у тебя ошибка какая-то есть ты просто везде ставишь этот знак вопроса и у тебя ошибки красиво так всплывают наверх Я то хотел про Control Flow сказать да это же как раз по сути оно есть у тебя управление идёт не за счёт какой-то внешней конструкции Да который управляет всем А у тебя просто вопросик поставил это на заметку с Как решаются проблемы типа В чём разница да потому что тоже же Казалось бы у тебя возврат идёт и ошибки и нормального значения но подход просто люди скрестили как бы функциональщики там-то своим видением и получилось видимо неплохо да то есть как минимум у тебя Всё достаточно должно быть компактно Да и последовательно без вот этих проверка проверка проверка проверка Те тебе это не нужно Ну конечно ты можешь делать всякие вещи типа например там и это тоже очень классная штука то есть можешь сказать если вот это внутри равняется вы функции сказать если у нас здесь нет ошибки сделай что-нибудь в другом случае например там Продолжи или там Верни что-то специальное То есть если ты хочешь обработать ошибку конкретно В этом моменте и вернуть например залить этот результат каким-то образом поэтому действительно очень удобно п с этим хоро связа можем сза в моём представлении но я тут явно не Эксперт но всё-таки после всех языков вот этот механизм обработки ошибок он вообще мне кажется самый лучший из того что я тоже с этим согласен Вот бегать Вот это по Стак рейсу с этими эксп это Господи боже мой Простите ни в коем случае не хочу это отвратительно с точки зрения перформанс и с точки зрения то есть вот к примеру в том же Акам у них как раз-таки то же самое у них вот абсолютно тот же самый Результат есть тип лта есть вся конструкции Для Для отлова ошибок но у них второй тип ошибки Вместо паники у них как раз таки эп который прыгает поста к рейсу так вот мне кажется что вот паника которая просто делает р Exit это даже лучше потому что когда ты начинаешь вот эти вот бесконечные трайке в непонятных местах перекидывать ошибки А ещё все обязательно начинают вокруг этого логику строить какую-то начинается такой вообще МДС Господи не хочу вообще даже об этом думать но забавно что вот Даже несмотря на его наличие говорил это приводит к тому что люди пилят там какие-то свои Да обёртки формат ошибок и пошло поехало то есть всё у тебя клеиться перестаёт из-за этого да это обратный эффект Да это кстати интересно то есть это такое вот человеческое хрен победишь Даже несмотря на то что Казалось бы ну да то есть как бы Есть ну это всегда такие моменты выскакивают То есть я не знаю Мне кажется что да всегда можно придумывать всяких моментов хороших Ну там начнутся начнутся проблемы в тех местах которых ты там Не ожидал это абсолютно нормально Вот мы сейчас с тобой Пока говорим мы замечаешь Да всё ближе и ближе к го подходим мы во-первых про него говорим во-вторых вот есть вещи как бы где там болит тут не болит как бы ты вот сравнил пото что в принципе есть вещи которые пишут и там и там

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

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

они не такие ну то есть есть свои проблемы и с фреймворка со всеми делами То есть у тебя может быть не настолько скажем так зрелая экосистема потому что многие вещи Ну типа http нпои на расти там есть очень классные большие классные фреймворки которые там самые быстрые в мире То есть если ты хочешь что-то супер супер супер высоконагруженные писать Ну я бы например брал бы Rust просто потому что ну го к примеру Ну у него рш колектор обязательно всегда по таймауту вызывается То есть ты никак Это ж не обойдёшь там по-моему в 2 минуты да Если я не ошибаюсь Если даже если у тебя там никаких локаций не происходило у тебя всё равно там будет Stop World и горбаш колектор вызове к примеру у тебя не настолько хороша вопрос Да если у тебя всё-таки в основном интенсивный АО и у тебя задача всё-таки максималь утилизировать ресурсы Ну на Расте Наверное это посложнее учитывая что в го есть у тебя каналы рутины и про тоже есть и каротины есть и всё что хочешь есть то есть у тебя есть и а треды и системные у тебя вот опять же да то что я говорил асинхронный std он находится в таком в mvp состоянии но в то же время есть вот большой пакет Токио который все используется то есть и ты можешь на нём написать очень высокоэффективные зелёные вот эти треды которые будут у тебя ээ меняться исполнение естественно ну на на на базе Катин и так далее будут утилизировать максимальное количество ресурсов машины у тебя будет асинхронный АО без libuv без ничего у тебя будет синхронный нативный АО написанный на на Расте всё у тебя будет работать в плане этого но естественно Возможно у тебя будет больше кода возможно но опять же я вообще мне вот код Наго прямо вообще не нравится Мне кажется что он не то что ну его неприятно читать ну лично для меня не знаю почему мне его почему-то не очень приятно с ним работать кидайте в меня тапками чем хотите не докини всё равно Ты отличный гость в подкасте Потому что ты рождае ого огонь в сердцах и в задниц у наших Ну то есть я бы с удовольствием был вместо вместо го да слу это прекрасные слова потому что ребята Напишите пожалуйста что вы про это думаете а я уверен просто Дима сейчас этот половина людей такие типа записали вот так вычёркиваем из спис смотрю но это прикольно потому что действительно какое мнение и как зависит от бэкграунда потому что я тоже вижу эту корреляцию между людьми которые там приверженцы функционального программирования нефункционального это такой один из самых ключевых подразделов Мне он тоже не нравится но я не в том чисто такое лично моё мнение но я прекрасно понимаю почему люди он нравится о НМ пишут но мне знаешь Интересно что в этом плане а считаешь ли Ты что ну в какой-то момент когда например раз Дора

сётю Наго при наличии ста Ну помимо поддержки legos причина всегда найдётся Господи причина всегда найдётся больше кода написано ногой и так далее я не знаю какие-то как говорится Медвед разработчики из Гугла будут с удовольствием ногой писать Ну естественно найдутся причины но опять же с точки зрения механики с точки зрения Ну опять же смотря с какой точки зрения мы пишем половина Веба написана на питоне Господи боже мой там ну как бы если с эффективности Не ну если ж так говорить там на PHP вообще почти всё написано так то Ну да PHP там я не знаю Ruby JavaScript и так далее То есть как бы людям это не сильно большой большая большая как бы разница у нас компьютеры такие быстрые настолько дешёвая инфраструктура что им наплевать То есть у нас к примеру весь наш продакшн крутится на у нас много сервисов у нас много разных сервисов которые там ну то есть я не знаю сколько там 10.000 Daily Active users к примеру и всё это крутится на на ресурсах меньших чем в айфончики в одном к примеру то есть вообще в принципе и всё прекрасно работает и перформанс утилизация Ну меньше чем там 40% то есть с точки зрения эффективности раст конечно Это один из самых классных языков потому что ну на си писать веб Ну я не знаю API вряд ли ты вообще будешь пока тебе сильно не надо а на Расте Почему нет потому что для тебя это выглядит как абсолютно сейф и если ты используешь хорошие библиотеки которые ничего там плохого под капотом не делают а они бывают делают что-то плохое под капотом для тебя это выглядит абсолютно Ну высокоуровневые это естественно это тоже абсолютно высокоуровневый код Потому что когда ты один паттерн уже решил Ну например у нас Гра API А когда ты уже решил один конкретный паттерн потом использовать это всё очень просто плюс ты можешь накрутить туда сверху Смарт поте Чтобы ещё проще ещё меньше проблем с Лайф таймами было И вообще тебе будет хорошо а утилизации ресурсов будет сильно меньше Понятно провокация не удалась вот А по поводу библиотек ты говоришь у меня знаешь какое мнение такое сложилось что это не так страшно Вот когда они там могут что-то Внутри там страшное делать в реальности если у тебя популярность доходит до определённого уровня то конечно комьюнити это вычищать тут можно быть можно быть спокойным Я просто очень хорошо Это тоже на примере рубишь най экосистемы заметил когда у тебя там по 5-6 сся старов сотни форкош просто такую супер живую активность Ты понимаешь что у тебя выгреба ется практически всё что там появляется его не остаётся и здесь я уверен будет тоже самое Тут знаешь есть ещё Я вот одна самая большая боль ра одна из самых больших болей - это копай таймы вот то что ты наверное не ожидаешь услышать но как бы самая большая проблема вот для нас как для компании К примеру это то что прямо всё очень-очень долго собирается именно на локальных машинах и так далее И в частности это всё может быть связано со всякими библиотечка которые Ну то есть у Ра какой бы классный бы там не был бы туринг но в некоторых моментах раз известен тем что он начинает там засирать все треды но когда у тебя очень много кода у тебя начинаются боттл неки всякие у тебя вот там есть прок макросы которые генерируют код который почему-то они не параллелям У тебя начнутся какие-то боттл неки и вот некоторые фреймворки которые вот мы используем junip для ля они просто там начинают таким быть жёстким бутылочным горлышком для того чтобы просто всё билди быстро и вот эти такие моменты в которых к примеру там у тебя библиотека в принципе работает но она просто не настолько зрелая то есть не так много людей пишут Гра ql на расти что там например там сабск в нашем конкретном случае мы не можем Заимка на сайте до сих пор не приходят там в реальном времени и так далее А есть другие альтернативы там есть например для обращения к базе данных есть дизель но у него там своих проблем полно То есть у него там ошибки я не знаю бывает То есть это очень такая зрелая библиотечка Она хорошая но у тебя бывает выпадет ошибка я не знаю текст но я не знаю Ну 2 Аче вот такие там там всё всё на системе типов построено риби но из-за того что у тебя эти все типы они генерируются у тебя там дженерик Ну я не знаю Ну символов 500 наверное и тебе говорят вот этот символов 500 дженерик не совпадает с другим символом 500 и ты сидишь такой и включаешь очень очень даже в gpt скармливание он Да даже gpt контекста не хватает чтобы что-то там выяснить Потому что ты просто сидишь и думаешь Ага что ж может пойти не так а и начинаешь экспериментировать как макака то сюда подвинул сюда что-то Ну короче вот такие вот такие моменты они бывают конечно противные иногда с точки зрения именно Ког когда пытается всё сделать очень эффективно на вот этих вот жёстких дженерика ра которые очень там очень классная система типов кстати очень выразительная и очень скажем так Power вот я Да хотел тебя спросить просто сказал что у тебя или мне послышалось полностью на типах построенный Давай сним немножко скриптом скаже риби тайп скрипта что он делает он каждый раз возвращает какой-нибудь новый объекти который ты мутируешь и что-то Туда добавляешь да то есть тут тоже самое но у тебя к примеру вся твоя схема Она изначально про типизировать же Смотри да то есть я уже Давненько не не видел м я слышал есть этот как его Дрил Да очень очень такая крутая Омка блин Слушай я даже не скажу наверное что-то похожее потому что в Расте То есть ты как бы каждый твой там движение ты например там говоришь Jo О у тебя например на типах проверяется что Join on там ты можешь с Джони с этой табличкой когда ты с Джони оно тебе автоматически знает что вот у тебя есть два типа и ты соответственно можешь все эти колонки собирать в новые структуры ты говоришь ло то есть Загрузи мне результаты и ты говоришь хочу там Вектор таких-то вот типов и эти все типы естественно у тебя в копай тайме проверятся и у тебя будет гарантировано что вот вот этот запрос он тебе сможет вернуть вот такой тип данных и за тебя Вот этот кри Билдер он всё это сам соберёт отправит запрос в базу данных распарсить то есть соответственно де сериализм тебе и всё это на жёстких таких дженерика написано и чем больше у тебя вот этого вот кода То есть когда там у тебя какая-нибудь не дай Бог пагинация начинается когда у тебя вот э вот всякая всякая такая чушь начинает лезть у тебя конечно возникают проблемы в плане того что ты например забыл одну колоночки указать в селекте А у тебя там тип например структура там ну полей 15 к примеру ты потому что ты за джол на табличках и он тебе начинает гигантский этот и ты такой сидишь и смотришь Угу А что ж могло пойти а вот я Селект забыл О'кей добавляешь селекцию нормально Но это конечно такой себе develop Experience как бы сказать есть другая Классная штука которая на прок макро то есть вот вообще в расти есть очень ну макросы типа в Лис повы То есть у тебя прям ты можешь прям токены принимаешь на вход и на выход То есть ты можешь например в Расте писать прям SQL а прям в SQ прям ты как бы ну такими вот типа лейт Лира вставляешь свои данные какие ты хочешь и он тебе в копай тайме выведет все эти типы создаст тебе там Тип который вернётся и вернёт его возможно было бы лучшим решением его использовать Но мы уже на дизеле сидим поэтому так у Слушай с макросами это интересно А как они визуально выглядят как они отличаются я к примеру Вот мой проект F Frames который 3 года никак не выйдет из бедки В чём его прикол а я хочу рендерить видео но ну как бы определять видео как бы которые ты когда редери его говоришь Я хочу рендерить фрейм номер там я не знаю какой угодно как это выглядит у тебя Как раньше выглядели компоненты Если ты помнишь классы и у тебя есть функция render которая возвращает GSX так вот в раст у меня это выглядит точно так же только у меня возвращает о на свг И что это значит что у меня просто пишется у меня пишется fes SG И потом я просто открываю скобочку и пишу туда Просто вот шуда ВГ когда мне нужно вставить какой-то динамический верил Я открываю вот эту Ну curly bracket Боже мой Господи и туда интерполяция ты имеешь чтото типа интерполяция Но это всё выглядит для тебя как будто ты просто пишешь ну jsx к примеру в языке программирования потом Как это работает под капотом у тебя запускается У тебя есть отдельная зависимость которая перед компиляции твоего проекта она запускается у тебя собирается как бы м отдельный отдельная библиотечка которая скармливают токены То есть у тебя просто Стрим токенов уходит в эту библиотечку и на выходе тебя получается другой Стрим токенов То есть ты пишешь свг а я в реальном времени То есть я написал Я написал свой компилятор я парсер для свг в расто вых прок макро Я получаю эти токены Я сам их Валиди сам выбрасываю ошибки где там например ну ты написал какой-нибудь Я не знаю жёсткий свг атрибут который я не поддерживаю я тебе прямо подсвечивают прямо кусочек места где у тебя ошибка сам собираю всё это из твоих из тех данных которые ты мне передал вот в этих вот в интерполяции собираю некий такой рендер 3 да применяю к нему оптимизации и на выходе в итоговой библиотечка в итоговом билде у тебя на выходе просто получается набор структур то есть вектор вектор типа НОД элементов свг Но для тебя это выглядит как просто как будто ты пишешь СГ вра естественно без своих проблем то есть естественно когда это отдельный язык то есть там например с форматированием проблемы бывают естественно там бывают какие-то вещи которые там что-то где-то не туда там ошибки но это всё конечно Фикси я там кстати вот создавал rfc вра меня послали в задницу чтобы отдельно плагин ками форматирование Заимка не надо нам такое Ну вот так да Ну в этом плане конечно макросы в Лис не переплюнет один хер что что не макрос всё это выглядит как обычный лисп Вот и поэтому всё это нормально структурируется и форматируется вообще без проблем Ну да да да у тебя там не такой проблемы Ну да то есть тут Тут даже наверное Ну опять же в раст есть и подобного типа ну то есть это может быть даже больше Zig compt Да у тебя похоже А но у рата есть вообще там очень большое количество просто встроенных функций во-первых У тебя есть конст контекст То есть у тебя есть контой то есть у тебя есть возможность выполнять вещи в копай тайме То есть ты можешь написать функцию констант ную функцию в раст которая будет просто выполняться в копай тайме если ты туда передал известную в compile Time значени То есть ты просто пишешь обычную функцию к примеру я вот написал тоже вещь для цветов То есть ты пишешь функцию цвет там Color hax Да ты говоришь и это у тебя константная функция которая если ты туда в Литерал передал она тебе за иланит компилятором и будет просто значение цвета А если ты туда передал какое-то значение которое тебе пришло там из из откуда-то из мира то она вызове у тебя в ранта знаешь что интересно вообще вот когда тоже слушаешь об этом разговариваешь что вот го что раст А если мы берём там 10-15 лет назад у тебя ооп паттерны ладно даже Господи 20 лет назад девяностые Да у тебя там жить без этого невозможно очень важно смотрите нет Оп Нет архитектуры это и есть модульность Господи как же поменялась риторика сейчас вообще таких слов не Да но это удивительно у меня просто слов нету насколько вот всё это чистая конъюнктура которая никакого отношения к реальности не имеет Потому что ты такой смотришь и думаешь не прибегают люди и не кричат типа А где у вас тут нет до сих пор есть вот эти слова что оп - это всё очень важно но при этом ты вот пишешь на Расте Да мы с тобой это даже не обсуждаем а там естественно нету никакой инкапсуляции в этом смысле у тебя функции и данные не объеди у тебя ту отдельно поведение отдельно да соответственно нет некого внутреннего скрытого состояния это очень классно что ты это спросил это действительно так но здесь же кроется одна из проблем то есть трейты в Расте это ну по факту интерфейсы но ну ну Трейд отличаются от интерфейсов тем что ты можешь их имплементировать для других интерфейсов Ну типа того Так вот это очень классная вещь Я поэтому был очень в один момент такой эсай по этому поводу потому что я терпеть не могу когда начинают это приходить рассказывать что сод - это важно что там Боже мой я всегда я такой не просто до свидания давай покажи мне сод я не знаю вот большинство кода который важный в этом мире который действительно решает огромное количество проблем это абсолютно другого рода код это код плохой для Вот таких людей ну как бы ладно это уже мои такие заморочки так вот у ра есть вот эти Трейд и соответственно у тебя есть как бы структуры и ты добавляешь к ним поведение То есть у тебя вотт Трейд который не именованный то есть ты просто например говоришь что я вот на этой структуре могу вызвать такой-то метод в какой-то степене это есть инкапсуляция то есть ты немножко прибивается гвоздями к структуре Но идея В чём у меня была такая идея А могу ли я к примеру когда я только начинал сра Могу ли я вот как в Акам к примеру Я раньше делал отдельно задефать

к этому типу на уровне там я не знаю какой-нибудь сериализации проба добавить своё поведение сюда на уровне там я не знаю инпутов аутпут добавить своё поведение в этом месте и ты так сделать к сожалению не можешь потому что у тебя две проблемы первая проблема Это то что во-первых ты не можешь имплементировать трейты для неких трестов базы данных ты не можешь сказать что я хочу вот Вот для этого типа добавить поведение Ты должен создать новый тип так называемый паттен New Type вра То есть ты говоришь у тебя может быть просто тип у которого всего лишь один аргумент это другой Тип и ему уже добавлять своё поведение О'кей с этим можно в принципе бороться но тут есть вторая проблема что все фреймворки заставляют тебя прибивать гвоздями к типам данных меня это я это терпеть не могу То есть как это выглядит это выглядит так ты говоришь у меня есть некая структура в том же например базе данных и эта структура ты сверху добавляешь по сути атрибут который является неким прок макро То есть это тоже штука которая потом тебе в compile тайме что-то из вот этого вот дефиниции твоей структуры сделает например другую имплементации и она уже на эту на твою структуру добавляет там например рейны там к э таблице начинает в копай тайме проверять что у тебя там типы совпадают все и так далее Но это же заставляет тебя прибивать гвоздями к типам данных и соответственно у тебя тоже начинаются вот эти вот проб с переписываем если Особенно ты вот работаешь в вебе и так далее У тебя начи с этими вот переконвертировать в другие вот эти вот Проклятые дто не дай бог и так далее Ну да Но идея самого языка она в том чтобы как раз-таки вот не прибивать гвоздями то есть не классы все ПЛЮСПЛЮС А у нас всё-таки раздельное поведение и мы можем для любого типа данных в теории добавить поведение и они работают скажем так над новым м для трейдов потому что это тоже довольно тяжёлая проблема к примеру это тоже одна из больших проблем ста у тебя может быть Breaking change появится в любом месте я могу это потом затронуть Но по идее в том что у тебя эти Трейд появится новый Трейд резольвер который упростит эту задачу Я не знаю точно будет ли это но возможно ты сможешь сказать что я Внутри там Ворк спейса хочу добавлять вот функциональность сюда Я знаю что я делаю и вот я могу например разделить наконец-то вот эти вот мухи атлеты и жить лучшей жизнью Угу я знаешь я понял что в какой-то момент а то что ты говоришь мне нужно видеть потому что у меня такое мне Ээ как надо представлять было самому Давай я попробую уточнить правильно я понял или нет Или вообще есть это или нет то есть когда мы говорим про вот опш нае фишки Да понятно Я понял что на трейты Ты можешь повесить Как ты можешь повесить Трейд на какую-то структуру получить типа методов Да но у тебя при этом стейт всё равно не скрытый у тебя нету скрытого стейта у тебя структура она вот Чётко и в этом плане кстати просто уточню на самом деле само по себе это не является М что вот прямо оп появилось объясню э для наших зрителей и слушателей А есть такое понятие unified function Call Да ты его знаешь это из Нима А прикольная штука когда у тебя фактически примерно то же самое ты можешь вызывать это как бы функции ты можешь вызывать это как метод и фактически Это всего лишь синтаксический сахар а вызова просто функции над этой штукой там три варианта вызова Есть третий он такой как в рубе выглядит и как в баше когда у тебя просто пробел и аргументы идут Там нет скобок ничего такого вот и в этом смысле если там нет никакого другого поведения то это можно рассматривать просто тупо как синтаксическую конструкцию чисто сахарную она она имеет знаешь в каком случае смысл То есть можно про это говорить уже ни как не про сахар А как про некую семантику когда у тебя появляется Саб тайпинг То есть когда у тебя ты можешь вызывать один и тот же метод но при этом у тебя имплементация метода зависит от того типа с которым ты работаешь и соответственно это как бы то есть есть параметрический полиморфизм это дженерики да А есть просто полиморфизм он собственно называется и Саб тайпинг вот правильно я понял что Трейд - это в итоге-то такая механика она нет давай так может это вообще с трейдом не будет связано короче можно ли реализовать Саб тайпинг вот

можно и через через трейты короче во-первых дженерики в Рас - это очень очень мощная тема есть их как бы ну вот то есть как это работает у тебя есть Трей допустим у тебя есть Трей к примеру да то есть это очень там очень классный фреймворк для сериализации данных что ты можешь сказать я для любого типа который удовлетворяет Trade Я добавляю значение такое-то то есть я могу добавить свой метод для типа который удовлетворяет или для любого типа который удовлетворяет к примеру и является C То есть он ну то есть это то что вот мы говорили имеет возможность передаться Как по стеку как референс это очень такая скажем так большая тема врасти потому что именно это позволяет на уровне системы типов выражать очень такие genic абстракции То есть ты можешь сказать что не прибивать как раз таки гвоздями к типам а именно сказать что я вот например могу для любого типа который удовлетворяет не неком категориям добавить дополнительную функциональность это очень-очень полезная вещь но в то же время у тебя скрытых состояний никаких их нет ты всегда знаешь что ты ты можешь вызывать только вот методы вот этого внутреннего типа но у тебя может быть как бы вот э функциональность она может быть немножко непрозрачной добавляться к каким-то методам потому что это у тебя как бы дополнительно как бы из ниоткуда приходит Ну скажем так давай попробую всё-таки конкретизировать потому что я боюсь может быть либо я тебя недопонял либо Мы немножко про разные вещи вот да Давай предположим пример что у тебя есть скажем так окей сериализация да и у тебя сериализация скажем для разных структур устроена по-разному да то есть у тебя может быть такое что фактически ты реализует Трейд - это же не имплементация это Это собственно интерфейс который ты потом ИМП под конкретную структуру или не он может То есть ты можешь иметь тип Трей А можешь иметь имплементации то есть именно вот именно genic имплементация для всех типов которые удовлетворяют Ну это параметрический полиморфизм да то есть это у тебя как бы всё равно некая единая логика которая соответственно ко всем применяется А вот именно сатан Саб тайпинг - это как раз у тебя скажем функция которая говорит сериализовать Да и туда попадает структура которую например ты там релизу но смысл в том что непосредственно функция сериализации Да вот как в у нас ВП у тебя зависит от конкретного там грубо говоря класса вот в таком случае у тебя получается имплементации много но при этом их все можно передать в в одну функцию и вызвать так как будто это одна функция Да там сей Ну понимаешь там у тебя внутри должен быть диспетчеризация по типу происходить И вот я не очень понимаю насколько это возможно потому что диспетчеризация по типу требует в ран

тайме понимаешь для этого тебе не нужно наследование тебе Для этого ну это короче это классический полиморфизм который в оп называется полиморфизмом да то есть когда у тебя Ты вызываешь у давай так тебе на вход попадает некий объект в функцию ты у него вызываешь например там сий ну и ты понимаешь что реализация зависит от класса То есть у тебя там в памяти происходит динамическая диспетчеризация У тебя есть виртуальная таблица или или кстати прототипы в жесе Да и так далее которые собственно решают А что будет вызвано вот ели это в расти и Если есть у тебя получается в ран тайме должна быть динамический выбор методов а соответственно у тебя в ран тайме в памяти должен виртуальные таблички храниться да Это хороший вопрос и это очень красиво решено в расти вот то что я говорил Ещё давно что в расти есть два типа дженериков вот это первый Тип дженериков который я описал Действительно это именно на уровне типов То есть у тебя по факту то что я только что описывал у тебя в итоговом там да В ассемблере это будет просто там пять функций если ты вызвал их с пятью типами внутри своей бирочки но это невозможно с делать в одном случае невозможно использовать если у тебя есть например массив типов которым тебе нужно Ну это в принципе невозможно то есть c+ + та же самая проблема О не хотели бы от этого уйти но когда тебе нужно Ну у тебя там я не знаю грубо говоря есть Animal Cat Dog Да тебе нужен массив животных тебе нужно как-то их абстрагировать и соответственно потом тебе нужно иметь Вот именно ту вот ту ту динамическую то что ты говорил V Table чтобы они поили конкретные методы имплементации внутри конкретных структур потому что вот то что я как раз-таки говорил serializable да у тебя может быть много разных serializable элементов внутри массива Как это работает в расти они очень красиво это решили вместо того чтобы делать эту динамическую пеза в ран тайме как в том же Go как в том же c+ Plus у тебя по факту создаётся структура где у тебя есть как бы э Просто набор фанкшн пов в Расте это всё генерируется в копай тайме и у тебя в статической бинарник у тебя уже лежат все вот эти тейбл для Всех элементов для всех вот этих вот динами трейдов которые ты используешь То есть это называется ты говоришь я хочу динамический Трейд там serializable и в этом случае создаст тебе для всех типов которые туда запихивают которые ты туда запихивает в эту конкретную структуру vtable и это всё будет вызываться в в ран тайме естественно но через статическую через статически выделенный vtable что действительно очень круто и это гораздо быстрее Ну с точки зрения в принципе тебе не нужно тратить время на то чтобы создать эти все тейбл ВМ тайме выделять память и так далее прикольно то есть получается у тебя сразу в памяти размещается под это место и всё заполняется всем этим добром для всей программы сразу ну статической то есть прямо вот в в Дета сек интересно какой там объём может занимать вот эта вся история раз известен тем что они не парятся насчёт размера бинарник То есть у них они вообще не парятся то есть я тебе так скажу в моём фреймворке для ста Я что сделал Я сделал вообще забавную вещь а так как у меня есть доступ к копай тайму я подумал а почему бы мне не сделать так чтобы мой компилятор за меня как бы верифицировать что конкретные медиафайлы доступны То есть я хочу картинку иметь но я точно всегда знаю что там ну к примеру у меня граун аудио Да в моём там подкасте к примеру есть которая лупи Почему бы не взять и не засунуть это аудио уже законное Прямо себе в бинарник бинарки всё равно огромные по 200 МБ Я беру просто я просто имею возможность Например у себя во фреймворке просто там например какой-то Ну понятное дело что гигабайтов аудио не буде Ну там 10 Мб аудио ты просто берёшь ложишь себе прямо в бинарник и потом у тебя компилятор всегда знает что аудио доступно ты не тратишь время на то чтобы в ран тайме его каждый раз декоди когда Ты запускаешь эту программу и вообще живёшь прекрасно потому что у тебя ещё есть всегда ты точно знаешь что у тебя это аудио доступно тебе не нужно хедли ошибку если там аудио нет и так далее вот А почему это возможно потому что в принципе в расовом мире никто не парится за за размер би Нарни то есть наш наши резные бинарки Я не знаю там может быть гигабайта весят на все сервисы это Ну да прикольно интересно как это соотносится с тем что ust везде можно запускать и везде работать если у тебя бинарник такого размера или это Ну опять же бинарник это не 500 не один бинарник 500 ГБ У тебя много разных бинарник То есть у раж из-за копай таймов то есть вот почему ты в Расте пишешь микросервисы вообще не потому что ты фанат микросервисов а просто потому что у тебя в копай тайме просто просто ну у тебя не сбил дется огромнейший Монолит вот у тебя просто машине не не хватит места у нас такое было проблемы Что у нас просто на C места не хватало памяти не хватало чтобы сбил там конкретные машины потому что у раз вообще очень он много очень генерирует то есть очень много генерирует временных таких сущностей то есть там есть специальные либы которые генерируются чтобы потом эти все чтобы разные этапы фазы компилятора прошли вот эти верификацию броу чекера типизацию из-за этого кстати в Расте бывают очень

что-то упало на каком-то одном этапе Но фиксить ты должен его на другом этапе ты начинаешь думать о том что вот Ой вот я сюда пойду Вот сейчас вот здесь начинаешь играться с этим починил Это здесь а потом оказалось что проблема там совершенно в другом месте и если бы ты починил Если бы ты изначально знал бы это всё Ты бы к примеру пошёл бы там поменял бы здесь Тип и вот это всё бы ты не занимался бы этой ерундой это часто сейчас так придумать пример сложновато Но это часто происходит и другая проблема вот ну к примеру за за недельку работы у меня Таргет фолдер раз это 500 Гб на жёстком диске на эсд Нике нодов ские ноде модули там даже рядом не стояли Обалдеть Вот это стати для меня открытие вообще Вот вот где дыра оказывается Слушай раз мы начали уже этот по недостаткам его идти Давай сейчас мы прямо вот тогда эту тему займём единственное сразу тебя спрошу Какой самый большой проект на Расте вообще в мире раст сам на себе написа Вот это хороший вопрос да Ну вот расто вый компилятор довольно большой проект естественно неизвестно то есть Возможно есть какие-то большие Ну я не знаю Ну вот у нас там э по-моему 4 млн строчек кода нарасти не знаю много Ну ного нормально 4 млн вот этого суровые ребята но это же не в рамках одного проекта то есть там много независимых вещей Ну конечно да разные там и ED и все дела там то есть разные естественно у тебя на ED у тебя немножко всё такое за заблок далее О'кей тогда поехали дальше по недостаткам ты уже частично описал их кстати честно тебе скажу вот у меня как у человека такое абсолютно со стороны нейтральное отношение к расту Да оно ли реально благодаря тому Вот что ты говоришь оно такое немножко меняется у меня такой немножко в одну сторону потом во вторую ты такой чуть эти больше я такой Так а ну вот тут вот нет а вот тут да А вот тут Нет нельзя фанатеть нельзя фанатеть с языков программирования надо их утилизировать Ну раз прикольне Ну раз прикольный язык То есть он он в принципе могло бы быть всё сильно хуже могло бы быть всё сильно хуже то есть с этими проблемами можно бороться То есть к примеру Ну вот у нас сейчас мы то есть я вообще фанат своего макбука Я очень сильно его в в хост и гриву использую и так далее но на работе Мы там покупаем за 900 долларов машину которая сервер есть для людей которые пользуются ими и в принципе ну там можно найти такую хорошую конфигурацию сейчас чтобы в одном треде у тебя был хороший перформанс и в принципе работать в принципе комфортно Если ты знаешь что ты делаешь но опять же это всё у нас большой очень проект когда ты у тебя маленький проекти Ну вот у меня там есть маленький проекти типа блендера штучка для поиска Bluetooth устройств на в терминале То есть ты в терминале запускаешь и он тебе список Bluetooth устройств находит там например ты можешь зубную щётку посмотреть сколько у тебя заряда через терминал Ну весело короче вот и я его написал в частности для эмбе Потому что когда у тебя большой МШ ble это бывает с этим проблемы и вот этот проект он билдит Ну за секунд 10 я не знаю То есть это такой довольно легковесный проекти То есть это там терминал UI естественно но когда это всё начинает скели когда у тебя много разных фреймворков много разных в копай тайме много чего происходит когда генерации вот эти прок макро да начинается пробле но опять же если для людей которые об этом не думают для людей которые уже там не делают Там миллионы долларов на таких проектов Это не проблема вообще а там инкрементальная компиляция ведь да да Ну слава Богу Ну опять же не всегда её можно Ну то есть да карга известен тем что о не изначально всё проектировали под инкрементальный компиляцию но к сожалению иногда бывает Вот именно из-за этого ble Ne То есть у тебя Ну там грубо говоря Бывает такое что у тебя один крейт билди два раза чтобы положить его в бинарки Ну из-за там такого вот цирку зависимости который не обойти вот такое бывает тоже но опять же Это только когда у тебя уже такой скел проект И когда ты начинаешь уже с этим страдать и ты начинаешь уже даже инженеринг время выделять чтобы там например оптимизировать бел таймы просто потому что по-другому ну уже просто ну невозможно Угу Окей А что по дизайну языка вот самого по дизайну языка гадости ты имеешь в виду Да хочешь гадости послушать Да что пошло не ну потому что вот мы пого общались там хватает что обсуждать но у них обрат там же супер Тай ограниченный язык который все хотят расширить а здесь уже достаточно расширенный язык который возможно хотят ограничить или может быть наоборот смотри очень много чего в Расте хотят добавить то есть очень много чего нестабильного то есть там очень много вещей которые Ну типа к примеру там вот то что всё что связано с асинхронной в расти очень много чего в таком вот в подвешенном состоянии висит наме только недавно можно сделать асинхронные трейты до этого ты использовал специальный макрос который ты как бы в compile таме тебе генерировать два типа методов один асинхронный второй не синхронный и асинхронный возвращал тебе такую страшную конструкцию Pin Box I A F Future короче вот такой вот гигантские конструкции которые потом вылазили тебе боками иногда то есть там очень много нестабильных штук с копай таймами очень много синтаксических конструкций которые хотят добавить там типа Let El То есть ты ну к примеру сейчас вот в раст невозможно написать типа м очень многие любят типа паттерн матчинг да допустим вот ты знаешь пл Да и FL Ок что-то вы ЗАО функции обработал результат Окей но else ты туда не можешь переписать вот это вот например тоже сюда добавляется они очень хотят очень много чего хотят поменять с точки зрения лайфтайм потому что многие жалуются и в принципе вот это вот такой синтаксический как это описывается не всем Понятно Потому что синтаксический лайфтайм - это просто АЦ и не всегда это ну не все с этим согласны что это очень Ну что это хороший вариант в плане в плане понимания кода возможно то есть Я видел несколько пропо залов на то чтобы поменять полностью семантику не знаю будет ли это работаеть Но вот как бы семантически бывает не очень понятно потому что там вот как бы тебе нужно всегда знать

вот тут вот а вот тут вот это возможно есть какой-то лучший вариант это описать То есть я там видел несколько про полов по другим моментам ну латай выглядит серьёзно остальное Кстати то что ты говоришь в основном как косметика скорее такие типа вот ки Ну да с точки зрения Прям такого чтобы вот прям людям прям было плохо то есть я такого многие нери Боже мой рути только не хватало Ой какие дженерики Боже мой генератор чтобы можно было дить несколько раз из функции вот этого Многие хотят и прям типа что вот ну там есть итераторы в расти Но многим не хватает то есть типа когда ты начинаешь работать с очень за генерали Зро итератора у тебя начинаются такие проблемы типа дескать у тебя огромнейший типы в плане того что там у тебя к примеру ты хочешь принять на вход там итератор который будет genic имплементировать extens для генератора Господи что со мной не так для итератора у тебя начинаются там такие жёсткие жёсткие огромные дженерики которые тебе нужно принимать у тебя довольно много име стейта с генераторами это было бы проще вот Многие хотят этого ну в принципе и очень Многие хотят лучшего саппорта синка потому что у ра асинхронные Эти как его ранта это всё всегда Third Party cre то есть нет нативного нативной поддержки какой-то стандартной и естественно каждая вот эта вот онтайм у него есть свои такие вот свои проблемки небольшие и ты конечно можешь выбрать какую получше но они все такие типа Ах Возможно они заимку Но это неточно вот Но в основном они Таргет Вот раз 2024 roadmap если открыть они в основном Таргет на более лёгкое использование языка более понятные ошибки и более лёгкие синтаксические конструкции плюс стабилизацию API там например тот же 7D то что мы говорили в прошлом выпуске много да то есть то что позволяет тебе параллельный код на процессоре писать в Расте это нестабильный API он требует там nightly А это ну с точки зрения там к примеру тот же там жава скриптовый парсер Да можно на 7D написать Или там какие-нибудь картиночки Да вообще самое простое то есть преобразование картинок на это там ну там 16ф просто себе спокойно сделаешь или там 10 Хорошо давай поговорим о том как вообще по миру идёт раст то есть вот я понимаю что ты знаком с Тай мировой ареной вот не русскоязычный и скажи в этом плане сколько работы Растёт ли она что по зарплатам куда вообще всё идт это Хороший вопрос Я с этим бы не то чтобы я когда-то и на ра она меня сама нашла я посмотрел сейчас Ну естественно вакансии меньше чем на на на реакте Господи на на чём угодно Наго Наверное тоже я вот что-то не обратил внимание когда сравнивал то есть естественно вакансий меньше Но почему это так связано потому что я уверен что компании то что я вот был на конференциях расто вых в основном компании используют раст не как свой основной язык то есть у них там к примеру написано там код на Java основной да Или на чём угодно а какую-то часть которая performance based они написали на раст и вот они пришли там на конференцию рассказывать об этом я там слушал конференцию какой-то такси что-то Там они всё у них всё на Джаве А вот именно логистический маршрутом поиска по графа они написали на Расте потому что у них была проблема с этим или там всякие вот там тот же npm к примеру насколько я знаю У них именно работа с вот этой отдачей текста на их серверах тоже написана на Расте то есть потому что у них очень большая нагрузка с этим связана чтобы с эффективно это работать поэтому поэто Мне кажется что особо не хайят именно пря ра инженеров то есть Харт именно инженеров которые потом как-то приходят в то есть РАУ чтобы то есть ну у нас например тоже к пример мы нигде не пишем ра инженер у нас Хари там да по стандартному фагов скому принципу просто Soft Да и потом уже раз там типа будет плюсом Но вот все кто к нам все кого мы захари вообще сраз никогда не работали пришли Просто там вот ну к примеру там в него в Катились очень быстро Поэтому с этой точки зрения ust - это всё ещё нишевая тема Мне кажется потому что есть конечно прям есть там Rust Remote Jobs website есть там можно поискать они есть и есть там большие хорошие там всякие э вот я помню что были два момента которые я видел первый момент был T Wind Они искали себе именно раст инженера зачем-то не помню зачем но по-моему искали именно раст инженера и там по-моему 500.000 долларов Зарплата была и второй момент я видел ещё raycast они хайри раст инженеров это такая штучка для Мака популярная Ну если кто на Маке си скорее всего пользуется Вот они тоже хайри себе раст инженера чтобы использовать ust то есть они вообще на Mac таргетировать всегда на свифте всё писали а они хотят на другие платформы уйти поэтому им нужен человек который там вынесет всё это в переиспользование код там напишет там лоу-левел нае вещи потому что это такая вот в бэкграундер вещь И это в принципе раз очень популярный именно в тех темах которые Ну вот именно парсеры всякие гуны Application вот в гуи Я думаю что вообще тема должна очень хорошо зайти потому что ну в принципе сейчас нет хороших нативных языков которые предоставляют тебе из коробки хороший экспириенс написание нативных приложений и мне кажется что ust может занять эту нишу потому что там у тебя хороший перформанс и хорошая работа с ГПУ у тебя там есть абстрактные там имплементации wgpu это Web GP которая кроссплатформенная можно и вулкан использовать и что угодно для графики очень часто ра использую там в тоже в том же моём проекте для работы с видео с аудио а то есть во всех моментах его можно где-то использовать в лоу-левел нах так вообще очень хорошо и в mbd потому Ну вот например я не знаю я точно знаю что вот м например компания которую я имею Инсайт они очень большие разработчики софта для микроволновок и у них всё на расе написано Так что возможно У вас есть микроволновка которая вот это вот то что вот у вас там текст нарисова ется Когда вы программу выбираете на расти работает уже с точки зрения харинга Вот наверное всё-таки посложнее чем в других языках Угу знаешь хотел при этом Вот про мерко новский сказал всё-таки А ну там что вот Я когда себе Ремонт делал и покупал технику для кухни для меня был шоком просто это было 2 года назад примерно для меня было шоком что я не могу купить технику без вай-фая Я просто не я хотел знаешь по какому приду Я думаю ну я не хочу вот это всё потому что она ломаться будет пользоваться Я всё равно не буду в конечном итоге я понял что я такое не найду я купил всё с вай-фаем и у меня микроволновка сейчас же вот вот этот хо эппловский Да там всё подгибается почти но не всё на самом деле у меня всё равно в итоге там LG и все остальные короче свои софти я понаставили и это было очень смешно когда у меня микроволновка там дзынь жена там ставит что-нибудь разогреться у меня выскакивает на телефоне что микроволновка закончилась крутиться такой Нахрена мне это надо ты подожди Скоро они всё ai везде будут пихать GP будет тебе говорить У тебя там что у тебя подгорел сырочек на твоём бутерброде Останови есть такая штука А знаешь у меня какой вопрос Вот как ты думаешь А кстати хотел сори добавлю ещё Game de вообще как думаешь пойдёт в сторону ра Фух Это очень хороший вопрос не знаю не знаю не знаю я точно знаю некоторые вещи которые я например использую то есть вот я с свг много работаю как я уже упоминал и есть Очень интересный проект который тесли ИТ свг сложные слова но по факту всё очень просто компьютеры графика умеют генерировать маленькие треугольники Ну полигоны да а свг - это у тебя пути да то есть это у тебя такие кривые или там даже текст или что угодно Так вот вот эта штука она умеет ливать пути и создавать из путей треугольники для для по сути для видеокарт и вот она очень активно используется в некоторых больших игровых проектах и интересно потому что таких альтернатив Нет в принципе то есть Вот например там текст нарисовать нужно вот использовать вот этот вот L насколько я знаю плюс есть очень интересные движки игровые и физические движки тоже написанные на Расте вот есть там большой игровой движок B называется который тоже много Где используется Конкретно где я не знаю потому что далёко от ame Дева Но вот гдето используется я там общался с его создателем очень интересно В принципе я думаю что Вполне очень легко он может залететь в Game de но я не уверен не знаю все же вот эти ан на c+ по-моему написано извините да Ну да да да дари Unity и такой наверно последний вопрос как думаешь Вот если объективно а не потому как сейчас всё в мире существует Есть ли смысл на c+ Plus вот когда есть раст Конечно есть Конечно есть то есть смотри Ой боже я столько всего столько всего хочу ещё обсудить А ты уже убегаешь от меня Короче ладно Конечно есть Ну во-первых ffi в Расте конечно он есть он присутствует но это всегда ты как бы ну то есть раст его вся идеология в том что мы как бы завер от вот этого вот мира Асей и вот этого вот всего и будем как бы жить в своём хорошем сейфовой мире писать расто вый код но из-за этого у тебя эффорт для написания вот этого Асей кода она гораздо больше И большинство коммьюнити никогда его не писало То есть я вот например работаю с ФМ пего тоже метени к примеру биндинг для пега Ну у пега Это ж все лайка но у них внутри есть много сиш их библиотек для работы с кросс платформи Ну для с разными кодеками и так далее вот мы теним эту штуку и не очень многие в принципе ну то есть это во-первых иногда бывает попаболь потому что тебе нужно генерировать эти все нги Ну ладно это не проблема тут прикол в том что немногие в принципе с этим работают то есть по факту у тебя большинство Ира структуры написано на си и тебе нужно как-то с этим взаимодействовать и как бы Когда у тебя какой-нибудь зик к примеру который Асей по дефолту там гораздо проще работать с вот этими Вот шми библиотечка потому что у тебя там чуть ли не прямой вызов любой функции тебе не нужно дополнительно это всё заворачивать в этот вот сейфовый мир у тебя меньше как бы ответственности потому что ну к примеру человек который пишет код нараз использует мой фреймворк для рендеринга видео последнее что он ожидает увидеть это Сиф Но человек который на запускает код Наверное он готов к ситу то есть в этом отношении конечно наверное имеет смысл c+ Plus к примеру тот же c+ я считаю что Ну это такая вещь которая должна мне кажется опять же накидайте в меня всяких гадостей в комментариях но мне кажется что это уже такой небольшой пережиток прошлого Особенно с тем что они там на вернули в третьей версии Боже мой как же это всё страшно выглядит и я не знаю там такой там такой странный синтаксис то есть там раз рядом не стоял они туда очень много чего пихают пихают пихают пихают Ну логотип c+ Plus сам по себе за себя говорит поэтому то что пишется сейчас на c+ Plus особенно плюс-минус более-менее прикладное оно мне кажется обязано уйти то есть ну ну все плюс плюс есть большие козыри типа там qt вот это вот всякие там ске и так далее То есть я к примеру в F Frames интегрируя со скей через то есть с c+ плюсны миром но там тоже свои проблемы потому что с c+ плюсны миром ты можешь только через C общаться и у тебя начинаются вот эти вот короче ну конечно Legacy ещё будет долго жить но новые проекты Я думаю особенно там на eded которые позволяют тебе там нуно std с разными локатора с разными всякими подходами к к ограничиваю вот этих вот потенциальных проблем Мне кажется что ра очень очень очень очень большие проблемы решает в этом отноше из за долгий спич отличный финальный спич Да я представляю Дим сколько тебя изнутри прёт Я даже знаеш тако представляю как закончится наш созо ты будешь сказать Так я ещё вот это не сказал я ещё вот это не сказал я ещё вот тут вот вотт ну собери оставь обязательно Заходи ко мне в канал этот пообсуждали по что ребята 100% будут писать сейчас придут всякие разные Да Большое тебе спасибо за то что ты пришёл ребят если вам понравился выпуск обязательно ставьте лайки подписывайтесь на канал пишите тёплые слова Диме если вам выпуск не понравился вы Категорически не согласны И хотите нам об этом сказать ставьте обязательно дизлайк И пишите в комментариях мы будем вместе смотреть и я отвечу я приду не знаю я прям вот я не знаю знаешь я что-то отвык от этого всего но меня так триггернуло в под прошлым выпуском Боже мой я пря я прям сдерживался от того чтобы Гадости не написать Вот такой вот я плохой человек ладно да да не это согласен э тяжело когда ты давно с этим не сталкиваешься я-то постоянно поскольку пишу видео очень хорошо это знаю и Ну что называется толстая кожа уже выработана но да это разница конечно чувствуется когда вот приходят поправляют всё такое но в любом случае пишите на самом деле это говорит о том что вас это торкает Это вас вам важно вы в чём-то разбираетесь и нам всегда приятно обсудить А бог всем судья Как говорится Вот и сейчас есть вообще история про то что банит YouTube А поэтому возможно в какой-то момент выпуски будут чаще то есть мы Я всегда выкладываю их Везде они есть на всех площадках это YouTube там ВКонтакте Zen и всё остальное смотрите а и плюс аудиоформат почему-то кстати Для всех это всегда новость что в аудио он выпускается но он есть в аудио есть в описании видео всегда ссылка на сервис на который вы можете подписаться Через что хотите это Spotify Яндекс музыка и все остальные сервисы там которых я не знаю сотня наверное везде подкаст выкладывается и вы можете его слушать если вам так удобнее Всем спасибо всем пока пока-пока

[музыка]

Creators and Guests

Дмитрий Коваленко
Guest
Дмитрий Коваленко
Опенсорс контрибьютор в проекты как ffmpeg/cypress/material-ui. Разработчик фулл-тайм на раст. Пишу код на ассемблере. Работаю с медиа.
#29 Rust: зачем выбирать этот язык в 2025 году?  | Дмитрий Коваленко
Broadcast by