#27 Руби против всех: язык, который пережил свою эпоху и вернулся сильнее | Владимир Дементьев | Организованное программирование
Привет друзья с вами ведущий подкаста организованная программирования Кирилл Мокевнин сегодня мы поговорим про руби с Владимиром Деменьтьевым который является контрибьютор в Rails и является ведущим разработчиком в компании злы Марси которую Кстати я надеюсь раньше многие знали и сейчас надеюсь тоже Многие знают Привет привет для значение потому что это один из основных языков на которых в принципе я как разработчик писал довольно много посвятил свою знаешь жизни вообще не только Руби но и популяризации этого языка и кое-что даже сделал в России для этого вот и конечно для меня этот выпуск в этом смысле немножко особенный где-то может немножко поностальгировать и рассказать о том что происходит с ним прямо сейчас потому что очевидно там интерес к языку и пик его популярности прошёл спойлер это происходит со всеми языками и у многих в головах сложилось впечатление что язык как бы типа всё он там сходит на нет и совсем уходит как например произошло с плом вот пл Да он там остался только в Legacy по сути ничего нового не происходит здесь мы хотим сказать что с Руби Это совершенно не так да он как бы не находится на том пике на котором он был но он переживает в том числе сейчас свою так сказать вторую жизнь Судя по тому что ты написал в тезисах и Я так подозреваю мы сейчас затронем Да И мы хотим этот подкаст сделать как бы и для тех кто в России в принципе пишет на мы говорим о том что вообще происходит какие-то изменения и так далее и конечно же для тех кто вообще в целом этим интересуется или вообще хочет узнать А что происходит о том что там всё бурлит там много чего происходит куда-то Всё движется и вот Вова как человек который к этому очень близок про всё это расскажет хо Что греха таить я все праздники в общем-то сидел и переписывал наш код Basic проект на инерцию соответственно я так сказать полон понимаешь впечатлений то есть мы даже сейчас с тобой закончим и я пойду собственно снова дописывать потому что я ещё этого не успел доделать поэтому можно сказать что последние 10 дней у меня были прямо на кончиках пальцев все
рубишь в рубе в йс - Это серьёзная штука Я в рубе как мы уже перед подкастом обсудили ворвался скажем так в сообщество когда Кирилл уже вышел Да в каком-то смысле я зацепил немножко Вот это предыдущее поколение на самом деле на нём на нём получил вот это вдохновение Погружение в язык в экосистему кайф от этого на самом деле Да это первый язык который я вот выучил пятый по счёту Но первый который наверное Ну может быть второй от которого я начал получать удовольствие при программировании я ненавидел до этого писать код Вот первый язык был Лан Но с ним было сложно куда-то пробиться на самом деле вот а Руби открыл новые возможности и новые ощущения скажем так это было где-то 11-12 лет назад ты сказал Да я контрибьютор и наверное сейчас я в принципе почти fulltime Open Source разработчик я себя называю уже последние наверное пару лет потому что большая часть кода которые я пишу это действительно код в Open Source я редко работаю на коммерческих проектах только в качестве консультанта и поддерживаю свои проекты контрибьютор
многими компаниями людьми и требуют большого количества как бы внимания к ises по request и прочему вот и как он разработчик я соответственно пишу статьи вот книгу недавно Да написал выступаю на конференциях Так что занимаюсь В каком-то смысле просветительской деятельности как внутри Руби так и снаружи Потому что моё желание сделать так чтобы разработчикам те которые уже используют ру было ещё более кайфово от этого А тем которые ещё не используют задумались и всё-таки посмотрели в эту сторону а не обращали внимание на вот это вот нытьё в интернете что какой Руби вы что типа там 20 какой там пятый уже год А вы ещ там Руби он же умер уже 10 лет назад ребят вот чтото совсем не так конечно но поэтому надо об этом немножко рассказывать говорить и делиться тем что с одной стороны знаешь Иногда думаю да ну и пишите на своём там не знаю не буду называть другие языки О'кей а а я буду получать удовольствие от своей работы получать как бы кайф просто от того что я программист а не просто перекладывать иль байтов и как это
удовлетворительная Но это я сейчас уже сильно далеко назад отмотал типа на 20 лет Ну ты Поделись вот ты говоришь книжку написал Да ну сейчас уже в позапрошлом году у меня вышла книга на английском языке Она изначально написана на английском там стоит если видно не знаю Design В общем такое интересное название я её называю по-русски слоистые рельсы Вот но официально она сейчас буквально вот выходит в данный момент на рус русскоязычном нке проро приложений R Rails слой за слоем Но идея книги в том книга про архитектуру Rails приложение вообще веб приложение на самом деле она применима Ну в принципе к любому На мой взгляд о том как внедрять абстракции выделять абстракции вообще думать в абстракция скажем так в твоём коде чтобы он остался поддержим и так далее некоторая такая рефлексия на собственно на годы работы над множеством R проектов которые в основном в виду некоторое специфики на самом деле фреймворка со временем превращаются в довольно сложно поддерживаемые кодовые кодового монстра в книге я рассказываю как бы идеологию с которой стоит подходить к проекту на ре Чтобы избежать вот этого вот превращения Во что-то что хочется выкинуть и переписать на раз знаешь я тебе что хочу сказать Вот ребят кто сейчас нас слушает если поставьте там знаю плюсики лайки и напишите в комментариях потому что мне эта тема супер близка и если будет интерес Я бы предложил знаешь отдельно встретиться и прямо поговорить про это то есть не без привязки к Rails Ну или с минимум привязки к Rails но в целом про архитектуру именно на Вот таких типовых mvc фреймворка Да кэндо вых потому что это офигенная тема Я просто всю свою жизнь этим увлекался и даже Кстати у меня такая знаешь Грешная мысль в главе возникла они знаком ли ты с моими подходами которые я довольно много пропагандировал и возможно ты как-то про это думал когда писал книжку нет безусловно на самом деле особенно мне кажется вот на ранних моих этапах какое-то увлечение вот этим вот абстракция назовём так рес как бы я как математик вообще очень люблю всякие абстрактные вещи вот знаешь когда можно что-то описать без привязки там какой-то реализации библиотеки там системе вот и это меня как-то затянуло и я я познакомился с с рельсами в классическом виде Да там mvc модели контроллеры вхи всё погнали на этом всём пишем вот как завещал а потом я сходил как раз на какие-то конференции начал читать какие-то там собственно ресурсы в том числе очевидно твои Потому что ты много об этом собственно писал и продолжаешь в принципе писать и я понял что О блин а можно вообще короче выйти за пределы там контроллеров моделей добавить что-то ещё Да и я начал собственно сразу практиковаться в этом У меня была такая возможность Да был стартап котором я работал на котором я собственно начинал на рельсах и я много по экспериментировал с различными паттернами Да паттерны проектирования я вообще не знал что это такое до того как я пришёл в мис на самом деле я такой самоучка который в университете прогуливал программировании поэтому я вот вообще про это ничего не знал на тот момент а потом я узнал да В первую очередь это тогда были русскоязычные ресурсы ты мне ещ в голову приходит Ваня нитченко который много на конференциях тоже рассказывал очень похожие темы тогда и собственно злые Марсиане которые тогда тоже к ним ходил в гости за знаниями тогда И потом я начал это всё применять и мне это кайфовала потом этот проект превратился в монстра собственно и следующие 5 лет на других проектах я
рефлексирование Классно Хорошо они нужны они важны но их просто так нельзя добавить паттерны и сделать кого-то лучше то есть вот помимо этого должна быть какая-то ещё за этим стоять история скажем так часто специфичная для конкретного проекта поэтому я пишу что абстракцию нужно не внедрять а выделять из того что уже есть И вот в этом самая сложность собственно это просто Забавно то что сказал про Ваню потому что говоришь вы похожие штуки говорили А ты знаешь да что он начинал писать книжку дадада и если там зайти и почитать описание она как раз написано что эта книга базируется на идеях хекслет и того что мы сделали то есть я очень ждал что он её закончил К сожалению закончил потому что по факту это была Вот То есть фактически книжка моих идей в его изложени и получается я те говорю мне супер интересно с тобой об этом поговорить потому что это вот как раз Прям ух Моя тема и я думаю мы можем прям классно это обсудить и какие-то вещи сделать Окей это это мы с тобой Да это мы запомним потому что в этом плане ты идеальный для меня человек пото что мы будем на одном прям языке разговаривать второе что я хотел спросить ты просто сказал у меня несколько проектов прям коротко скажи то есть типа крупные проекты это какие Ага Ну смотри самый крупный у меня проект называется по-простому если говорить что это такой сот сервер хотя там не только веб сокеты realtime сервер производительный который позволяет вынести как бы из основного приложения из вашего Кэн даже если там всю логику связанную с работой в реальном времени там чаты нотификации и прочее коллаборация Ну в отдельную сущность которая обладает помимо этого всякими дополнительными свойствами там типа гарантия доставки там всякие история presence и так далее То есть это если говорить наверное большинство из людей знакомы там не знаю pusher да как какая-то платформа вот херовая но платформа вот которая популярна Да что мы там подключились по сокета и начали ка слать обновление в браузер вот есть там А есть Open sce решение наиболее близкое там Это наверно центрифуга Но идея в том что это сервис Независимый от языка Он позволяет вынести всю логику связанную с сокетами поддержку и так далее из вашего приложения написаного в общем-то на ЧМ угодно jav нане на и уе коммуникации см через rpc сложные слова пошли Не ну нормально у нас технический подкаст меня всегда мой партнёр так сказать по ругает на такой внутренний стартап сейчас марсиана вдвоём Я по технической части бизнес парт Она же ругается слова RC говорит как только Я произношу когда-нибудь рассказы человек чается Като слоя хбо это м поднимаешь сервер к нему подключаются клиенты по высоки там шлёшь апдейты и сервер гарантирует доставку всякие там штуки надо об этом думать ты работаешь с как бы персистентные подключения в парадигме такого запрос ответа привычного В общем любому разработчику веб приложений ему не надо думать о том а что делать что если клиент переподключиться если их много там вот это вот всё Сервер это всё в себе ин капсулит Ну и даёт хорошую производительность при этом масштабирование всё такое Он написан на го это главный осор проект написан не на Руби вот Он написан на го там ему тоже уже будет 9 лет блин в этом году вот много-много кода много поколений уже версий вот АНО вышел он как плагин к рельсам при этом изначально позиционировать его там в своё время на ЛС Клабе в 2016 году Это было как бы Моё домашнее задание от злых марсиан придумать доклад на rils Club такое было наказание для новичков знаешь дедовщина такая можно сказать я был первый год в марсиана там и мне сказали Слушай сегодня в этом году ро CL Мы обязательно должны там выступить Но все старички уже не хотят поэтому все новички придумывают темы короче подавай вот я придумал эту тему Ну не то чтобы из головы она в каком-то видео у меня уже была до этого вот но придумало с название какая-то идеология и вот из вот этой вот добровольно принудительной истории с клабом получился довольно серьёзный проект который сейчас уже не только Open Source У нас есть коммерческая версия про Я знаю что мы растём типа в два раза кажды год но это не миллионы конечно но в целом у нас там уже наверное полсотни таких постоянных клиентов они не отваливаются они пользуются запустили недавно ну год назад уже получается как бы облако но облако бесплатное Ну только с бесплатным тарифом с небольшим просто для как бы по помощи людям которые хотят попробовать и в целом как бы такой внутренний стартап у нас получился из Open Source проекта в марсиана и он у меня довольно такой занимает много времени вот знаешь хотел добавить вот эта вот модель когда делается какой-то открытый проект на базе него существует коммерческая поддержка версия и так далее да это фактически сейчас э модель которая существовала конечно же давно Но как будто сейчас она бум переживает потому что огромное количество появляется таких проектах я их вижу просто какое-то бесконечное количество И я такой Блин вот что-то случилось то есть это начало активно проявляться и знаешь что интересно это с точки зрения ещё и разработчиков Мне кажется невероятно крутая вещь Потому что ты участвуешь как бы в орсе при этом это реальная коммерция то есть короче все плюсы в одном Я думаю на эту тему как будто бы надо отдельный подкаст делать Да потому что это очень интересная тема согласен да если коротко давай мы этим очень Сильно активно занимаемся в марсиана собственно и сейчас наш профиль как консалтинга Да мы консалтинг разработку продуктовую скажем для других людей наш профиль - это develop Tools так называемый То есть это на самом деле проекты которые делают софт для разработчиков и он почти всегда Ну там половина из этого это как раз таки Open Core это называется либо вот Open Source based и так далее И это всё очень сильно развивается в последние наверное пару лет именно бум вот этих вот проектов для разработчиков в сфере IT их сейчас Их Стало ещё больше потому что как бы первый потребитель всех ai историй - Это опять же разработчик сейчас по крайней мере на данном этапе и то же самое касается просто Open То есть это именно связано с тем что фокус сместился с сказа конского рынка в каком-то смысле Да разработки на рынок тех кто разрабатывает да о такая уже рекурсия пошла Вот и поэтому Да коммерческий Open Source Developer Tools вот эта вся история Она очень сильно бурлит и собственно мы вот как пытаемся в ней быть на самом острее и собственно этим занимаемся сейчас так что да Это довольно большая тема Она крутая ещё тем Да я потому что ещё помню много лет назад Вот мы на конференциях тоже сталкивались с ребятами Вот например Андрей Аксёнов который сфинкс разрабатывал подробно вот эту вообще модель рассказывал и я тогда прям мне очень сильно это зашло потому что это один из немногих примеров когда Рядовой разработчик Может начать зарабатывать не просто там второй работой парт тайма менторинг и так далее а действительно построить бизнес с минимальным таким вот классическим маркетингом Да который разработчики не любят и как правило не очень понимают где ты просто делаешь классную опенсорс ную историю на базе которой потом ты делаешь эту штуку То есть даже сейчас когда туда ввалил много денег до сих пор да когда ты активный разработчик Вот я прям что-то пилю Я прямо вижу Блин вот такой штуки не хватает вот такой штуки не хватает И тут можно было бы и там можно было бы да И это всё если это увидеть можно Вполне себе что-нибудь на этом намутить Да я согласен значит возвращаясь немножко к рубе хотел сказать закончить эту мысль про коммерческий Open Source у нас на самом деле один из наверное в принципе даже мировых успешных проектов коммерческих осор самых это сайдкик сайдкик - это менеджер фоновых задач для ру То есть это как бы библиотека изначально которая просто позволяет вам какой-то код из основного треда веб-приложения Да выбросить в фоновый процесс который подхватит из очереди и выполнит вроде как бы ничего сложного Но изначально Это был Open Source проект потом вот Майк Перм его зовут автора Он начал делать какие-то коммерческие версии консалтинг тоже на самом деле на фоне этого и в итоге сакик сейчас несмотря на изменения там которые в рельсе там грядут и уже происходят которых мы наверное поговорим через минуту Сай kck всё ещё остаётся главным инструментом и я много вижу там по работе проектов на Rails я вижу что примерно 80% из них работают либо на Pro либо на Enterprise версии Я сейчас не знаю чем они отличаются кроме цены но суть в том что очень много людей там Пусть 100 долларов в год или там не ну не 100т это загнул 1.000 по-моему минимально там стоит А платят майку и я помню что где-то типа лет пять назад Это был прямо перед ковидом по-моему он первый раз опубликовал свой финансовый отчёт и это было ещё на самом деле задолго Да вот этой вот бума тузов что вот типа Я зарабатываю там У меня прибыль миллион в год как бы с сайт Кика как бы с продаж там лицензий и и консалтинга Вау просто чувак то есть не компания Да не инвестор Да он он один человек это компания с одного человека Да и я тогда подумал о ни хрена себе как бы при этом Ну там много заложено скорее опыта и мудрости я бы сказал В проект нежели какого-то ноу-хау кода который как раз основан на том что он он ещё и консультировал людей собственно В каком-то смысле наш называется похожим образом потому что мы как консалтинг работаем с разными клиентами и знаем какие конкретно у них проблемы поэтому мы можем их и в Open Source сделать и сразу ну чтобы все как бы получили решение а какие-то супер сложные вещи мы добавляем в про потому что мы знаем что это нужно там условно трём компаниям в мире и эти три компании в мире наверное могут заплатить Вот то есть такая как бы логика Но это помогает то есть вот эта вот комбинация консалтинга он сорса она мне кажется так или иначе у любого разработчика она будет рождать вот это вот коммерческое решение какое-то которое можно будет просто упаковать и продавать это шикарная просто Тема вот этот сайт помнишь ru Dead Dead так ли это или не так и вот если прям может быть на цифрах статистика аналитика проекты популярность что ты можешь сказать по этому поводу Да ну прям каких-то готовых цифр я не готовил я могу сказать по каким-то факторам можно наверно сказать что не ну не МТВ наверно и так понятно Да у нас есть крупные игроки язык развивается релизы каждый год фреймворки релиз то есть что такое Мёртвый язык Мёртвый язык Мне кажется прежде всего в котором угасает
активность людей которые входят в сообщество которые что-то производят новое Да кстати интересная мысль сейчас вот сходу возникло в голове про МРТ вообще языка и экосистемы гдето пару лет назад автор языка Руби который по-прежнему является главным будем говорить диктатором языка он сам себя так называет потому что в принципе все решения по-прежнему проходят через него несмотря на там огромную Корти Ну основные ключевые какие-то вот он сказал очень важную фразу что язык который не развивается нума вается о умирает то есть Смерть - это именно отсутствие развития поэтому критерию конечно никакого смерти не в Руни в экосистеме у намного нового развивается причём Ну хорошими темпами последние там лет пять был Мне кажется где-то за период застоя как раз вот когда появлялось вот это вот всё R is dead Rails Dead это вот ну лет уже наверное примерно пару лет до ковида это началось вот где-то Двадцатый девятнадцатый год наверно вот пик Нижняя точка Когда было отчаяние даже внутри Рубика сообщества что блин Мы кажется правда умираем что-то ничего не происходит Вот но потом и со стороны языка и со стороны там экосистемы пошли какие-то серьёзные вещи там ну в Руби там 27 релиз был очень мощный по развитию языка например да это был такой пред релиз перед третьим мажорных релизом где было много экспериментальных вещей добавлено там например паттен мачин завезли в Руби он не такой как в эликси прям скажем так по крайней мере с точки зрения того как он работает но близко в целом там нету метод овелон или диспач ещ это называется Да вот это вот это то чего всё ещё я например жду когда мы это всё сделаем в рубе Вот Но тем не менее язык получил какой-то прям новый набор фишек которые надо сказать старыми Рустами воспринимались в штыки скорее новыми энтузиастами воспринимались с интересом и как бы сейчас уже я вижу что это повсеместно используется Да там спустя 5 лет вот произошёл вот этот вот как это оттолкнулись от дна в принципе ИС последние годы я бы сказал скорее есть рост интерес и и понятно к рельсам Да потому что это довольно мало Отт делимые вещи и В чём это проявляется в нескольких факторах Да если по цифрам говорить например количество конференций например возьмём да Или каких-то мероприятий
метапонт например их я Ну точно не схожу Но это было несколько десятков по всему миру больших конференций и это больше чем там за всю историю моего участия в сообщества даже в доковидный там период там даже шестнадцатый год То есть это как бы практически Мне кажется на уровне то что я по крайней мере знаю по историческим каким-то справкам там вот десятилетней давности когда Руби был в топе и рельсы были в топе и конференции Да это не просто конфы какие-то это именно Руби конференции где половина контента как правило не связана с рельсами напрямую другой пример - это компании которые новые стартуют но здесь вот опять же ввиду какой-то профессиональной деятельности мы много общаемся с стартапами в Штатах в долине в основном и есть Ну по сравнению опять же там с 5 лет назад заметное количество компаний которые начинают не просто Они продолжают Как там shopify github который тоже Нельзя списывать со счетов это огромные компании в которых Руби всё ещё сердце как бы их технологического стека А в shif там больше чем сердце Вот и они очень сильно вкладываются в общем-то в экосистему но есть молодые компании которые с нуля начинают писать проекты на Руби стартапы получают Там первые инвестиции свои и их Ну визуально по крайней мере становится больше вот последние опять же года и самая интересная история в этих стартапах когда приходят люди вот у нас один знакомый стартап есть w.com какой-то marketplace Digital короче что-то для молодёжи Я не знаю что это ты вряд ли тоже слышал там продают какие-то онлайн курсы что-то Ну такое как бы странное Вот Но это такой довольно большой проект очень классно развивающийся его сделали там трое ребят им там 20 плюс лет Они совсем молодые Короче они вышли там с какого-то колледжа они писали до этого на жава скрипте тайп скрипте там сервер L и всё такое и даже пытались это делать на нём у них ничего не получилось они кто-то им рассказал про рельсы они такие О ни хрена себе вот можно было вот так вот всё быстро делать короче и типа без вот там не знаю оркестрация миллиона сервисов и в итоге Это довольно такой большой проект сейчас по крайней мере в местном мире который вот супер свежий написан как бы осознанно выбран ресы в качестве стека и они ну неплохо развиваются если оторваться от Rails тоже из наших знакомых есть компания UB cloud.com Они как раз кстати частично Open Source у них как бы Open Cor наверно назвать модель есть есть Open Source прое и на его базе облако чтото что-то Но типа по-другому немножко есть платформа для развёртывания приложений Вот они его пилят тоже на ру но они пилят не на рельсах они Пит на роде это другой фрево от Джереми эванса довольно известного же разработчика он написал много классных вещей вот собственно такая так сказать для
тоже есть и как бы выбран он опять же в пользу производительности потому что рельсы не самые там если смотреть бенчмарки производительный фреймворк Да вот но ru не рельсовые фреймворки они на самом деле сейчас очень хороши вот и это происходит И это какая-то тоже такая новая тенденция она пока ещё тоже не остановилась То есть это как бы это не второе рождение там ну Многие говорят там Ренессанс ru Rails Ну блин ну я бы не сказал что это Ренессанс Это просто как скорее стабилизация был взрывной рост Понятно после взрывного роста всегда есть какое-то падение это невозможно как бы оставаться всё время на пике Вот это падение остановилось и дальше мы отскочим не знаю на Плато не на Плато но на какую-то стабильную историю что есть и разработчики и ресурсы и компании которые используют rubi и в целом мне кажется сейчас опять же там с виду новых релизов которые вот вышли там в прошлом году есть понятное позиционирование когда людям надо использовать там Руби и рейсы как если они там выбирают стек для своего проекта это снова как бы мне кажется Сейчас вот с этой историей донести до аудитории Зачем вообще рельсы там в двадцать пятом году сейчас проще чем там кто-то вот это никто этого не делал 10 лет назад поэтому все про рельсы в общем стали забывать Мне кажется вот здесь как бы вот этот момент мы сейчас кстати про это тоже поговорим мне знаеш чтоль наверное хотелось добавить по поводу смерти языков действительно есть вот это интересно есть языки которые реально умирают Ну там какой кобол да там или Ну вот все вот эти которые действительно на них ещё даже пишут и там регулярно обновляются там компиляторы и вообще тузы какие-то кто-то пилит но все понимают что новые проекты на этом не стартуют Это история именно про Legacy потому что просто было написано много кода и вот в этом отношении люди которые не в экосистеме Они конечно всё это приравнивают ну типа Руби же ну как бы вот вот пёрло же всё каким надо быть безумцем чтобы на перле стартовать новый проект Да вот я думаю что отношение у многих такое и действительно дело не в моей там любви к рубе или то что мы я на нём пишу это действительно видно что Руби не скатывается в это состояние там Конечно есть Кстати я потом скажу отмирание определённого типа библиотек Но это связано скорее с изменением всё-таки парадигмы нуно например знаешь вот сразу можно сказать что если посмотреть либо связанные с серверной шаблонизатор
с генерацией шмеля на бэнде оно конечно пришло в состояние смерти и мы вообще об этом с тобой поговорим пото Ну тут справедливо потому что действительно сейчас уже можно делать по-другому и достаточно эффективно А раньше нельзя было поэтому это направление активно развивалось вот сейчас Просто даже я Почему про это говорю буквально вчера только про это копал Ну потому что я этим занимаюсь сейчас Да я такой смотрю и все либо собственно собственно в этом-то и история что вот как раз на этих праздниках я переписывал именно эту часть в проекте Я убирал серверную шаблонизатор через инерцию это мы чуть позже обсудим и я по пути просто такой думаю посматривать что происходит Все либы обновлялись последний раз 5-3 года назад то есть прям видно вот отсечка после которой фронтенд серверный просто умер то есть видимо Вот только в режиме поддержки вот так вот собственно Руби по этой причине он опять же конференции опять же новые проекты опять же сам язык морально Вообще ни разу не устарел более того он классный и те кто на нём пишут Да он им нравится И вот Руби это не то ощущение когда ты такой типа блин ну этот язык уже как бы нет более того на оборот до сих пор многие вещи то есть Руби сам кстати много последнее время втащил насколько То есть я вот уже выпал но я заметил он из жава скрипта стал тащить приколюхи да то есть например когда у тебя ключ можно указывать в хэш но тебе не нужно ключ значения потому что имя переменное совпадает я тебе честно скажу Я когда на Джес вот Начал активно писать использую эту технику Да потому что это очень сильно Я возв в думаю блин это Вроде такая мелочь это такая синтаксическая конструкция которую даже многие не любят Ну типа Прим здесь имя переменно Да и смысл Вот Но она настолько зашла людям что они такие Давайте добавим Да интересно кстати да комментарий если немножко отмотать назад мо проек меня один из крупных тоже проектов называется
акти добавлять новый его естественно ты не сможешь использовать в библиотеке потому что у тебя библиотека используется на пять версий назад условно Да она универсальная надо поддерживать старые ру и так у меня было много библиотек хотелось использовать новые фишки типан наме я придумал написать Ну типа как
знаю он работает я его поддерживаю сейчас Он позволяет делать как раз новый синтаксис экспериментировать какие-то пропол делать например с помощью него вот иго Главное отличие там от Бали после CSS что он в ран тайме работает благодаря Руби и Руби возможностям Мета программирования в Руби мы можем транслингвальная
вот это вот синтаксис да Когда можно пропустить одном ние там для ша или для Key arg сейчас тоже да и я буквально вот в прошлом году делал доклад на рубика в Японии как раз-таки с некоторыми размышлениями на тему того Куда мы дальше можем развивать синтаксис и там я у меня первая часть обзорно историческая где как раз рассматривал вообще как в Руби происходит добавление нового синтаксиса и какой это процесс И что это на самом деле охрененно сложный процесс и вот Конкретно этот пример А я не помню точно там даты но суть в том что там типа 7 или 8 лет висел пропол добавить вот этот синтаксис там были ссылки То есть как только этот JavaScript появилась Да там е6 примерно там в течение года пришли люди говорят Блин мы используем JavaScript вот то что ты говоришь Это так удобно так прикольно Давайте в Руби сделаем в чём проблема И это Маринова вот типа 6 лет примерно сначала мат сказал возвращению Да персоны возна в Руби Да он сказал блин типа Да я понимаю но я пока типа нети я ещё не убеждён что это реально удобно Давайте Поживём увидим типа знаешь вот пожили увидели придумали немножко другой синтаксис честно говоря Ну я уже привык Хотя как бы у меня например в R как раз Я это реализовал давно ещё до выхода в ру А у меня был синтаксис прямо такой как JavaScript ровно там без двоеточия Да вот сейчас в ру перед после имени переменной надо имени ключа надо поставить двоеточие в крипте не надо и я изначально так л как это можно сделать не ломается но рели что это синтаксис какой-то стран множество математики Давайте не будем так делать тоже интересна как бы аргументация интересно за этим следить но все вот эти процессы эволюции Почему эволюция она в какой-то момент мне кажется просто ма возможно Ну отпустил и сказал Ладно давайте типа внедрять новое потому что любое добавление чего-то серьёзного в язык оно требует много усилий из того кто это предлагает и из тех кто потом это как бы отстаивает спорит и так далее То есть это в этом смысле вру подход очень такой не нет подхода как намер с фазами с раз Като и так далее Вот вот вся история такого ничего подобного нет А есть просто как бы либо будет либо нет и это всё очень долго обсуждается долго никаких изменений не Вноси потом вот в 27 Решили как бы махом внедрить много всего и сейчас чуть-чуть как бы гайки подкрутили Как говорится у нас в этом плане до 4 обрат Зару потому Ия ближа год Вот потому что фокус руна стал на другом Если говорить о том что происходит переведуть беседы что собственно сейчас у нас 3 да идт серия Вот вышел 3.4 там 2 недели назад и здесь основная как бы если говорить философия R 3 была по с 2 и так далее это скорость производительность иде вре
Москву вот приезжал на ещ тогда по-моему и рассказывал что ru 3 должно быть в три раза быстрее чем ru 2 это была идея они её реализовали Да там много оговорок потому что rubi 3 быстрее чем ru 2.0 но не ru 27 конечно же потому что все все эти улучшения они постепенно вводились там ну не суть так или иначе цель достигнута А вот цель ru 4 она как раз опять же идёт В ногу со временем что тоже подчеркивает актуальность языка - это опы разработчика exp именно на этом фокусируются основные направления сейчас разработки в самом ру по крайней мере Ну мы лично обсуждали это с мам ещ когда раз я там представлял раз говорил дадада Классно вообще ложиться в концепцию нам нужно что-то такое типа это удобно потому что мы думаем о разработчиках и сюда же как раз сейчас из наверное самых больших и популярных проектов разрабатывает кстати shopify не было какого-то официального langage сервера для rubi и работать соответственно в редакторе там с подсказками с прочим многие люди любят Это я нет поэтому не для меня это как бы нечто не особо нужное но тем не менее А понятно что все благодаря другим языкам в частности в основном дспто наверное люди привыкли к этому опыту что ты там заходишь открываешь файл в редакторе ты можешь посмотреть на метод где он вызывается где он там и так далее вот эта вот вся А навигация с помою некоторой системы которая знает о том как устроен твой код она в рубе в целом отсутствовала официально Да был проект который на многих языках есть но со своими проблемами А сечас как бы Пит официально он вс ещё Сват но как бы ему там буквально там пару лет даже нет это одно из направлений хочет попа потому все понимат ва удобно не просто как бы ты ту пишешь на языке который похож не знаю на английский легко читать можно делать классные дили и прочее но ещё и разработчику должно быть удобно а требования разработчиков современных Они конечно растут как на дрожжах и нужно как-то пытаться за этим успевать и вот здесь как бы наверное важный момент если Руби всё-таки сможет успеть за остальными здесь не сильно отставать по крайней мере то Руби будет оставаться на полову но есть риск что если Руби потеряется не знаю Ну это покажет наве ближайшие пару лет то он тогда может перейти обратно в разряд ру Умер да то есть как бы вот здесь есть риск теперь с другой стороны Да тут прокомментируй разные моменты действительно наверно подчеркнуть стоит что shif который является крупным игроком стоящим за Руби толкающим во многом Да экосистему он делает не только rsp довольно много инструментария вот именно DX от них и соответственно ru lsp интеграция с рельсой всякие ускорители и так далее Короче много всего и Классно что есть такая компания помимо того что есть ещё D Да поэтому действительно Но я могу тебе так сказать вот по поводу вот этого экспириенс там ре же не только в навигации навигация - это действительно важно и хорошо но там большая история про рефакторинг То есть у тебя там переименовал файл у тебя там переименовал класс переименовал фай все вызовы соответственно переименовались это конечно дикая боль потому что у тебя ну до пор Может это сейчас и работает но тебе честно скажу вот я работаю у меня lsp нормально в ру не завёлся и я как бы немножко подустал Я не хочу сейчас тратить кучу времени потому что в тайп скрипте в дсе там у меня всё это работает там в Джаве У меня всё это работает а почему-то в Руби пока не очень Хотя в реальности вижу что люди пользуются понимаю скорее всего это вопрос конфигурации но я прямо испытываю от этого Боль то есть когда мне приходится ручками какие-то такие вещи делать это правда но тут тут глобально как бы получается зна Я так подозреваю то всё равно люди настолько Привыкли что в Go У тебя есть там автоматический форматер тут у тебя Понятно везде встроен lsp тут у тебя нормальная работа с асинхронность в целом высокая производительность и так далее даже бандлер который стал вдохновителем почти для всех современных систем управления зависимостями Он уже ну как бы как будто бы логично давно уже это либо в язык либо что-то с этим сделать потому что то у тебя гем то бандлер Ну короче есть ощущение что он как бы немножко начинает отставать Хотя может быть это только мне кажется и там всё нормально развивается да то есть много аспектов и они касаются как бы языка внутри и всяких штук снаружи в этом плане могу пример привести вот с ланго была всегда беда И в итоге он эту гонку как-то проиграл да то есть понятно что его используют понятно что есть ниша но блин я просто помню когда там не было нормального встроенного даже вот этот рибар там кривой косой да и все говорят Да ребят файлы просто Используйте для всего и такой ну блин ребята ну самое главное в современном мире это то как разработчикам доставляет удовольствие работать надо тратить время на эти все редакторы на вот э короче на всю эту историю они этого не сделали и результат вот такой какой есть Ну никто не будет писать на ланге если Это не специфический запрос Слушай на ланге хотя бы р был там 3 в целом удобный был уже уже почти не надо было файл использовать на го до сих пор нет ничего подобного у меня проект SG - это Make File который как бы потому что тебе надо указать флаги вот это вот всё это всё нужно указывать в ручками как то есть го в этом плане сильно тоже как бы в каком-то вот конкретно в аспекте там компиляции параметров система сборки Да зависимости хоть Ну что-то как-то починили да ну вроде работает Окей договорились в целом норм Я уже привык Но есть как бы свои тоже приколы Да ну вот конфигурацию рубо копа там добавили Да у тебя нте по крайней мере теперь есть там из коробки в рельсе и тоже хоть так но при этом действительно многих вещей пока ещё не хватает Ну в общем классно то есть двигается в сторону того чтобы вот девелоперы чувствовали себя комфортно переходя из других мест Да есть запрос как бы это понимают люди которые в кормах там ис и Руби Что хорошо и они за это там отвечают но у меня опыт с lsp такой же То есть я как бы подключал ну мне мне как я говорю отвечаю меня не нужно У меня она Обычно вот здесь и у меня нет проблемы там афа то есть как бы ну не знаю короче я пока не устал от этого По крайней мере Большой разнице при работе там с сча скриптом или скриптом скорее или с ру я для себя не вижу именно в плане каких-то вот редактора зависимых вещей вот поэтому LP обычно настраиваю на каких-то проектах когда там клиенты просят да Ну они что-то используют но опять же надо забывать что в ру есть который дох порно неплохую донка редакторов занимает и потому что он даёт себе все вот эти вот возможности насколько я понимаю работает весьма неплохо я честно говоря никогда в НМ не работал вот в своё время использовал CR для аланга очень давно Вот но не трол не знаю насколько это классно работать в Руби Майне не люблю jav редакторы Кстати я понял Ещё одну вещь которую вот проруби всё-таки надо понимать которая отличает его это одновременный минус И плюс То есть например вру отсутствует полностью система Вот вот этих модулей и поэтому например в других языках ты просто задолба ешь все эти импорты ручками менять Там просто нельзя без lsp потому что иначе это превращается в очень неприятную работу а в Руби у тебя автозагрузка и поэтому у тебя импортом получается что тебе надо просто поменять название и оно то есть не надо ходить и везде вот эти импорты менять поэтому действительно чуть-чуть уровень требований ниже в этом смысле согласен Да хороший кстати пример импорты это прям Да не представляю там работать в р том вве когда у тебя п экранов в то есть да то есть здесь надо понимать что специфика языка такая что на самом деле это очень во многих случаях не нужно это касается и вот lsp и прочего это на самом На мой взгляд это касается и там системы типов Да которая тоже не так сильно помогла бы Руби если бы она там была хорошая удобна хорошая удобной Пока нет вот есть разные например она помогает там в том же го или Ну не знаю в крипте Я тоже не использую Я практически не пишу на тайп скрипте мне как-то больше нравится писать всякую фигню на на жава скрипте и не думать о том чтобы типы компилировать это вот это отнимает времени да то есть ну это просто уже как это сказать опыт исторический Да тут я кстати понимаю что ребят наверное на этом этапе довольно вот сейчас вот такой вот раздел прикольный Потому что люди которые нас слушают и которые привыкли Они конечно сейчас скорее может быть даже кто-то почувствует внутри приступы гнева знаешь Вот потому что когда Ну как же как же смотрите и в чём-то я с ними То есть я знаешь как бы частично поскольку и в Руби и тебя понимаю и их потому что сейчас я очень много пишу на тайп скрипте и вот прямо сейчас я переписываю я тебе просто Как пример скажу Да например в Руби шикарная i18n в ресе конкретно Да i18n я даже недавно посты Может быть ты видел писал потому что концепция семантического I1 есть вообще только в рельсе когда у тебя есть понятие модели ты это переиспользовать это очень классно но смотри в чём прикол у тебя все эти ключи - Это ад потому что их много ты естественно ничего не помнишь И когда ты их везде используешь Но это просто надо рядом открытые файлы иметь и всё время Вот это всё править особенно если у тебя пашалы перемещается туда-сюда короче так себе история и проверить всё Это автоматом такое себе Вот я сейчас переписываю соответственно Я в тайп скрипте с этим работаю Да У тебя фишка типизации в тайп скрипте такая то что ты получаешь типизацию по строчкам это кардинально отличается от типизации просто типа что у тебя типы совпали и получается что когда я работаю с на цен я использую рельсовые как бы саму механику но в Джес в реакте я использую i18 Next Да и он просто все строчки То есть я начинаю набирать у тебя по сути как фази sech то есть ты набираешь и у тебя подсказка по всем твоим строкам с вся полностью разложен ная Боже мой это такой уровень как бы кайфа что я тебе честно скажу при всей моей любви к рельсе там и к рубе я такой понимаю что я не хочу больше писать вот эти темплейты там в слиме во всём Несмотря на то что он классный язык удобный и так далее Потому что у тебя там всё равно нету нормального языка то есть те Руби майн для этого нужен чтобы хоть какая-то была штука да и во-вторых у тебя Вот таких фишек нету Даже с Руби майном у тебя их не будет потому что для этого нужна специальная типизация вот ну это это надо прочувствовать надо посмотреть Мне кажется это очень классный плагин для lsp на самом деле для поддержка вот 18n там понятно да что всё упирается в том что тебе нужно ты не можешь это просто типы Это не просто строчка Да в это просто строчка Да где-то лежит там в словаре А в ру те надо знать контекст из которой ты строчку ишь да под дерево по сути а его надо как-то понимать из кода из ранма по сути здесь вот соно как работает он же запускает процесс рельсовый чтобы вот эти все там хелперы какие-то и прочее можно было расшифровать так сказать потому что ну по-другому не полу программирование R Да оно всё усложняет но тут очень опять же повторюсь очень важный момент что вкрите это не особенность это стандартная система типов
перечисления там стоит машина всё что угодно у тебя просто строчки которые реально тизи и ты такой блин больно короче без этого уже вот вот этого не хватает а Ну тогда слушай про систему типов В итоге то что сейчас есть в Руби то что делается Вот ты упомянул что типа кривая коса ВС же происходит с этой систе тив rbs
RS она Ну довольно Молодая ещё и работает в ЧМ е как бы в ЧМ её обвиняют собственно Почему её мало кто использует на самом деле Ну потому что это система типов пришита сбоку это если опять же выражаю яком JavaScript который более понятен людям Хотя наверно так сейчас тоже уже никто не пишет Да кроме меня Jap рядом сть э с тайп скриптовые чисто с определением типов Да вот в rubi работает ровно так же У тебя есть Ruby код а рядом ты кладёшь там ну или не рядом не суть кладёшь Файлик rbs в котором ты описываешь Интерфейс Да там ты можешь использовать какие-то конструкции которые нету которых нет в языке Но есть только в типах например интерфейсы собственно Да в Руби нет интерфейсов но в системе типизации они есть вот есть там дженерики даже есть какие-то правила для них понятно что система сама по себе если даже оторваться от этой истории что это отдельный файл но сама по себе система типов Если сравнивать там с тайп скриптом она сильно слабее но на мой взгляд тайпскрипт система типов это переуло ная история как бы Когда типы занимают тоже иногда десятки строчек это Это круто когда это работает Просто там для компилятора но для человека это боль вот которы которому надо это поддерживать я вот ня есть один проект гм приходится это делать и хочется чтобы бы вот это вот то что ты говоришь ощущение что ты печатаешь тебе всё подсказывают там что-то делаешь не так но на самом деле это достигается страданием создателе библиотек Дани да да да да потому что ну я иногда я сейчас например открою я там год назад написал какие-то там типы вот в тайп скрипте у себя там вывод типов там условно какой-то не знаю как правильно это называют они вот я сейчас открою Я вообще не пойму что там происходит Ну сейчас я О'кей я отправлю это в gpt он мне расскажет что там происходит хотя бы генерировать пока не умеет тебе это не нужно это делать не слушай умеет Я очень много сейчас вот с ним работаю ну может быть не всё конечно но он меня он мне просто типа сейчас выводит и определяет достаточно сложные прямо Прикольно да Так вот с rbs в чём проблема Ну сама система она развивается на самом деле я её в некоторых гемах у себя использую То есть как бы с точка С точки зрения скорее Не потому что я хочу там типами покрыть свой код А я хочу быть в курсе того что происходит с rbs с инструментарием где там проблемы собственно репортить их и так далее То есть я как бы выступаю как этот Пилигрим такой бета тестер Вот Но я вижу чтото она развивается она интересна там даже с Мета программированием как-то вот придумали какие-то вещи что-то можно сделать не всё Конечно вот пото что это основная боль Да как типизировать Мета программирования Ну и ты в Та скрипте его не сделаешь но в псе его и нет ха-ха Вот поэтому можно использовать типы в рель рельсы типами покрыть сложно то есть покрыть можно но сделать так чтобы тебе не пришлось ручками писать условно для каждой модели Active Record для каждого макроса One что-нибудь перечислять все методы которые при этом под капотом создаются явно в типизации нельзя да есть генераторы Но короче много здесь соно на стыке мето програмирования типов проблем вот а но есть третий Аспект на самом деле во всём этом То есть первый Аспект система типов она Ну я бы сказал что она наверное по мощности так сказать по выразительности Она наверное примерно как в Go Ну По моим ощущениям По крайней мере я немного использую дженерики в go в Руби тоже их почти не использую поэтому для меня как бы обе системы типов в целом примерно одинаковы по своей выразительности typescript там на порядок или два выше понятно это какая-то сейчас супер машина просто по типам вот отдельность файлов частично это сейчас решают сейчас есть пока Экспериментальный но он должен стать по идее в rit 4 скорее всего это будет уже официально возможность онлайни типы прямо в файлы через аннотации типа как как часть документации то есть есть Art documentation в Руби Да формат такой более-менее похожий на все остальные форматы документации на других языках и в рамках него можно указывать собственно и ну похожим образом это не в рамках него это отдельный проект но похожим образом указывать тип прямо в файле в исходном Это частично решает проблему это уже Кстати говоря возвращаясь опять к нашим корням а но мне очень сильно напоминает н с лазером и с пеками для него примерно похожий какой-то формат сейчас тоже возможен В Руби он в рамках экспериментального поэтому нельзя сказать что у него там какое-то есть большое количество использований в дикой природе но работа есть в этом направлении и третий момент - это сам непосредственно тайчер вот и это тоже на самом деле немножко проблемная вещь потому что все хотят чтобы тайчер был быстрый чтобы он был быстрый чтобы у него было lsp опять же Да чтобы у тебя же тайп Чекин должен происходить просто на каждый не знаю введённый символ в коде когда ты работаешь э в реальном времени ты хочешь обратную связь Type chaker тоже это отдельный проект он даже ска не знаю он там насколько официально считается Ruby проектом или нет он называется STP как отдельная библиотека Да он использует rbs как формат чекает работает но для современного мира он медленный он просто медленный для большого проекта условного формата shopify он в принципе ну там будет минуту наверное че чекать их кодовую базу Я думаю а то и больше вот а и это в своё время привело к тому что был альтернативный Type Checker альтернативная система типов от Stripe под названием sbet которую использовали частично в shopify там не весь код естественно покрыт типами а какие-то модули вроде в github её тоже затаскивать Ну йп понятно её используют Вот Но это совершенно другой подход к типам в Руби когда у тебя код появляется который описывает типы То есть как как некоторые макросы в коде Но это просто ru код который реально там описывает Перед каждым условным определением метода ты пишешь метод SIG и в нём там какие-то конструкции передаёшь Вот это очень сильно Ну на мой взгляд это сильно засоряет Руби код Но делает его просто нечитабельный у тебя то что раньше могло вместиться в пять строчек занимает там 20 потому что тебе надо везде там какие-то раскрытия нуло сделать и так далее И это всё явно в коде Вот но плюс этой системы в том что сам тайчер написан на плюсах он там супербыстрый они собственно на это его затачивали и эта часть у них получилась минус в том что там система типов по-моему ещё слабее чем rbs то есть там очень много от многих каких-то подходов в рубе придётся отказаться ты просто не сможешь их использовать просто не сможешь никак либо ты делаешь просто знаю фа untyped Ну и тогда в принципе вся твоя система типов идёт лесом Зачем как бы если у тебя много таких файлов то ты не особо что-то проверяешь Вот либо ты просто пишешь Руби по-другому То есть это уже на само деле некоторое подмножество Руби получается которые можно типизировать более того они пошли дальше Ну пошли но никому особо не рассказывают пока об этом публично я име виду они на базе этого сорбета И вот этого по сути подмножество Руби они делают Head of Time то есть они как бы используя собственно типы которые описаны сортом они могут скомпилировать Руби программу вот уже в оптимизированный там ито ильва примерно год назад Они анонсировали что вот мы сейчас скоро всё вам расскажем мы это делаем и пропали в этом проблема коммерческой компании которая как будто бы вкладывается в развитие языка Но на самом деле это не очень интересно е интересны коммерческие цели и вот с артом похожая ситуация потому что они активно его продвигали ездили на конференции общались в Руби группе которая занималась типами Вот именно официальный Team а потом пропали и всё не вернулись пробе они как-то особо больше не рассказывают Может они коне пи что-то новое и вс взорвёт просто весь Руби мир но я думаю что они просто бизнес сказал Хватит ребята инвестировать какой-то там язык Давайте короче проект Наш пилить Я думаю что-нибудь такое они вс-таки не настолько сильно зависят от Руби как тот же который инвестирует в ру очень много и они могут соскочить в этом есть некоторая проблема Да у языка нету группы наверное компаний которые его поддержит которые
Бурова она очень маленькая там github shopify ну в принципе всё именно у языка ru Наверное это два основных как бы ну rbn может быть немножко и то я не знаю сейчас что происходит Нет мне кажется нет их сейчас я не знаю есть ли у них что-то у них осталось Но именно на уровне Руби да то есть вот на низко уровне то есть в рельсах другая ситуация там всё лучше Да тоже можем об этом поже чуть поговорить с точки зрения с поддержкой фреймворка какого-то Да организованной поддержки А в ру такой организованной поддержки Нет она вот представлена просто отдельными компаниями но они Я думаю тоже в ближайшее время Никуда не денутся но как бы тем не менее это как некоторый бас фактор такой языка угу он есть вообще Это довольно интересно у Руби всё-таки его природа вот эта вот Мега динамичность кстати возможно кто-то кто-то сейчас слышал и такой услышал что в Джейс Мета программирования нет но по сравнению с Руби действительно нет И то что Руби конечно позволяет творить Это довольно безумный вещи местами и это вообще просто противоречит как бы в тому чтобы у тебя была такая система типов и получается что ежа с ужом пытаются скрестить и скорее всего это ну нельзя сделать классно потому что ну просто тупо противоречивые вещи и до такого уровня как например в тсе оно не дойдёт никогда Да нет в жесе есть на самом деле программирование оно менее слабое но там есть один очень похожий элемент И я кстати не знаю насколько он как вот как тайпскрипт с этим работает да есть объект прокси он очень давно появился в жава скрипте я его полюбил как он только появился потому что я сразу начал писать на JS как Нару ещё там 10 лет назад Вот и это же по сути метод missing из Руби условно Да это одна из таких корневых базовых инструментов мето программирования когда ты на любом объекте Можешь вызвать функцию но вызове не функция А какой-то колк и ты сможешь в нём там по имени функции аргументам что угодно сделать да такой роутинг маршрутизация вызовов методов вот в те есть тоже аналогичный объект про называется но вопрос-то не в том что он его нет а в том что как вот этот прокси например подружить с типами Я не знаю ты либо просто описываешь в своих типах все возможные на самом деле методы которые он может принимать И тем самым это уже не совсем прокси Да потому что идея прокси и метод миссинг в том что реально что угодно может туда прийти и ты можешь это выполнить Ну например кстати можно такой пример есть у тебя какой-нибудь контейнер с данными объект допустим JavaScript ш в рубе у него есть ключи Вот его можно обернуть в некоторый прокси Объект который будет отвечать ме и имя ключа Да и мы можем Ну вру это реализовать не можем это тоже типизировать та же проблема мы вте можем это реализовать Но как ты будешь типизировать вот эти вызовы методов они у тебя все будут потому что в объекте можеш лежать что угодно те придётся их все просто делать Ну не знаю как типизировать про как Видимо как некоторые называтся об в этом смысл что вот здесь вот это такой частный пример где метапрограммирование и система типов Ну существующей системы типов Они пока Ну не дружат друг с другом не знаю может быть вте ты можешь сказать что этот объект отвечает на методы вида с префиксом таким-то на функции В смысле Да не знаю можно ли так сейчас уже делать Может быть тогда это конечно прикольно ть точно так нельзя я тут Наверное знаешь такое просто общее размышление по поводу моего опыта программирования например на Джаве с кода генерации Да и там же тоже Понятное дело что Руби кстати чем ещ интересен он за счёт вот своих возможностей в те времена когда языки были более дубовые он конечно многое дал миру да то есть показал какие-то подходы не зря рельсы стали эталоном и до сих пор кстати многие вещи много где не реализованы так как сделано классно в рельсе Я даже из из-за этого иногда пишу там про миграции про какие-то такие вещи которые как ни крути всё равно На острие в рельсе Я не знаю почему так происходит м почему это не перенимают хотя некоторые вещи перенимают но спустя много-много лет и вот Один из таких элементов возьми вот те же самые динамические вызовы методов Да если вспоминать во-первых помнишь в какой-то момент даже в рельсе метод Мисин стало меньше когда find by добавили вместо find bya то есть вот Их поменяли а второе у меня с тех пор я очень много и разнообразно начал писать на всяких штуках небольшие проекты но всё же разное пописал я такой блин всё-таки В каком-то смысле Я предатель я Поня что то что когенерация гораздо более лучшая техника для большинства ситуаций То есть ты знаешь как это работает в том же спринг когда у тебя всякие процессоры аннотации Там и так далее Ты просто описываешь интерфейсы Ну то есть там разные механики есть но смысл в том что ты описываешь просто банальный интерфейс например да и он тебе методы генерить соответствующие и вообще в целом вот эта динамическая генерация когда ты можешь побежать посмотреть исходник и у тебя всё работает и я такой когда после этого нача анализировать понял что блин всё-таки Конечно вот если бы я сейчас с нуля делал Да возьми тот же самый роутинг в рельсе классный роутинг но чёрт побери ничто не мешает сделать это через нормальную генерацию Так что это будет во-первых а прозрачно для нас то есть это будет само происходить б получит все преимущества те которые в принципе есть при этом ты не потеряешь Ничего как с точки зрения девелоп экспириенс да Зато у тебя появится греб Зато у тебя появится типизация Зато у тебя появится Возможно там ну эти ме и Дале и вот вс-таки значение ми С тех пор в моей голове представлени о программирование конечно сильно упало Я понимаю что в том же ланге мне передача сообщений вот эти Ген серверы это всё классно это прям вот там нужно это отдельная история но вот
здесь я бы уже по-другому реализовал при этом полу тотже самы при че тотже са да про генерацию честно говоря вот конкретно Method missing Ну возьми роутинг смысла нет никакого То есть мне кажется важный момент почему у меня вот есть я могу сказать у меня есть несколько смещённый фокус Потому что я в основном разрабатываю в библиотеки Да там фреймворке что-то то есть я в коде проекта Да я скорее соглашусь что действительно иметь Ну Явный код сгенерированный гораздо лучше во многом потому что там ну другой подход просто разработке Да приложения нежели библиотеки вот библиотеку всё-таки ты делаешь так чтобы человек не не знал что Там внутри ну по-хорошему не надо знать ему что там внутри у тебя всё должно и так должно хорошо работать дру вопрос что если она плохо работает ему приходится это дебажить и там где-то метод миссинг и прочая магия это конечно Ну добавляет как это сказать удовольствие к процессу исследования кода вот назовём это так но для проекта Ну в принципе это так считается в принципе Сейчас последнее время в рельсах Да например что метапрограммирование оно такое Тёмная магия которую стараются минимум по минимуму использовать Да лучше там использовать правильный там хорошее оп чем какой-то метод программирования но тем не менее мы от него избавиться совсем не можем Да вот есть роутинг есть Active Record с кучей макросов я это называю методов Да которые герт кучу других методов они кстати реально ведь под собой они по сути генераторы Да эти методы они создают просто много других методов объявлением одной строчки Да там has One User и у тебя там 10 методов с User там что-нибудь вот и было бы проще если бы где-то был знаешь скрытый файл который бы полностью тебе расшифровал всю твою Record класс во всё что там есть Я боюсь что проще бы не было почему Потому что я иногда это делаю кстати смотрю сколько там вообще чего гери Да в коде там методов колков Например у нас вот есть один проект Надеюсь мы скоро его выпустим для рельсы как раз анализатор числа колков и валидации там в классах и можно испугаться увидев сколько просто в проекте на Руби ты этого не видишь а если ты всё это Напишешь как бы сгенерировано в коде Ну это будет огромный кусок кода который скорее всего Ты всё равно не сможешь читать и с ним работать вот у меня такое ощущение конкретно вот в контексте рельсы Да ты сможешь там перейти внутрь провалиться там в метод увидеть что-то там посмотреть но ты всё равно не сможешь там ничего менять правильно Да ты не можешь менять генерируемый код а просто так побу зать посмотреть что там есть Ну наверное не получится ну это вот скорее уже особенности конкретно Если ты про Active Record говоришь потому что с тем же сам роутинг Ну возьми пример у тебя например front-end да ты как бы роутинг переносишь во фронт и у тебя по факту сгенерированный файл со всеми ротами и у тебя и автокомплит и греб и всё на свете то есть Оно только так работает там нет в дсе динамики такой Ну по крайней мере это не делают это классно и получается что Ну может быть ты знаешь там есть такой JS Roads проект И кстати подобный проект есть буквально во всех кэндо вых фреймворка То есть ты его ставишь он берёт роутинг этого фреймворка и генерирует под него тайп скриптовые файлы под FR это работает то есть вот это прям типовой пример и я такой понимаю что блин ну всё то же самое можно использовать почти на всём но как минимум роутинг самого фреймворка можно таким образом переделать причём говорю это будет прозрачно понятно что вряд ли кто-то возьмётся но вот если бы я дизайни его я бы дизайни уже вот в таком стиле и тогда это было бы конечно Ну слушай не забываем ещ производительность эта штука бы конечно кардинально е увеличила Кстати как раз роутинг
рельсе я не про роун в целом имею в виду Да не но ты же понимаешь что как бы метапрограммирование в основном оно оно является генерацией просто без артефактов вот в этом как бы разница что эти методы генерируются они есть в виртуальной машине поэтому разница от того что ты напишешь их в файле на самом деле не будет есть моменты где она будет и то наверное не очень большая её сложно замерить в других скорее подходах скорее более таких объектных подходах когда ты накручиваешь много слоёв иерархии Да там из метода вызовов путём тоже мето программирования когда у тебя один метод оборачивать другой делает там супер ты добавляешь например Dirty Tracking Active Record да и у тебя это на самом деле оборачивается там десяток методов из базового Active Record в другие которые что-то там делают И вот здесь какая-то возможность Вот это всё развернуть в файл в один да где всё это просто написано и будет выполняться здесь - действительно есть потенциал для ускорения какой-то такой лайнинг получается Илай Мета программирования плюс Ну вообще кода в принципе ну я наверное имел в виду Знаешь если тоже про это подумать всё-таки там какое-то пересечение точно есть с т Да ДТ и всё остальное То есть когда у тебя это в ран тайме или когда у тебя есть заранее какой-то способ проанализировать там исходник и понять что это будут готовые методы Ани что-то там произойдёт ну не знаю я в этом небольшой специалист но мне кажется какие-то оптимизации можно было бы на базе этого сделать как раз да Он же работает чисто на основе статистики Да он не смотрит в Исходный код и ничего не делает даже никаких по крайней мере вш там была у меня тоже как такая идея давно и когда он запускался что было бы неплохо просто в файле сказать что вот это вот оптимизируют нет наме Да ну типа как бы я могу сам это статически проанализировать А может какой-то инструмент Но работает по-другому как раз да для него неважно у тебя файле это было или нет то есть как бы с момента запуска программы Да загрузки приложения у тебя Ты можешь файлы все выкинуть они не нужны больше Да потому что у тебя всё это сформировалось ВД на самом деле да это же не просто Исходный код а уже внутри сформировались классы таблицы методов и всё такое вот и работает уже с этим это ускоряет и в при
св частичным по крайней мере по заверениям больших компаний в тех же фаев и хабов т справляется очень даже хорошо для вещи которая невидимо для тебя работает и тебе не нужно ничего делать Да чтобы она хорошо работала Давай чуть наружу вылезем Да и вспомним ещё вот два момента я наверно хотел обсудить Первое - это вообще производительность Руби Да потому что ты такой говоришь что Ну вот мол акцент не на это Но по-прежнему история о том что он медленный о том что там все остальные быстрее я сразу могу тоже добавить что вот у меня на рельсе полно проектов и Для нас это не проблема то есть я думаю что речь идёт Конечно когда ты по-настоящему что-то большое тяжёлое наверное там это стреляет но так в целом Это не я не скажу что вот кто-то может зайти на сайт хекслет или того что мы делаем или там ну ладно shopify плохой пример Давай на сайт хекслет и сказать Ой вы на Руби У вас такие такие медленные Нет вообще всё прекрасно Да работает всё быстро всё хорошо это вот ну давай сначала этот вопрос потом я тебе второй задам то есть что по поводу производительности считаем что она дошла до какой-то нормальной точ или вс-таки смотря как исходить к этому вопросу Да если подходить цифрами какими-нибудь Там какой там бенчмарк который часто приводят Я не знаю на каком там месте ру в сколько раз он хуже там условного го или даже жава скрипта конечно хуже но здесь производительность Ну на мой взгляд она должна быть такой чтобы не мешать развитию собственно проекта продукта бизнеса как бы интересно тоже возвращаясь в историю Я тут недавно копался во всяких старых книжках И в частности
поссевино
справочник по рельсе продолжает выпускаться для всех версий а но там из интересного там в первом издании есть Предисловие от самого че где он там очень кстати неплохо высказывают Ну тезисы как бы идеологии философии фреймворка и там очень классное определение данного слово масштабируемость Что такое масштабируемость масштабируемая там система - это такая система которая не тормозит тебя на пути к достижению бизнес целей Да как бы чисто не не является техническим блоке Вот и можно сказать В каком-то смысле производительность это конечно чуть более конкретный термин но он по смыслу схож с этим а производительность она должна быть такая которая позволяет тебе двигаться с той скоростью которую ты запланировал и достигать тех этих целей в общем-то тоже в том числе с точки зрения софта в этом смысле производительность rubi опять же ты упомянул shopify и shopify - Это хороший пример потому что это огромная компания Да у не каждую чёрную пятницу вывешивают там статистику Сколько у них запросов и вот в этом процессе так сказать путешествия заказ в Фая Да там на чёрную пятницу от человека с браузером до сервера и обратно а я не знаю сколько процентов сам задействуем Руби сейчас понятно что не 100% и даже наверное не 80 где-то скорее 60 понятно что там есть какие-то прокси сервера кэши и прочее но тем не менее Ключевая логика и всё это там всё по-прежнему задействовано Руби и производительность там [ __ ] Какая в этом году они Кстати классно не знаю видел ты или нет но в прошлом уже сделали они в лас-вегасе на Сферу выпустили в реальном времени транзакции по всему миру которые проходят у них в чёрную пятницу я слышал прави это красиво есть там видосики я имел в виду почему я сказал плохой пример потому что они-то как раз производительностью заморачиваюсь я хотел Привести примеры компании типа нас которые вот реально именно такие то есть для меня скоро и для просто любого проекта плюс-минус стандартного без сверхвысоких нагрузок даже с достаточно высокими это действительно нормально то есть вообще любой язык Возьмёшь у тебя будет всё нормально То есть я не представляю что у меня язык стал ограничением для работы моего проекта верно язык вообще редкое ограничение там вебе там чаще всего ограничения - это кривые кривые руки и база данных вот да которые к ней ходят Например А так это скорее философия опять же рельсы которая сейчас она явно позиционируется что на тот момент когда у вас стат проблема с производительностью Когда вы работаете с рельсами с ru Вы скорее всего уже зарабатываете столько что вы можете вложить деньги либо в там в перенос каких-то частей в отдельные сервисы Да понятно что у shopify довольно много там каких-то Go микросервисов для каких-то определённых задач собственно наш который мы делаем Это собственно это инструмент как раз для этого Когда вы дости и подж с сокетами де будем будем скрывать она там Херо Да на 100 человек одновременных ты сможешь чат написать на сся уже будет заметно что работает плохо Вот Но ты ставишь место рядом просто не меняешь ничего в свом приложении продолжаешь ехать на сотнях тысяч человек всё проблема решена соб
оптимизировать на ру или очень дорого оптимизировать на ру они переносятся просто в другие ну сервисы не буду говорить микросервисы микросервисная архитектура это немножко другое вот а это именно вынесение низкоуровневых мест в какой-то более производительный ранта и ты скели так но Фишка в том что когда ты достиг этого момента ты скорее всего уже прошёл этап там mvp выхода на рынок у тебя уже проект живой работает для этого достаточно руре и в принципе альтернативных там бы фреймворка похожих на это Т же там например в PHP представляет примерно тот же философию и да PHP тоже Ну не очень быстрый Хотя я не знаю он там может уже он тоже быстрый там вроде тоже есть какие-то свои примочки при всм при этом у тебя на каждый запрос напоминаю запускается весь проект с нуля Не ну там есть как это на забыл когда давно я работал с PHP там сечас это есть демоны которые как с в весь код короче в памя Ну как переход от C до cg по сути на самом деле этого нет это фейк Я просто могу тебе так сказать что вот это типа Fast C он на самом деле фейк В каком плане у тебя н работает типа по фаю но в реальности Равель он стартует на каждый запрос заново И по-другому это не сделать там поэтому его оптимизации они как бы упираются в то что они используются и тратятся на то чтобы стартовать супер быстро иначе ты работать не сможешь У них есть сечас альтернативной имплементации которые позволяют это делать и есть кое-какие Application сервера Да и в смысле прямо конкретные фреймворки которые могут так делать но по-моему с лавеле Ты ещё так физически банально не сделаешь по-моему Symphony можно Ну меня могут поправить ребята я могу ошибаться но там то есть у тебя как бы часть проблем с производительностью решается тупо за счёт того что у тебя нормальный F и всё находится в памяти а в PHP этот называется Шер байт кода вот как в пайтоне у тебя Ну это понимаешь не за байт код окей Да да но у тебя не загруженное приложение в памяти всё равно я понял да да да это похоже на то что в Руби собственно casher байт Кода да Бут СП которые есть тоже собственно иде Да знаешь ты вот я прямо удивлён потому что не то чтобы я слежу и это фраза которую я всегда говорю людям которые обсуждаю знаешь во мне включается немножко предприниматель потому что вот мы когда это обсуждаем и мне говорят Ну вот там производи вот то я говорю Ребят вы понимаете что если действительно я наткнулся на такие проблемы в современной какой-то ме Это означает что у меня столько денег что я такой даже богатый смех ха-ха-ха вот вам 100.000 долларов на оптимизацию мне вообще это не будет парить это уже нормально Тут недавно где-то видел прикольный по-моему на Hacker New ТД обсуждали Ну опять немножко перебиваем к рельсе Ну как раз вот типа расходы там вот в рельсе сейчас есть камаль да типа капистрано новая способ деплоить короче приложение на железо типа экономите деньги не деплоить на хероку купите железный сервак по дешевке там за 5 евро в месяц и на него деплоить короче Вот И там просто есть комментарий у людей Ну типа вы на хероку будете платить тратить Ну может быть чуть больше Вы сэкономите супер много времени А если вы тратите на хероку типа 1.000 долларов Значит вы зарабатываете ну в сотни раз больше И вам в принципе как бы ну похер на это ну понятно при должном сочетании ловкости рук так сказать и отсутствие криво рук можно платить на хероку много не зарабатывать я такое тоже видел но это ничем не исправишь А если у вас всё хорошо то вам будет хорошо и на каком-то более удобном провайдере где проблема больших там расходов ресурсов там например на масштабирование она возникнет в тот момент когда у вас уже есть хороший приток этих самых ресурсов эту мысль надо держать в голове собственно при этом мы плавне вкатывается про асинхронность Почему скажу Вот мы сейчас все уже в современном мире видим то что асинхронность это не просто некая приблуда сбоку Да вообще можно на этом строить всё приложение показали Как можно писать просто типовые совершенно приложения при этом ты производительность там в иксы Просто сразу получаешь с Ну тут даже сравнивать нельзя насколько это круче удобнее и вот тебе пример typ JavaScript Да в котором вот у тебя просто другого нет и с ним просто невозможно соревноваться в этом плане то есть ты из коробки дело даже не в самом языке Да просто из коробки получаешь го большую производительность и вот по па облит
тенденция такая типа сейчас ан там естественно во все поля и цель в конце концов сделать так что у тебя синхронная версия языка просто станет приблуда сбоку к асинхронной версии языка Да смотри Ну что с этим делом в ру в R есть тоже свой вариант если говорить научным языком кооперативной конкурентности да такой легковесный который корутины по сути да они называются файберы вот и можно работать в режиме Илу с рути быстрой рабо с большим количеством одновременных операций вот всё для этого сейчас сделано это много вложили в это как раз в серии R 3.0 там фары существовали типа с незапамятных врем в как некоторый примитив но они были очень небель потому что требовали ручного управления да то есть у тебя есть какой-то это не как Например я точно не знаю работает вкрите пом ратат су э вся колбеки Ну раньше были колбеки да сейчас это промисы ну по сути те же колбеки это это момент в который у тебя переключается контекст в планировщики Да он может передвинуть свой там поток выполнения в другую э не знаю как они там правильно называются корутина не корутины в другой короче стек и продолжить оттуда и они вот так вот по очереди друг с другом общаются пока тот ждёт там сети другие работают и так далее это всё Почему это хорошо работает потому что это позволяет максимально утилизировать ээ ресурс процессора выполнением кода Потому что если взять там или в классическом синхронном варианте ты можешь там запускать треды Да но у тебя всё равно в момент когда у тебя например ВБ приложении рукод пошл в базу рукод ничего не делает он ждёт Да ввод вывода и это как бы по сути время простое и вот в асинхронных Да вот этих реализациях этого времени просто по Су нет потому что теб
пере и будет рабо это круто да это действительно позволяет просто повысить утилизацию твоих ресурсов это можно на самом деле достичь с треми и что собственно опять же показывают большие примеры на ру просто тебе надо Правильно Там подбирать х число знать какой у тебя рисунок нагрузки и так далее точнее распределение между там кодом и этож
раня есть этот момент Можно вроде как бы так писать с ru 3.0 наверно появился интерфейс вот этот изначально умного планировщика который уже работает максимально близко к тому что есть там в том же жава скрипте но при этом не на основе каков и промисов а именно на основе возникновение некоторых событий при выполнении кода системных вызовов Ну по сути некоторых системных вызовов которые наверх чуть-чуть если шагнуть отворачиваются к работу с сетью с файловой системой с и так далее и в ru сейчас умеет автоматически переключаться между фай берамир этих событий тем самым как раз достигая вот этой вот максимальной эффективности расходования там ресурсов процессоров на выполнение Руби кода есть целая подсистема как бы она не в ядре ubi это пилит на самом деле один человек в чём опять же проблема бас фактора вот а ан rubi много библиотек которые позволяют это делать но в чём идея ты вот сказал что типа Python сейчас всё перепишут на он вей асинхронный будет там не знаю для скриптов на терминале там запускать Да всё равно там останется синхронный там нет смысла в этом это имело смысл вот знаешь в жава скрипте когда действительно были чистые проме зы ты понимал разницу у тебя действительно код с проме Зами он всё-таки требует больше усилий сложнее у тебя там вложенность есть но ан вей Он создал Особенно учитывая что у тебя в жесе там Практически единообразная работа получается в пайтоне не так это классно сделано мм там по историческим причинам у тебя получается что фактически нет никакой экономии на том что ты пишешь э Несмотря на то что всё последовательно просто нет смысла так писать потому что у тебя так всё работает у тебя все либы и я име вот как раз имел в виду что тенденция к тому что а синхронность просто для Legacy по факту нужна именно синтаксически даже вот да вот двигается ли в эту сто двигается так вот Я говорю подойдём к этому я издалека начал Да там с планировщики файберы Так в чём суть в руби с добавлением вот этого ну их как-то какое-то время в рабочем режиме назвали афа собственно Тофа которые автоматически переключаются идея в том у тебя асинхронный режим работает без Осинка Вета тебе не надо писать ключевые слова ты пишешь тот же Руби код но он сам будет переключаться делать Вот эти эвей по сути в момент когда будет возник возникать соответственно там системный вызов и он будет переключаться в другой Fiber потом возвращаться к тебе когда до него дойдёт обратная очередь и Ну будет получен обратный сигнал Да от ввода-вывода и тебе не надо менять способ того как ты пишешь ход тебе не нужно э переходить вот эту парадигму асинхронно Ты твоё условно Rails приложение ты пишешь так же как ты писал Rails приложение до этого ты берёшь то же самое Rails приложение И вот сегодня там в Rails 8 оно ээ вроде как полностью Ну по крайней мере на бумаге работает с в асинхронном режиме не меня ну ты меняешь немножко настройки Да ты говоришь там в некоторых местах использовать условно режим асинхронные типа файберы а не треды потому что где-то там внутри фреймворки они используют но сам код приложения твой личный код он не меняется он остатся такой же он под капотом будет делать весь этот бы невидимы для тебя и в эту сторону Ит в этом как бы на мой взгляд очень крутая идея Не знаю насколько это хорошо получится есть скептики которые говорят Блин ну не так всё равно не получится там ручное управление как бы вот это вот оно лучше но я с терпением жду когда
этото поч поно порко
имы это тоже решили отдельным проектом починили скажем так это просто не вошло пока в рез ль Наде в будущем войдёт и больше проектов начнут переходить на асинхронный сервер потому что сечас сервер основной там который просто тре запускает процессы и так далее есть альтернативный называется который собственно работает по гибридной схеме может процес
его используют в бою и Они в восторге но здесь есть специфика проектов это проекты у которых логика Вот requ как это запрос ответа вот то что внутри происходит это в основном хождение по внешним сервисам типа зайди туда зайди туда там возьми собери всё вот это вот и потом Получи ответ И это прям такой канонический пример когда вообще Event работает Ну с рутина работает идеально потому что у тебя большая часть времени на самом деле системные вызовы А в коде Ты просто что-то собираешь И поэтому это очень классно масштабируется а ребята наме из teams там в частности shif они очень скептически на самом деле относятся к этому подходу они считают что он ничего нового не принесёт да типа недавно тоже опять же вот н такой довольно скрытая фигура в Он практически не выступает нигде он сечас недавно написал разве что про про ускорение
Но на самом деле он Один из таких Ну на мой взгляд ключевых фигур теме производительности ы в теме каких-то важных внутренних вещей там вот кишков фреймворка и он сделал такую фразу недавно где-то на опять же большое было обсуждение по-моему да типа у насса теперь имеет н да я убил столько времени на то чтобы это всё работало короче но я типа не уверен вообще что это всё было нужно потому что я думаю что для большинства проектов 0 пров сре всего для них и так всё так хорошо по производительности А ничего не даст а если ты пилишь какой-нибудь прокси сервер типа Нару например Конечно тебе даст офигенное как бы преимущество и будет работать в 100 раз лучше чем всё что сейчас есть на ру Да вот Ну примерно таких проектов если мы начнём писать на ру не веб приложение с тяжёлой логикой а какие-то УВ прор коне сейчас там тоже используется вот там для этого у Руби есть ответ да собственно который при этом не сильно отличается от того что пишут все остальные Да визуально синтаксически конструкциями языка я обязательно посмотрю Но я тебе честно скажу у меня вопросов скорее появилось больше чем меньше потому что я не очень во-первых я не очень понял Это всё-таки реализовано в рельсе или вот то что ты рассказывал это система типа Аля сий Но полностью прозрачный реализованный на уровне самого Руби потому что звучало как будто так а потом ты как будто по-другому скал что это звучало на уровне rubi реализовано на уровне rubi а именно вот этот F sked это называется планировщик фай беров интерфейс причём что интересно кстати да тоже это тоже кста неко новая тенденция в Руби вот этот сам движок реактор Да это называют ВН лупах он его нету в Руби он не реализован rubi предоставляет интерфейс и ручки как бы на уровне виртуальной машины Куда ты можешь этот реактор включить чтобы он собственно координировал работу вот этих вот рутин а непосредственно реализацию реактора который там слушает э вызовы там следит за активными сокетами и прочее ты делаешь сам Ну ты Подключаешь на самом деле какую-то готовую библиотеку и это очень прикольный тоже момент Потому что ты можешь подключить там из популярных Ну сейчас уже наверное тоже уже устаревший там libuv да которая по-моему в питоне Мне кажется она и использовалась в жава скрипте она в каком-то версии была ты можешь подключить что-то новое что-то другое и тут тоже играться там с перформанса Но это реализовано на уровне Руби на уровне рельсы сделали просто фреймворк fibber совместимым дело в том что фреймворк изначально пилил вообще изначально пилил под одна тред да Если ты помнишь там был по-моему это переход где-то в районе 32 или когда там добавилось ещё флаг что можно было блокировать выполнение рисового кода там только на одном трейде какой-то юкс там был большой потому что треды не тред сейфти короче была риса сама и в каком-то смысле сейчас был переход вот фреймворка на то что фреймворк сделали можно запускать код фреймворка убрали условно глобальные переменные Да рею память или сделали доступ к ней безопасно А сейчас сделали переход к тому что он ещё можно помимо трев и в фай берах запускать безопасно тоже в основном это связано с доступом к памяти Ну банально в ру есть там carent и ты там что-нибудь ранишь в М И вот где-то это было который на самом деле fibber current как бы это детали такие Руби То есть это это было уже fibber безопасно а где-то использовалось ТД с двумя там ну скобки и переменно и вот это было ED Local В общем короче это очень так глубинно Руби но суть в том что был просто фабера корутина небезопасный код был шаре нае состояние можно было получить какие-то гонки по битую память и так далее и некоторые моменты эти были в рельсе оставались и их поправили в том числе их Ну ещ какие-то там специфичные для фай беров вещи чтобы в фай берах можно было это запускать и не думать пово классная кстати идея тому м в начале говорил мо любовь к абстракциям вот э вот история с тем что всё-таки сделал фреймворк универсальным по сути независящим от модели выполнения кода
проа делает реворк ещ на один шаг ближе к абстракции хорошей абстракции нежели к привязке к конкретной реализации и риса идёт она очень далеко в этом пути ушла но ещё есть куда идти как мы видим и вот сейчас Сделан вот этот шаг это круто а это позволяет запускать рельсу собственно вот в разных режимах получается такая совокупная работа Сначала это сделали в Руби собственно Это один и тот же человек как бы педали ет скажем так эту тему см ульм он это в Руби принёс там сделал Вот эту вот всю историю помог сделать он это проагро Rail Score Team сделать в рельсе мы сейчас вместе сделали с ним там ну точнее так о он меня проайти сделать это в Эш C короче а и мы ну я как бы мне нравится эта тема тем что я хочу чтобы эта часть была действительно полноценной экосистемой потому что в мире Руби К сожалению есть проблема если что-то не работает в рельсах какой-то там что-то принесли в Руби но в рельсах Оно ещё не работает оно очень долго не будет никем использоваться Поэтому нужно всё тащить прежде всего в рельсы реализовывать это там и наверное можно отсюда как раз перейти вот мы как бы продолжить эту цепочку Да рельсы сначала стали треда безопасными теперь фабера как бы ориентированными но у нас есть ещё одна да конструкция в Руби довольно новая и почти не используемая которая позволяет э масштабировать выполнение Руби кода уже на ядро процессора который называется кры Вот например рельсы ректора не поддерживаемые Да нельзя запустить рельсу Вот в этой новой структуре и пока этого не произойдёт ректоры не будет никто использовать Но это какая-то отдельная такая боль Можно немножко про это поговорить что это вообще за штука такая что за тучность у нас появилась ещё одна четвёртая Вот в этой вот матрёшке как я это обычно знаешь давно ещё на слайдах рисовал Значит есть процесс есть тред есть файбер в рельсе в рубе Вруби точнее Да такая вот матрёшка А сейчас эта матрёшка между процессом и тдом ещё получила не знаю куда е ставить Рато некоторые новый режим изоляции как бы выполнения вот это как бы рубишь с с глобальным локом жилом или gvl ом сейчас называется и это то что пока тоже как бы все на это надеялись что это будет это было бы очень круто если бы это получилось сделать вот так что как с фай берамир ты просто говоришь а Запусти мой код в пти реакторах и он просто работает и типа у тебя всё рукод там занимает все ресурсы все процессоры они там настоящая параллельность всё такое но так не получилось Пока не получается а там очень много ограничений связанных собственно с тем что сама виртуальная машина имеет очень много шаре Наго состояния и просто так короче работать параллельно это код не будет Вот опять же здесь мы видим на самом деле тенденцию к чему Мы обсудили уже что вот ан Вруби как бы есть он есть он действительно есть он не как бы он есть но он вообще по-другому да и ты его не увидишь он отличается только тем как ты снаружи запустил программу борьба с жил вот в питоне Да она сейчас вот активно ведётся Она там в каком-то даже превью или уже в режиме есть в экспериментальным но она ведётся в Руби по-другому Да в Руби не пытаются просто убрать джил из Руби потому что это очень сложно вот Руби пытаются сделать нечто новое Что позволит как бы обойти этот это это ограничение потому что это конечно серьёзно если говорить обратно про Руби производительность и прочее серьёзный недостаток наверно ран тайма конкретно Да это это одна из реализаций есть другие это не отсутствие мультипро такой настоящей удобный на в рамках как бы виртуальной машины а не форка процессов это как бы принято считать как бы некоторым недостатком Ну то есть современный язык должен как бы вообще-то нормально нативно работать с многоядерными процессорами и ты не должен об этом думать как например возм там всё отлично В этом плане Хотя опять же тотже JavaScript является таковым тоже да А давай чуть Отмотай назад Вот всё-таки про просто перескочил тему А я хотел её чуть-чуть закончить то есть вообще звучит так то есть вот то что ты рассказал звучит так что в целом как будто бы Руби пошёл по интересному пути опять же это пока для меня абстрактно потому что я про это не знал Да о том что у тебя фактически синхронный код за счёт того что есть там вот ты говоришь там системный вызов или как-то ещё он это определяет он понимает что именно эту штуку можно выполнить через ан вей и Тебе явно об этом надо не говорить честно тебе скажу я когда-то думал что такое в теории может быть можно но эту мысль дальше не развивал и фактически ты меня шокировал тем что язык пытается имплементировать эту модель просто получается довольно вообще-то Революционная вещь да то есть если у них получится и если оно будет прилично работать на большинстве кейсов Ну вообще-то Руби в не то что перепрыгнет остальные но он может похвалиться что смотрите А у нас вообще-то есть инновация и она работает да здесь вот классное слово инновация ЧМ ещ опять же ответ на вопрос почему Руби не умирает потому что Руби
продолжает развивать инновационные штуки Это одна из них я вот я там ссылку добавил на самом деле на один доклад Я вспомнил сечас про него до этого не написал года наза
Вт историю Что такое Руби почему он не умер И что такое я там много про это говорил про этот историю ты вот упоминал про бандлер который всех вдохновил так вот Руби у рельсов вот это вот какая-то знаешь такая генетическая особенность наверное да связанная с Руби что Руби приносит очень много идей которых нигде не было по-другому смотрит на мир Возможно это объясняется знаешь иногда так шучу географическими особенностями Да и что Руби - это язык который развивается на острове весьма изолированной экосистеме так сказать Ну развивался изначально Да но это вот это вот Островная Островной менталитет это вот кстати мас пому говорил тоже недавно буквально вот осенью А у Руби языка есть вот это Островной менталитет который как раз на самом деле позволяет мыслить не так как все остальные потому что ты не знаешь как все остальные мыслят ну исторически Да ты делаешь по-другому ты делаешь ты смотришь на то что ты тебе надо сделать и смотришь как ты бы это делал не опираясь на опыт других вот и это проявляется Да вот с этой историей синхронной Она работает она есть наверное в ней не хватает каких-то ещё элементов да то есть мы можем придумать если код долго не делает АО Но не Но не Но он при этом там меняется какой-то контекст выполнения разные методы функции объекты у нас нет вот этого перехода да то есть в жава скрипте всё-таки У тебя же не только по АО переключению происходит контекст выполнения например да просто там на колбе ках условно когда вот это ну там есть какие-то способы это делать по-другому Хотя может быть там всё равно это как-то так или иначе сводится Я не знаю тут надо смотреть вот Ну тем не менее это направление которое будет развиваться Я думаю сейчас больше пользователи начнут это использовать в продакшене Возможно там дальше какой-то получится обратная связь Сейчас на мой взгляд Единственная проблема за счёт того что всё-таки ru сообщество оно не такое большое а любой подобный эксперимент он требует большое количество обратной связи Ну даже не эксперимента вообще любая какая-то новая идея её нужно обкатать на Как можно большем количестве сценариев вот Вот это в Руби К сожалению отсутствует поэтому всё довольно долго будет скорее всего занимать время то есть если бы это был условно питон или JavaScript то в течение года бы уже очень много людей это попробовали компании пришли сказали что тут работает что нет и это бы допорогова
но я не пробовал это на проекте там на котором действительно от этого была бы польза Да поэтому А есть Вот Эта небольшая проблемка Ну я в любом случае хочу
затестил проектах должно дать производительность потому что у тебя скажем если пиковая нагрузка там пришло там сколько-то людей у тебя конечно должен сервак справляться намного эффективнее Да с этой с этим переходом хорошо что сказал а посмотрю попробую А вот по поводу АО поводу а синхронности просто хотел добавить да В основном это АО на самом деле почти везде те ну давай с такого микроскопического примера таймер ещ вот что будет если сп ты делаеш да будет ли оно нормально там разливаться да да СП там тоже работает то есть это как бы всё равно системный вызов ты же засыпание делаешь на уровне уже операционной системы и там конкретно точно работает любой ру я думаю будет работать там Какая ещё проблема будет в
ру воз адаптированы под этот fed чтобы в них не происходил затык Да вот этого зависание цикла Вот но сам Руби код просто чистый Руби код он работает сейчас весь Ой это это круто Это реально вот я согласен это звучит просто просто когда так так это ру звучит для людей из питона или JavaScript Да которые такие о типа даже писать не надо блин уре но мне кажется это хорошо что это не меняет язык то есть вот это оставляет за языком также Почему я думаю что хорошо что типы в сам язык не несут а несут их рядом потому что язык остаётся тем чем он был и тем чем он там привлёк много людей там в том числе меня всё-таки есть вещи которые не стоит менять Давай поговорим про альтернативы ты упомянул парочку проектов что Руби не только есть просто язык и просто рельсы Да И вот некая ниша в кото нормально как-то идт развивается и даже повышает сейчас свою популярность Расскажи Я про эти проекты ничего не знаю но посмотрел лендинги Да я наверное пару которых хотел упомянуть как бы вне мира Веба вообще и даже не совсем Руби Да это такие вариации на тему ру есть с одной стороны есть реализация языка заточенные на ограниченные ресурсы изначально был проект от того же автора ма То есть как бы типами тот же синтаксис те же возможности там практические функциональные но он таргетирование устройство Да eding Devices и он очень популярен на самом деле в Японии как основной Мне кажется у них промышленный язык значит промышленного программирования действительно для каких-то микроконтроллеров устройств вот он легковесный он компилируется там по сути это некоторые я бы сказал Это скорее как некоторый си Framework даже но сам по себе Мне кажется rubi нельзя сказать что сильно выстрелил хотя у него были интересные применения например [музыка] опять же был скриптинг в их магазинах можно было написать какую-то кастомную логику на ру которая в изолированном ранта выполнялось как бы безопасно это гарантировало табон что называется вот то что сейчас делают на собственно в том числе перел туда не прижился в этом плане победил понятно по понятным причинам Вот Но одно из интересных направлени разви это ирова индустри в фреймворка который называется Dragon Ruby Это именно фреймворк для написания игр компьютерных игр Ну разных там платформеров а не только в общем-то его как бы ядро - это именно M rubi Но это один из проектов который вот у меня в закладках уже много лет которые я когда-нибудь думаю вот сейчас на 2 недели Уйду в отпуск и что-нибудь запилюються
всем нравится детям особенно писать игры и прочее а писать игры на Руби на мой взгляд это ну идеальный язык как бы для вообще вот описания вещей из реального мира максимально близким к реальному миру языку например да потому что у нас есть DSL и мы можем просто вот очень сильно оптимизировать количество кода необходимое для того чтобы описывать какую-то логику какие-то бизнес правила не знаю всё что угодно В этом плане Мне кажется Руби как раз хорош поэтому для для именно бизнес логики связанной с играми а на мой взгляд Ruby классно подходит а Dragon Ruby даёт ещё и весь инструментарий чтобы эти игры там компилировать под разные платформы публиковать в магазины То есть сейчас вот я недавно тоже смотрел они очень активно развиваются из Dragon Ruby можно собрать написать простую игру и там на PlayStation на Nintendo Switch Короче все вот какие-то современные способы так сказать а игр я не играю поэтому я не знаю ещё что есть вот там приличный список Да если ты-то хочешь написать каку игрушку ты пишешь её на ру на какой там в своём там огромном своём А вот это вот вот ты пишешь Руби Код Да понятно там не знаю какой-нибудь Counter не напишешь Вот Но много классного на нём пишут и делают вот проект Кстати как раз тоже коммерческий покупаешь лицензию для разработки она очень либо дают бесплатно беплатно либо на праздник за 10 долларов что-нибудь такое То есть это недорого это делает тоже там один человек основной основатель этого проекта это как бы его наверно основной заработок плюс там он игры сам тоже делает но проект он на слуху он там выступает на конференциях показывает это прям такая новая ветка в том где Руби работает вот и если обратно идти сторону вот опять же как некоторого нового начала в экосистеме с чего я
и вот э игровая индустрия не просто микроконтроллеры но перешли чуть на более высокий уровень то в другую сторону пошл Наоборот в сторону уменьшения уменьшения требуемых ресурсов и Сначала был проект он так назывался довольно странно который по сути был тоже под множеством но там фры не помню что ти можно было поместить не то что на флешку чуть ли не дискету коро вот а сейчас есть проект называемый P rubi это супер маленький ru для очень маленьких устройств и вот он набирает тоже большую популярность как опять же в индустрии вот различных там уже супер микроконтроллеров Вот и сейчас они что мне интересно как бы я слежу так они тоже в тренде они ещё этот Пика rubi уже делают компилятор М И это круто потому что это позволит там запускать какой-то рукод скриптом образом откуда угодно вот я в э тему тоже сильно там слежу и в том же у нас собственно была и есть ещё до сих пор но я хочу всё это выпилить поддержка Руби скриптинга тоже там для каких-то супер сложной логики если нужно сделать свою в сервере вот и она работает как бы R встраивается в Go и вызывается оттуда это прикольно но так как само направление не поддерживается Я как раз хочу это переделывать нам и вот сейчас как раз появился ru который компилируется там из коробки очень просто в вас там со всеми новыми стандартами это прямо тоже относи направление куда можно идти то есть это встраиваемый Руби по сути куда угодно от устройств до других программ и это интересный Такой сценарий это прикольно да то есть Это унификация упрощение конечно большая для всех те кому это актуально Конечно слушай ну да Слушай ещё один момент тогда вот опять же более наверное широкой аудитории и не знаю будет ли смотреть мой племянник этот подкаст кстати он когда-то учился на кстати питона по-моему Вот как я пытаюсь молодёжь привлекать к Руби это сложно на самом деле Ну вот Dragon Ruby Да я всегда упоминаю потому что ну интересно что ты можешь что-то написать потыкать но есть ещё один проект для любителей музыки который объединяет себе Руби Илан на самом деле что что для меня это вообще прям Вау типа идеальная штука проект называется Sonic Pie я не знаю как правильно это назвать программируемый синтезатор музыки что ли как-то Так ты музыку пишешь короче на Руби при этом под капотом там машина выполняет отвечает за оркестра за выполнение инструментов и прочего но непосредственно музыкальная композиция описывается кодом на Руби Это очень прикольно это делает см Сэм н по-моему зовут парень Он из UK он даёт концерты он буквально там типа несколько лет назад давал концерт Ну с какой-то певицей Он играл на ноутбуке играл музыку кодом а кто-то пел в Альберт холе просто в Лондоне Чтобы понимать насколько это крутая интересная штука которая выходит за пределы вообще программирования Да но тем не менее там в качестве языка для написания музыки используется ру Да там бит там с такой-то частотой таким-то инструментом погнали СП собственно понимаешь да музыка как код это просто мне кажется тоже такой разрыв шаблонов для людям которые интересуются музыкой и кодом одновременно это проект который обязательно Т порен собственно тоже небы просто его использует очень прикольным образом А я даже про этот проект знаю потому что он много лет назад ещё когда Наверное я активен был на какой-то из конференций Просто у меня флешбеки что на конференции кто-то выступал с этим и скорее всего это он был и Это показывал да вот это крутой проект именно как бы как познакомиться с Руби при этом не заниматься программированием Да очень интересно про свой опыт пару слов скажу но это правда дела уже минувших дней в основном был такой момент когда на Руби писал много неожиданно инфраструктурных проектов Да они до сих пор существуют это шеф это Папи даже лош Кто не знает и по-моему или ла Я пою короче кто-то вот из этих вот для логирования инструментов там написан на Руби Вот но потом конечно ну и Гран естественно написано на Руби но потом естественно когда появился го там просто был такой типа соревнование что-то на py типа да и что-то на ру а потом в какой-то момент конечно всё просто ушло в го Ну и понятно я согласен с этим и в общем-то го стал мейнстримом и перехватил на себя Все инфраструктурные инструменты То есть то что осталось Это скорее поддержка уже вот того что было Ну да здесь ещё обычно вспоминаю есть большой фреймворк Я не знаю насколько он сейчас живой для сарка Met он как-то так называется то есть это тоже как бы не веб написанный на Руби который использует безопасники для каких-то тестов и прочего Ну я не работал я знаю что он есть он Нару Ну и на деле которым есть любого нано Маково тоже это просто C Нару вот до сих пор как бы если открыть формулы м каких-то там программ то это просто ru DSL который описывает собственно что Откуда взять Как скачать Как установить тоже популярный инструмент Короче все так или иначе пользуются продуктами языка которые на НМ написаны знают они этого или нет Да вот Не ну для обычные люди пользуются гораздо чаще чем нам кажется там опять же классический пример - это помк наверное да который работает на рельсах вообще были сливы что веб который обслуживает Теслы тоже в общем-то на рельсах но как бы стопроцентного подтверждения этому нет Есть какие-то такие вот то есть короче э в этом смысле язык тоже жив э и окружает нас в общем-то много где Да Вов тебе большое спасибо что ты пришёл и мы так с тобой подробно разобрали Руби Я подозреваю что часть людей наверно многие ожидали что мы тут про рельсы будем говорить и мы поняли что у нас так много мы поговорили про Руби что в рельсы просто сюда не всунуть и более того там совсем другой уровень абстракции совсем другие проблемы и обсуждать Это явно надо в другом контексте потому что даже скорее как будто не очень связанные вещи честно говоря Несмотря на то что рельсы имеют очень важное значение для Руби всё-таки это прикладная ве и там решаются немножко другие проблемы чем те которые мы с тобой здесь сейчас разбирали так что очень тебе большое спасибо что пришёл и рассказал Да спасибо за приглашение было интересно да Сам не ожидал что будем 2 часа про Руби разговаривать дадада надеюсь нас послушают все Руби и напишут всё что они об этом думают потому что у тебя там более Библиотечный опыт у кого-то Чуть более другой то есть тоже в Руби много всяких разных таких Саб культур скажем это так да и добавить свои 5 копеек на тему того где он используется какие происходят штуки что им нравится не нравится и вот те вопросы которые мы с тобой касались особенно Ну инструментария типизации подходов Да что сейчас меняется как Руби в Это встраивается и будет ли он оставаться или меняться вместе с миром в этом смысле и не забудьте подписаться на подкаст в ютубер канал организованное программирование в телеграме где я регулярно рассказываю про эффективную
разработку Oh
[музыка]
Creators and Guests

