Почему WhatsApp, Discord и другие гиганты выбирают Erlang? | Юрий Жлоба | #30

  Рет қаралды 9,990

Организованное программирование | Кирилл Мокевнин

Организованное программирование | Кирилл Мокевнин

Күн бұрын

Пікірлер: 110
@mokevnin
@mokevnin 9 күн бұрын
Вы пробовали писать на Phoenix? Как вам?
@artemiy_uo
@artemiy_uo 9 күн бұрын
Очень
@alexmid
@alexmid 9 күн бұрын
огонь, работаем почти 5 лет, полет нормальный. LiveView - отлично
@megaman13able
@megaman13able 8 күн бұрын
Эликсир + Феникс это огонь! Жаль вакансий мало(
@Morhunov
@Morhunov 8 күн бұрын
Вот это ты плотно, концентрированно взялся за всë самое интересное! Спасибо огромное, Кирилл! Контент, топ! Вообще красавчик! Можно вот этого вот по-чаще?
@7daysmma
@7daysmma 8 күн бұрын
Космос
@kberestov
@kberestov 8 күн бұрын
Спасибо огромное именно за этого гостя, давно ждал Юрия.
@AleksTi-p2k
@AleksTi-p2k 9 күн бұрын
Не думал что серии подкастов тут, превратятся в подкасты которых с нетерпением жду! Отдельное спс за то что интервью выходят и в аудио формате, в яндекс музыке врубаю если на прогулке и тп.
@alex4everyours
@alex4everyours 8 күн бұрын
Крайне интересная тема и разговор, благодарю участников! Спасибо Кириллу за то, что делает вероятно один из самых классных подкастов в ру-сегменте и за столь опытных гостей-инженеров.👍Очень расширяет кругозор.
@Kpy3aDeR
@Kpy3aDeR 8 күн бұрын
Наконец-то Юра дошёл до вас, ждал этого очень долго. Спасибо за выпуск. Несколько комментариев к выпуску, если позволите: - Джо Армстронг всё-таки физик, не биолог. - Эрланг соответствует ООП Кея в определениях, данных к Smalltalk 72, в более новых версиях определений (Smalltalk 80 и позже) уже нет, так что этот тезис спорный. Но я сам люблю его приводить в дискуссиях с адептами ООП. :) - Появление и развитие Эликсир сильно подстегнуло развитие Эрланга и BEAM. - Архитектура Эрланга напоминает скорее первые механические коммутаторы, на это тему есть замечательное видео "100 лет Эрланга" (на английском), рекомендую. - Тулинг Эрланга благодаря усилиям WhatsApp сдвинулся с мёртвой точки, появление и развитие Erlang language platform откровенно радует. - Математика, встроенная в BEAM, особенно с большими числами, становится быстрее, спасибо JIT и советскому математику Карацубе (который придумал эффективный алгоритм умножения больших чисел). - Свалить современный JVM в stop-the-world надо постараться, но полностью риск сбрасывать со счетов нельзя. Спорный тезис. :) - Да, шедулеры настраиваются, busy-wait на них отключается, это первое что делают для сервисов, которые разворачиваются, например, в кубернетес. Тогда BEAM не будет "жечь" циклы на процессоре. - Эрлангисты уходят в Го, потому что больше предложений на рынке, а вот про обратное не слышал. - Книг по Эрлангу действительно мало, язык практически не меняется. - Основное поле деятельности команды, насколько это можно судить, это совершенствование BEAM и OTP. Изменения синтаксиса очень редки, консервативны и подчиняются прагматике использования языка.
@baha_ospanov
@baha_ospanov 8 күн бұрын
Отличное ознакомительно видео для расширения кругозора рядового разработчика по эрлангу и эликсиру
@petergarshtja3633
@petergarshtja3633 8 күн бұрын
В индустрии digital marketing где я проработал 4 года, центром экосистемы(1.5 миллионов запросов в секунду) написан на Erlang. Мне очень понравилось общаться + работать с программистами.
@saen5
@saen5 8 күн бұрын
Коммент не по этой теме: очень понравился выпуск по геймдеву. Кажется, я дожил до состояния, когда мне интересно слушать "анафига" оно вообще. Т.е. зачем мы это все кодим, концепции, акторы, функторы... Где они решают какую боль ? Сколько на этой боли зарабатывают другие люди(т.е. эквивалент востребованности). Если получится позвать еще каких-то гостей, которые смогут в код\архитектуру + в бабло = будет восхитительно.
@oeaoo
@oeaoo 7 күн бұрын
Люблю послушать про что-то "потустороннее" типа вот этого вот. Увидел на стене у гостя джазовые "иконы", за это отдельный респект!
@ProGamerru
@ProGamerru 8 күн бұрын
Сначала Rust, теперь Erlang - канал превращается в хардкорный. Для программистов, которые добиваются успеха, а не просто пишут код.
@artemiy_uo
@artemiy_uo 8 күн бұрын
Спасибо за продвижения прекрасного!
@ivan7094
@ivan7094 9 күн бұрын
Супер. Давно ждал. Спасибо!)
@hurricane-rus
@hurricane-rus 4 күн бұрын
Спасибо за интервью! Что стоило бы улучшить по итогам: 1) Когда перед вопросом идет описание контекста вопроса на 2-3 минуты - это обычный человек не способен воспринять. Уже через 30 секунд описания контекста начинаешь забывать, с чего все началось, и думаешь "ну когда ты наконец задашь вопрос-то?!". Надо вопрос формулировать коротко (не дольше 15-20 секунд) - и пусть гость ответит так, как понял. А дальше его корректировать наводящими вопросами, если он не до конца ответил на вопрос. 2) Я бы поменьше говорил про себя и больше про гостя. Да, понятно, что Code Battles - важный проект для Hexlet, но только он никакого отношения не имеет к Юрию. Собственно Юрий ничего и не сказал про этот проект, кроме каких-то общих концептов, применяемых на проектах с эрланговской виртуалкой. Лучше было бы спрашивать Юрия про применение эрланга в его проектах (например, в Wargaming) - и ему было бы это интереснее.
@ВладМилаш-э1с
@ВладМилаш-э1с 7 күн бұрын
Хороший подкаст, хороший канал. Продолжайте выпуски ❤
@tertiumorganum5665
@tertiumorganum5665 6 күн бұрын
Думал с ума схожу, кот где то орет. Смотрел с выключенным экраном😂
@АлександрЗверев-й1х
@АлександрЗверев-й1х 4 күн бұрын
Спасибо большое. Темы отличные! Гости очень интересные!
@mokevnin
@mokevnin 4 күн бұрын
Рад, что понравилось!
@artemiy_uo
@artemiy_uo 9 күн бұрын
Огонь! Наконец-то Эликсир!
@MrOldschoolrocknroll
@MrOldschoolrocknroll 7 күн бұрын
Немного дополню: 1) Для JVM уже давно есть GC с минимальным stop the world (Shenan doah, ZGC) 2) Scala активно используется в бигтехе для написания сервисов: Яндекс, Т-Банк и т. д. 3) В Scala актуальный стэк - это structured concurrency via effects (IO monad): Cats Effect, ZIO
@azabroflovski
@azabroflovski 8 күн бұрын
Жалко раньше не интересовался Elixir/Erlang, подумываю как основной язык юзать (хотя бы на пет проектах), язык имба) относительно недавно потыкал его, просто взрыв мозга от BEAM
@akirbe1
@akirbe1 8 күн бұрын
Спасибо за подкаст. Ерланг - ВещЪ ;) для "своих" задач реально экономит железо: для долгоживущих проектов предпочтительнее, но никогда не известно что станет долгоживущим ;)
@VirtuousSaint
@VirtuousSaint 7 күн бұрын
Биологом как раз был Алан Кей, это он в статье про разработку Smalltalk писал про взаимодействие клеток, и в интервью говорил, что прототип объектно-ориентированных систем - это Интернет.
@TheRedbeardster
@TheRedbeardster 8 күн бұрын
Да, есть еще книжка Стива Виноски: "Построение масштабируемых систем на Erlang" с камбалой
@csm-csm
@csm-csm 6 күн бұрын
Хорошо, что подняли тему акторов. Они хорошо себя зарекомендовали и работают не только в Erlang. Например, система СБП написана с применением Akka. Есть несколько докладов от их команды с конференций. Однако говоря о модели акторов нельзя забывать её главного автора Carl Hewitt. Модель акторов, по его словам, появилась как попытка промоделировать вычисления с помощью аналогий из физики, где ничто не происходит мгновенно, а все взаимодействия распространяются со скоростью
@TheLevius
@TheLevius 8 күн бұрын
Всегда было интересно глянуть этот язык, жаль что писать на нем за деньги будут только избранные
@klev1983
@klev1983 Күн бұрын
на сколько помню вроде авиасале на элексир ушли в самом начале и были безумно рады результату.
@vladprud9984
@vladprud9984 5 күн бұрын
Дополню, в Go шедулер точно также работает с CPU задачами, как в Erlang. Никакой блокировки цикла событий не происходит
@delir0
@delir0 8 күн бұрын
Спасибо! Правда зацепило про "в го вы бы были ограничены одним ядром" - не ограничены. В го, в расте и много ещё где рантаймы work-stealing. Есть гринтреды (в го это горутины) и системные треды, которые обычно запускаются по количеству ядер процессора. Эти гринтреды могут переноситься с одного системного треда на другой (если у одного системного треда закончилась работа, он идёт в глобальную очередь, а потом идёт воровать работу у других тредов) и точно также эффективно распределять нагрузку по ядрам. В расте tokio делает ровно тоже самое (на самом деле это клон горутин для раста), rayon тоже work-stealing.
@uniers
@uniers 8 күн бұрын
Гринтреды это и есть системные треды, но с зеленым флагом, поэтому это называется концепцией зеленых потоков (гринтредов). Когда зеленый флаг, поток не простаивает, эффективно используется процессор. Внутри этих самых системных зеленых потоков работают горутины, если горутина имеет красный флаг, тогда внутри этого потока происходит переход на другую горутину. Когда в данном потоке заканчиваются горутины на исполнение, поток забирает горутину у другого потока, это называется work-stealing!
@grumpy-coder
@grumpy-coder 8 күн бұрын
Всё так, но в Erlang у тебя целая экосистема, по сути ОС в комбинации с языком программирования, решающая задачи многопоточности, долгоживущих коннектов и неубиваемости за тебя, а с Elixir’ом ещё и метапрограммирование с вебом добавились (а ещё есть Nx, аналог NumPy). На go такое написать можно (и написано, есть реализация OTP на go, и web-фреймворки), плюс кубер, который даёт похожие плюшки. Но количество приседаний, для того, чтобы завести отказоустойивую систему на go+k8s и на erlang/elixir отличается, не в пользу go.
@uniers
@uniers 8 күн бұрын
@@grumpy-coder А как обстоят дела у Erlang насчет DLL, можно ли подключить динамическую библиотеку?
@Kpy3aDeR
@Kpy3aDeR 8 күн бұрын
@@uniers Да. Есть FFI для C, есть JInterface (для Java).
@delir0
@delir0 8 күн бұрын
@@grumpy-coder Кто ж спорит
@alexmid
@alexmid 8 күн бұрын
Как ни странно эту звучит, но изучать Elixir лучше с книги по Erlang "Learn You Some Erlang for Great Good!". А потом книги, курсы по Elixir. Так будет понятнее что такое Elixir по своей сути.
@СлаваВолошин-ы3с
@СлаваВолошин-ы3с 8 күн бұрын
было довольно интересно узнать, что есть язык который заточен под многопроцессорность железа, многопоточность данных
@kberestov
@kberestov 8 күн бұрын
Могу порекомендовать книгу Саши Юрича "Elixir in Action" (3 издание) и его выступления на конференциях, особенно о Concurrency, в котором он рассказывает как реализует даже инфраструктурные штуки внутри приложения на Elixir
@Mytest437
@Mytest437 6 күн бұрын
А почему только стеке Erlang и Elixir. Там еще и Gleam есть)
@mikepotanin
@mikepotanin 8 күн бұрын
Другая, чем-то даже лучшая модель акторов, реализована в языку Pony. Там актор не ждет собщения, а активируется собщением, если свободен. Чем-то похоже на асинхронные сигналы в qt. Получается меньше возможностей для взаимной блокировки акторов и не мешает типзации, но сложнее реализовать нетривиальные протоколы взаимодействия, когда вразном состоянии могут обрабатываться невсе типы запросов.
@pewpewpew8613
@pewpewpew8613 8 күн бұрын
паттерн матчинг бинарных данных выглядит очень классно, даже странно, что подобное не реализовывают в более современных языках
@jonyjinger
@jonyjinger 7 күн бұрын
gRPC
@jonyjinger
@jonyjinger 7 күн бұрын
ProtoBuf
@TheRedbeardster
@TheRedbeardster 8 күн бұрын
А прикольные у Юры котики
@vtm9740
@vtm9740 8 күн бұрын
О, codebattle 🎉
@unzerror8208
@unzerror8208 8 күн бұрын
❤❤❤❤❤
@kberestov
@kberestov 8 күн бұрын
Эх, жаль, что и в этом интервью не поговорили конкретно про то, как найти работу на Эрланг/Эликсир свитчеру без реального опыта. На рынке РФ вакансий меньше 10, сам себе опыт не нарисуешь, а без опыта в года 2-3 резюме даже не рассматривают. Приходится учить Go только из-за того, что работы много и ЗП высокая, хотя хочется именно в Эрланг/Эликсир. Было бы здорово услышать от ребят с реальным опытом из мнение на счет работы в РФ и вообще перспектив применения этих языков в РФ.
@javascuft
@javascuft 8 күн бұрын
Откуда свитчишься?
@kberestov
@kberestov 6 күн бұрын
@@artemiy_uo Куда, если не секрет? И что вы написали в резюме, чтобы заинтересовать?
@artemiy_uo
@artemiy_uo 6 күн бұрын
@@kberestov еком. Много опыта в целом и на руби. Хорошо прошел собесы.
@VladimirKompaniets-j7m
@VladimirKompaniets-j7m 6 күн бұрын
@@artemiy_uo Поддерживаю коммент выше. Можно подробнее про ваш опыт изучения и устройства. Сам бы с удовольствием свичнулся бы с js и react native
@mykolamorozov2099
@mykolamorozov2099 2 күн бұрын
если для опрационной системы выгдляит так, что CPU загружены под 100 процентов, то как вообще устроен мониторинг приложений на виртуальнйо машине BEAM? Обычный мониторинг, как я понял, будет бесполнезным?
@KMiNT21
@KMiNT21 8 күн бұрын
Грин среды ухи резанули хорошо так. :) Тут уже два коммента в пользу новых выпусков по Clojure. Вот бы кто нашелся на Hylang. Хотя... без шансов. Про этот питоновский ЛИСП даже мало кто слышал, наверное. Та и ... в целом.... что там особо говорить. Бери пиши да кайфуй от полной совместимости со всеми Python библиотеками.
@atmorozhenka
@atmorozhenka 8 күн бұрын
Хочу про Scala и Haskell. Scala и Haskell! Scala и Haskell! Scala и Haskell!
@ITksh-zp1ob
@ITksh-zp1ob 8 күн бұрын
судя по вакансиям на бирже труда никто его не выбирает
@MovieMakingTeamAAA
@MovieMakingTeamAAA 8 күн бұрын
все это напоминает корутины в котлин 😌
@tadeuskozlovski7286
@tadeuskozlovski7286 4 күн бұрын
Нужен подкаст со спецом java.
@mokevnin
@mokevnin 4 күн бұрын
мы уже запланировали съемку подкаста с java специалистом - предварительно планируем выпустить с ним подкаст в конце февраля - начале марта.
@pewpewpew8613
@pewpewpew8613 8 күн бұрын
В го ведь добавили вытеснение, что бы одна "зависшая" горутина не стопила весь тред. Да и непонятно почему го прираваняли к однопоточным язкам, он может утилизировать все ядра.
@alexmid
@alexmid 8 күн бұрын
Главное отличие Erlang от всех других, что весь ваш код преобразуется в нечто похожее на ассемблер, команды которого выполняются виртуальной машиной. Для выполнения каждой такой элементарной "ассемблерной" команды дергается С-функция. Это и есть редукция (преимущественно). Эти элементарные команды не могут надолго "зависнуть", просто потому что они элементарные. Это дает возможность виртуальной машине в любой момент начать/остановить исполнения вашего кода ("ассемблерной потрянки"). В отличие от других языков в Erlang вытеснение сделано на архитектурном уровне, без каких либо хаков и прерываний, системных вызовов, чтобы остановить выполнение нативного потока процесса и вытеснить задачу которой он сейчас занят
@pewpewpew8613
@pewpewpew8613 7 күн бұрын
​@@alexmid так и в го насколько я знаю не используются прервывания и системыне вызовы для вытеснения
@alexmid
@alexmid 7 күн бұрын
@@pewpewpew8613 и каким образом там происходит вытеснение?
@pewpewpew8613
@pewpewpew8613 7 күн бұрын
@@alexmid да вроде компилятор расставляет чекпоинты, на которых рантайм решает продолжать ли текущую горутину или надо её стопнуть. шедулер го ведь в юзерспейсе находится и горутина не мапится на тред 1 к 1. в одном треде может быть запущено много горутин.
@alexmid
@alexmid 7 күн бұрын
@@pewpewpew8613 тогда можно соотнести код го между чекпоинтами который не может быть вытеснен с одной ассемблерной командой в ерланге которая тоже не может быть вытеснена, думаю тут разница очевидна. Надо смотреть что такое чекпоинты, как они работают, где и как расставляются
@itaopro8396
@itaopro8396 8 күн бұрын
asn1 пытались декодировать через php и go, все было плохо)
@michaelG1122
@michaelG1122 Күн бұрын
Нет никаких сколько-нибудь реальных инструментов для работы с Erlang, Elixir и Gleam. Пока они не появятся, никаких систем делать на BEAM VM не получится. Только нишевые узко-направленные вещи.
@mykhailo888
@mykhailo888 9 күн бұрын
По кложуру что то будет?
@TheDiNoWaR
@TheDiNoWaR 9 күн бұрын
Давно уже было
@KMiNT21
@KMiNT21 8 күн бұрын
Лучше по Hylang :)
@aleksandrbeloushkin7971
@aleksandrbeloushkin7971 8 күн бұрын
Я попробовал год назад из любопытства именно erlang, нашел бесплатный курс на Ютубе, очень интересно и расширяет сознание программиста. Конечно переходить я не буду, но для души можно что нибудь поделать. Эликсир не понравился от слова совсем
@nikitatimofeenko9351
@nikitatimofeenko9351 8 күн бұрын
Предлагаю переименовать канал в организованное функциональное программирование, а если серьёзно, то ждём Олега Нижникова со Scala и Виталия Брагилевского с Haskell
@ITksh-zp1ob
@ITksh-zp1ob 8 күн бұрын
у нас в фирме кусок кода написан на эликсире, какая же это боль поиск новых сотрудников и постонный поиск кого-нибудь. глупый выбор в прошлом сейчас аукается нам постоянными проблемами. Плюсы у языка-фреймворка есть, но в основном академические, на практике сервер на пхп справляется так же хорошо, но разраба найти на порядок легче. как и скала, мертвый язык на продакшене, но хорошая учебная платформа.
@Илья-с1л6э
@Илья-с1л6э 8 күн бұрын
авиасейилс?)
@ITksh-zp1ob
@ITksh-zp1ob 8 күн бұрын
@@Илья-с1л6э нет =)
@владимирсенцов-р1ю
@владимирсенцов-р1ю 4 күн бұрын
Если бы в то время был Go, Erlang бы не создали
@artyomby4125
@artyomby4125 8 күн бұрын
язык интересный, но вакансий около 0. по синтетическим тестам в вебе, которые видел, производительность на уровне современного python. синтаксис elixir с его end-ами сильно отталкивает. на фоне Go, который и производительней и проще в написании кода, и библиотеки есть под все необходимое + компиляция в бинарь без ВМ. выглядит как проигравший эту гонку. он был прорывом в свое время, но конкуренты обогнали
@mokevnin
@mokevnin 8 күн бұрын
Эрланг по скорости нельзя сравнивать в лоб. Сам по себе он не быстрый, но он не создавался чтобы быть быстрым в однопоточном режиме, он создавался для скейлинга и soft realtime и для этих задач остальные языки тупо не подходят
@ITksh-zp1ob
@ITksh-zp1ob 8 күн бұрын
@@mokevnin а чем это лучше корутин в котлине или вартуальных фредов в яве? ну т.е вообще ничего в нём нету
@uniers
@uniers 8 күн бұрын
@@mokevnin Не вижу преимущества для скейлинга и soft realtime по сравнению с Go.
@mokevnin
@mokevnin 8 күн бұрын
@@uniers для soft realtime должен отсутствовать stop the world + erlang не прсото так функциональный, там крайне редки рейскондишены и почти отсутствует разделяемая память. Писать конкурентные приложения на нем проще чем где бы то ни было, это могут подтвердить все, кто пытался писать на эрланге и чем-то еще подобные системы, но го конечно победил в большинстве мест, что тут скажешь. Хорошие штуки не всегда первые
@mokevnin
@mokevnin 8 күн бұрын
@ это вообще несопостовимые вещи, в эрланге кардинально другая модель работы, где процессы и их использование ни имеет ничего общего с тем что люди себе представляют когда думают о тредах (у кого нет опыта в эрланге). Поэтому эрланг интересен, все кто его пробуют, растут в инженерном плане, так как видят вообще другой подход к работе.
@vitalygrigorev8694
@vitalygrigorev8694 8 күн бұрын
RTOS
@Tosha.V
@Tosha.V 8 күн бұрын
Что за гарнитура?
@mokevnin
@mokevnin 8 күн бұрын
@@Tosha.V shokz
@ITksh-zp1ob
@ITksh-zp1ob 8 күн бұрын
а главный результат 1.5 часов ... ничего не лучше - это вообще не обсуждалось. мертвый язык
@RusFarFaz
@RusFarFaz 8 күн бұрын
давайте про clojure. для меня это пока темный лес, интересно было бы послушать.
Rust: зачем выбирать этот язык в 2025 году?  | Дмитрий Коваленко | #29
1:36:15
Организованное программирование | Кирилл Мокевнин
Рет қаралды 17 М.
Ключевые тренды 2025: что ждет стейт-менеджмент в будущем? | Артём Арутюнян | #31
2:10:29
Организованное программирование | Кирилл Мокевнин
Рет қаралды 3,1 М.
A Child's Big Mistake Turned Into an Unforgettable Gift #shorts
00:18
Fabiosa Stories
Рет қаралды 43 МЛН
На ЭТО можно смотреть БЕСКОНЕЧНО 👌👌👌
01:00
БЕЗУМНЫЙ СПОРТ
Рет қаралды 4,4 МЛН
The perfect snowball 😳❄️ (via @vidough/TT)
00:31
SportsNation
Рет қаралды 77 МЛН
Что такое OpenAI Operator и как Deepseek пошатнул фондовый рынок | Влад Тен
29:05
Как адаптироваться к кризису на рынке IT? | Кира Кузьменко | Организованное программирование #25
1:46:08
Организованное программирование | Кирилл Мокевнин
Рет қаралды 48 М.
Дженерики, горутины и перспективы Go: взгляд изнутри | Алексей Палажченко | #26
1:51:25
Организованное программирование | Кирилл Мокевнин
Рет қаралды 13 М.
8 ЛЕТ Опыта в IT за 1 Час | Все Что Знаю
57:42
Будущее фронтендовых приложений. От запросов, к движкам синхронизации / Андрей Ситник / #22
1:38:43
Организованное программирование | Кирилл Мокевнин
Рет қаралды 24 М.
A Child's Big Mistake Turned Into an Unforgettable Gift #shorts
00:18
Fabiosa Stories
Рет қаралды 43 МЛН