Пишем код, за который не стыдно. Разбираем базу, даем рекомендации и встречаемся с умными людьми
конкурирует там и ещё парочкой компаний то есть вы одна из самых больших команд ложе программистов в мире сертифицировать в fda как бы и мы там как бы кирпичик в этой платформой момент видимо резко всё схлопнется да и у тебя все все со всеми будут интегрированы Ну конечно Каждый раз когда переключаешься там на Python на на JavaScript или на jav Там как бы начинаешь страдать у тебя программа дерево не в смысле ты такой понимаешь оно там где-то транслируется в дерево а оно вот перед тобой Ты как Нео в матрице и манипулирует
Привет друзья с вами Кирилл макевнин ведущий подкаста организованное программирование тема сегодняшнего подкаста ложа которую мы обсудим вместе с Колей Рыжиком с которым я очень давно знаком и как Коля про себя говорит пассионарный инженер и художественный руководитель компании сарай Коль привет жи немножко про себя как организованная преступность ня зовут
и один из фанде компании heth Samurai мы делаем медицинскую платформу То есть это такой back Service или там модный сейчас дафрик который позволяет хранить данные в стандартном формате по пише раздавать строить всякие аналитические пайплайн после или строить приложение поверх То есть если так себе представить Аля там не знаю гуло firebase там или supabase вы видели да в котором уже созданы таблички под медицинские сущности и с кучей медицинской специфики Ну и заодно я ещё драйв стада там работаю в рабочих группах которые создают этот стандарт вот недавно мы выпустили стандарт пишется бы мы с ним с самого начала по сути вся компания вращается вокруг этого стандарта сейчас этот стандарт завоёвывает мир как бы вместе со стандартом завоёван с Гуглом
micros с собой последний раз про этой темы разговаривали вы делали прямо конкретный специфический софт под конкретные больницы скажем так госпиталь Ну мы уже Да мы уже Достаточно давно стали продуктовыми то есть мы делали софт Потом нашли стандарт потом поняли что на основании стандарта можно сделать платформу и наш опыт делания как бы под конкретные больницы как бы применили в платформу и уже там не знаю лет 10 наверное мы делаем продукт Ну так активно делаем пять наверное Ну да да То есть вы какое-то время недавно когда вы начали в это врем переключаться и смысл в том что давай чтобы правильно нас понимали То есть это некая платформа которая в первую очередь в Штатах используется опять же теми же самыми госпиталя разными провайдерами для того чтобы через них или я неправильно пошёл в сторону она используется во всём мире поскольку стандарт международный это платформа деде то есть мы как бы даём разработчикам платформу они на ней делают конечную систему Давай примеры систем чтобы люди понимали да да ну система может быть Вот так называемая Медицинская информационная система по-русски или HR по английски то есть Прямо система в которой Там врачи например работают да Или какой-нибудь портал пациента в котором пациент может посмотреть свои анализы там ещё что-то записаться к врачу и ну и мы как бы по всему миру стоим то есть там на нас например там в UK сделан государственный как бы портал пациента там половина популяции в Чуваши как бы с фирмой алькона мы сделали региональную мис в которой Там как бы все Чуваши записываются на приёмы там реестры болезни и так далее вот в Штатах Мы стоим там не знаю от хлс планов до госпиталей до как бы чарок которые на нас что-то пишут много стартапов всяких медицинских там ai не ai Ну вот недавно ребята сертифицировать Как Medical Device prediction сейчас вылетело слово из головы Ладно пропустим сегодня сделаю систему А вот система которая предсказывает sepsis сертифицировать е в fda как бы и мы там как бы кирпичик в этой платформою данные и могут предсказать когда у человека сепсис и как бы заранее его госпитализировать потому что ну такая Прямо большая опасность как бы я могу сказать что наверное являюсь потребителем вот этих всех штук потому что вот у в Штатах Наверное это развито Ну достаточно сильно да то есть когда Apple девайс берёшь у тебя там вот сейчас появилась вот эта интеграция Я просто это название даже вот этот вижу вот этого вашего стандарта он там пря проскакивает бы Apple he Kit в значительной степени построен на фаере И когда ты получаешь там данные из больнички даже с какой-то долей вероятностью там стоит на которые отдаёт дадада потому что я прям заметил что в какой-то момент это прямо попёрло то есть они резко подключать всех провайдеров вот у нас тут несколько крупных лабораторий они у меня все есть соответственно что-то приходит Я получаю это туда всё между собой стало интегрироваться и и это конечно вау я помню просто много лет назад мы с тобой про это говорили когда этот стандарт ещё вроде как только придумали ни у кого его не было и Судя по тому что ты говоришь Понеслась Да Понеслась Ну то есть там в частности в Штатах как бы регуляция заставили его поставить в больнице то есть вендоров обязали поддержать этот стандарт ИП тоже обязали поддержать иро сечас тоже не отстаёт и другие страны Поэтому как бы он много где сейчас становится таким центральным А когда у тебя уже больнички могут отвечать поэтому AP несложно сделать Apple прикрутить или ещё что-нибудь ну дада да получается в какой-то момент видимо резко всё схлопнется да и у тебя все все со всеми будут интегрированы Да но это вот проблему ипе били на Верхнем уровне мы решаем чтобы системы могли обмениваться данными между собой и понимать данные Ну мы довольно долго про это проговорили Да давай вот это призм потому что то есть что мы понимаем это сложнейшая система это довольно интересная область непростая которая не такая уж мягкая Да она сложная тяжёлая неповоротливые большая там очень много всяких ребят и вдруг вы тут со своим продуктом внезапно из России с ложей появляетесь Ну мы не из России у нас фирма как бы американская Да появились мы не внезапно со стандартом мы там вот как 10 лет назад как он появился там ещё когда группа 20 человек над ним работала мы уже присоединились к сообществу стандарта и к самой группе рабочей мы поверили в него Ну и не зря выросли считаю вместе с ним то есть это достаточно длительный процесс и если там нас поспрашивать как бы ребята вот как бы в этой нише мы достаточно известны Мы со стране я как бы с этим стандартом мы евангелием е мы делаем конференцию тут сейчас через неделю будет конференция в Португалии как бы нами организованная по этому стандарту делали в России делали митапы в Штатах Там как бы в в сан-франциско поэтому мы достаточно заметная компания Пусть Мы небольшая как бы заметная вот этой ниши Да а вот с точки зрения аудитории с которой там я пересекаю программисты кто-то знает про то что вы подобные вещи делаете Но конечно ваша Слава наверное Техническая она больше связана именно непосредственно с тем что в какой-то момент если я не ошибаюсь ещё старые ваши решения были на Руби в какой-то момент вы что-то такое было да по-моему с Руби Да первая система как бы Госпитальная было написано RS и в какой-то момент вы перешли полностью на ложу и скажи пожалуйста сколько вы уже на ней Пишите только ли у вас ложа Ну и какой-то там Циферки чтобы было понятно объёмы кода там что-нибудь ещё Давай такое классное Ну у нас как бы продукт полностью написан на ложе то есть и фронт и БК как бы ложе ложе скрипт как база данных У нас постгрес у нас только постгрес то есть мы как такие активные пользователи постгрес у нас есть небольшая жава скриптовая команда которая помогает некоторым кастомер делать уже на нашей платформе решение но вся продуктовая деятельность внутри на кжу если там нас просят что-то сделать под ключиками берёмся то обычно тоже мы это делаем на кжу так сейчас нас там человек 60-70 как бы и это там 90% это ложе программист Ничего себе Вот это вы выросли последний раз когда я с тобой чекал по-моему чек 20 было Если я не ошибаюсь то есть вы одна из самых больших команд ложа программистов в мире Ну получается на самом деле
Да наверно в Ну банке наверное побольше там И как бы ну из продуктовых наверное одна из самых больших да лож компании Обалдеть Как ты вырос за это время это серьёзно Не ну мы ещё сопротивлялись росту то есть мы могли больше мы сознательно не хотим расти Слушай а правильно понимаю что платформа - это это некое единое решение монолитное которое вы можете под конкретных заказчиков делить деплоить или это всё-таки сааз решение с точки зрения продукта технически достаточно простое решение это gvm сервис и постгрес как бы мы это даём и как сааз в разных облаках там во всех публичных и ребята могут деплоить там вплоть до бара металла Поэтому да в этом наша фишка там по сравнению с облачными ребятами с тем же Гуглом майкрософта они как бы та они у себя в облаках сидят как бы мы можем стоять где угодно там хоть на телефон Можно наверное поставить Угу я понял это некое конкурентное преимущество Ну да это наша как бы преимущество перед облаками защиты объём кода просто примерно можеш сказать Ой я уж так и не помню я могу зайти посмотреть Ну ну как бы много много точно в 10 раз меньше чем есть как бы Java реализация сервера вот этого стандарта Да и я сравнивал когда-то ещё года три назад у нас было кода в 10 раз меньше при условии что функционала у нас было там в два раза больше чего поэтому количество кодо в кжу скорее отрицательное как бы Метрика чем положительная Но это интересный феномен потому что мы понимаем что это не синтакс Да но синтакс там ну в полтора раза может ужа код но не в 10 Мы в 10 раз меньше соответственно меньше кода проще понимать проще менять вот ну знаю десятки тысяч срок боюсь обмануть могу зайти на посмотреть я име вду это не сот тысяч сейчас ну наверное меньше Да оно обозримое и мы пытаемся держать это обозримом и на лажу очень хорошо кот жм давай про это и поговорим расскажи вообще историю перехода то есть в какой момент вдруг тебе пришло это в голову Что стало триггером им
в Руби Да и я там Достаточно долго делал изыскание в ооп что же такое оп я вот пришёл из Академии достаточно поздно и начал как бы всех спрашивать манья как бы никто мне не мог ответить Зачем наследование Почему оп это хорошо Где же теория опш её пепер начал читать но всё было не похоже на теорию Ну то есть вот был этот поиск Да как как делать правильно софт как бы был на волне Я пытался понять и всё он меня не убеждал что это правильный способ делать со потом получается я прочитал конечно sicp и там прелесть липа и функционального программирования где вот как бы из ничего У тебя выстраивается вся цепочка Вот и складывается картинка потом Конечно я приезжал на КМП и говорил там с разными людьми там с тобой с Валки нам ещё с кем-то я вот оно всё Витал да тогда ещё функциональной программирование не было популярным да то есть в избранных кругах как бы мелькал да Ну я подумал Ну дай-ка я сяду и на Руби напишу только функциями Ну только методами вот не буду класс делать мап и методы начал писать и Мне даже понравилось то есть я какой-то сервисок написал Получилось Прикольно в плане того что процесс сходился да потому что я вот заметил когда делаешь О декомпозицию ты можешь её так сделать можешь этак если ты ошибся как бы ну надо всё переписывать То есть ты не так разделил на эти классики на объекти и как бы оно не сходится То есть ты не можешь
итеративности получается както естественно ты пишешь большую функцию
экстрактор яд То есть ты вот сидишь и ты можешь как бы чуть-чуть посидеть и сделать код чуть-чуть лучше как бы ещё чучуть лучше и ты даже и ты веришь в то что ты приходишь в правильную точку как бы СП никогда Такой уверенности у меня не было что вот я правильно зади зайни вот систему это понравилось раз да потом соответственно как раз вот по-моему где-то на укм кто-то то ли прокопов может быть Никита то ли мы где-то вот у деревьев там стояли и кто-то рассказал про кжу я взял попробовал Ну там после понятно что Лис прикольно Извини на уточнить ребятам Да не все английское улавливают название потому что редко его слышат речь идёт про си Кто не знает загуглите я ссылку приложим это важная книга в жизни любого инженера который хохочет стать очень крутым Да и в какой-то момент я сел попробовать и там Конечно я когда осознал что такое всё меня было за уши не оттянуть потому что даже а вот ФП с плом это оказалось какой-то просто ядерной комбинацией Потому что ты можешь вот то что я говорил сходиться да правильной программе на лету не останавливая ранта то есть ты сидишь как бы пишешь правишь Как как ты думаешь и тут же это делаешь при этом никаких задержек То есть тебе не надо останавливаться там что-то перезапускать там как-то дебаггер запускать или ещё что-то просто естественным образом Вот как ты мыслишь каждая твоя мысль каждая твоя идея ты её тут же делаешь Ты маленькими шажочки ты как бы приближаешься к это и оно работает вот вместе Ну наверное ближайший аналог - это питонов ские ноутбуки Да это вот такая очень куция эрис того что может дать вам л Да потому что новский ноутбук - это всё-таки не продакшн Код Да и вы там попитерша
и Да это зацепило мы написали один сервисок Второй сервисок потом нам понравилось потом вот мы как раз после этой системы Решили как бы опишет Яну на на базу на погрею со стандарт сделали это в кжу вообще всё прекрасно получилось очень мало кода всё понятно и потом уже освоили как раз пришло время к ложе скрипта на фронтенде он созрел кстати один из немногих языков который вот там помимо тарита ирита Лаура кото дат тебе действительно изоморфный стек который прок Ready потому что CL SCP прямо вылезал ну то есть он он прекрасно работает Ну да и всё и потихонечку мы переключились на кжу Ну всё равно у нас культура полиглотов да то есть там людям всё равно на чём писать може быть pyon там Java Вот и сейчас с продуктова поскольку мы платформа мы там вот сейчас СДК генерируем на разных языках Ну то есть и там если нужно что-то поделать на питоне Да там кому-то на Джа скрипте помочь там или оны проек лучше нажа скрипте запустить там для стандарта но Конечно каждый раз когда переключаешься там нан на на JavaScript или Нава там как бы начинаешь страдать Мы сейчас с тобой про это поговорим Ты знаешь разблокировал у меня воспоминания я потому что я про совершенно забыл я вспомнил как я с тобой познакомился это как раз была конференция на которой то ли ты рассказывал про то ли я рассказывал про и мы ещё друг друга не знали и вот видимо в те самые года поиска мы с тобой собственно нуча вопрос Это связано с ддд было я помню мы обсуждали что первично система или то есть типа инструменты которые у тебя есть которые тебя правильно толкают или инструменты пофиг и ты должен просто правильно мыслить Я помню эти разговоры Я просто помню этот тоже переход когда мы вместе примерно в одно и то же время с этой ложей знакомились и впитывали в себя и сик и Camp и более того Мы же ты знаешь что на хек стате по-моему с четырнадцатый по пятнадцатый год или что-то типа такого у нас ложе скрипт вообще-то в продакшене была на фронтенде но Маги ушли Давай знаешь как сделаем Я предлагаю сейчас тогда поскольку мы уже про ложу немножко Вот это сказали да хочется немножко поговорить тогда про лисп про их особенности про особенность ложа ты уже частично про репл сказал плюсы минусы Потому что есть конечно же разные стороны и э я бы наверное сказал раз поскольку мы начали с ложе скрипта там есть определённые особенности которые выводят его за рамки просто что вот это ложа Да и я бы наверное с этого начал просто чтобы мы этот вопрос сразу закрыли он связан вот с чем то есть для тех кто ещё раз не знает ложе Script - это действительно фронтенд вый язык который конечно копили JavaScript Но это ложа скрипт по сути та же самая ложа плюс-минус Почти со всеми фишками Да на ней очень приятно писать мы её спорили но там была проблема следующего характера ты не можешь использовать Ну это будет не очень приятно использовать напрямую типа тот же самый react и любые другие библиотеки и по факту Что происходило у тебя происходила просто трансформация всех библиотек писались в рапе под каждую либу и по-моему Никита тогда и ещё пачка ребят ты помнишь сколько вокруг реакта было создано разных обёрток и они все работали очень по-разному то есть там можно было навернуть Ну то есть в этом плане как бы и боль и радость к ложе да то что у тебя можно очень разные системы делать Короче они все сделали очень по-разному и в какой-то момент просто упёрлись в одну очень простую вещь То есть тебе Если нужны какие-то либы тебе нужен либо интеп А интеп как правило там такой себе ну то есть интеп классный но я имею в виду Ты просто очень не нативно в ложе с этим работаешь а сами обёртки они как правило отстают баги исправления апдейты или какие-то либы которых вообще просто они не такие популярные но они тебе нужны В итоге всё это привело к тому что мы поняли что ну на нашем уровне с учётом того что чем мы занимаемся это всё-таки классная игрушка но не в общем-то не сильно нам помогает поэтому я в какой-то момент просто принял решение что от этого стоит отказаться tpt в этом плане Другой Он же пошёл другим путём Да что у тебя то же самое поэтому там только типы по сути добавляются и в общем-то всё ну вы на достаточно ранней фазе ложе скрипта тогда были и как бы не не проскочили то есть на самом деле там нет никаких проблем ни с энтеро пом ни с ретом уже давно это всё хорошо обёрнутый опять же Ну как обр ещ раз Ну то что Никита делал и то что Дэвид делал это всё фигня ну то есть они как раз пытались обернуть не надо было оборачивать не надо было играть ну то есть если ты пытаешься играть на чужом поле ты конечно проиграешь Да ну то есть прекрасный стек - это реагент с фреймом который тебя почти
абстрагируясь вот я даже у меня была идея я чуть-чуть отхожу от такого прямо серьёзного этого можно сделать то же самое без реакта например тот же reframe как бы если ты берёшь реагент там под капотом react но ты вспоминаешь об этом очень редко как бы интеграции достаточно легко написать ро с дм по всей идеологии лажу она не прячет от тебя хостой язык и даёт тебе хороший интеро и jav и в jav и в JavaScript Поэтому можешь просто писать как бы по сути JavaScript как бы на ложе скрипте никто тебе не помешает я считаю что там стек реагент с рефрейм просто прекрасен Ну то есть это лучшая реализация там фкс модели которую я видел даже как бы вот там с кучей прибамбасов с редукса и со всякой хернёй можно превратить в что-то подобное но оно не будет такое декларативное и такое приятное на самом деле кстати Ну то есть если исторически смотреть Жура помогла реакту стартануть потому что как бы про решали
кобко типа уделала по перформанс с
мутабельный кн я тогда помню что этот твит разлетелся И вот тогда народ о типа Нифига себе что-то новенькое появилось поэтому Да к сожалению вы тогда Видимо просто в слишком ранней фазе это делали У нас сейчас вот там и редакторы написаны и перформанс оптимизируется и виджеты реакторс используются всё хорошо там даже можно творить более интересные вещи там есть мойк Старый про сказываю Где мы можем гонять больше половины фронтового кода на бке вообще за счёт абстракции вот этой Потому что ты когда вот в Чистый мир попадаешь там в фрейме там у тебя Сабрины хендлер это как бы можно JavaScript настолько спрятать что этот код можно на бке гонять и он гонится там в 100 раз быстрее чем в браузере и ты логику если отделяет рендера и если даже рендер делаешь её таким декларативный Да там за счёт то вот этот код мы можем гонять на ты пишешь вместо там
и у тебя Рондо теста становится такой же ценой как эндо теста это Просто мечта вообще для всех и вот как бы можете посмотреть это то что можно сотворить на кжу если правильно как бы костру при помощи фрейма Да написать значительный кусок в л ты прям реально можешь модельку типа вот эту
м как бы напрямую в в хендлер бьётся получает данные рендерит ты проверяешь то что вот собралась там VI Model правильно собралась в принципе и рендер можно проверять Если он там не супер фэнси как бы тут всё хорошо Да но требует определённого инженерного уровня Я до сих пор не считаю что к это прямо самое правильное Что случилось Ну то есть оно технически хорошо с точки зрения декларативного ангуляр был лучше чем ре Ну понятно сейчас с МКА будет это весь Боп писать поэтому наверно не страшно Ну мне нравится например и Светы как бы тоже интересно жури с велты сделать вообще можно потом поскольку там за счёт макросов как бы Можно даже не писать компилятор да какой-то транспит А можно просто такие хитрые макросы сделать чтобы оно само собиралось там в моменти знаешь это я сейчас такой слушаю те я понимаю я так в контексте потому что через это проходил и лисп знаю и писал на ложе Я понимаю что сейчас наверное знаешь такой 90% людей которые слушают подкаст такие вообще Вы о чём ребята ну мы можем немножко вернуться мы от катимся дада да потому что мы можем глубоко пойти мы сейчас это прикольно то что ты про это всё сказал и тут есть что прокомментировать но я бы знаешь тогда прямо вернулся наружу для того что мы скорее сейчас исходим из того что люди которые нас слышат для них ложе это вообще что-то непонятное Да и я бы с тобой прямо вот прошёлся по самому началу типа вообще что это такое И в чём особенность вообще типа Почему вообще в принципе надо выбирать потому что по большому счёту глобально смотри давай так что мы с тобой не говорили так же как с хаслем Например у тебя всегда есть альтернатива которая понятнее проще люди они пойдут писать да и соответственно всё будет нормально тем более рипт в общем-то всех сдвинул победил и всё прекрасно о нём пишется но у ложа всё-таки действительно есть определённые вещи которые мы ценим Ты ценишь сильно больше чем я но я тоже ценю но с Я ценю скорее как больше как способ стать более крутым инженером а ты идёшь до конца Да ты не просто становишься более круты конца У меня прагматичные достаточно цели я не фанатик там как лист но я раж я и по крайней мере его используешь да то есть я вс-таки у нас он то тоже есть но в некоторых определённых областях там сбоку У нас тоже ложи есть сейчас но вот в самом проекте основном нет так вот давай прямо самом начала да то есть вот есть лисп пару слов про ключевые штуки особенности отличия лисп прекрасен тем что это минимальный язык который можно как бы себе придумать Да в языке отсутствует синтаксис вы сразу пишете Аше и поначалу это кажется странным но особенно если вы научитесь как бы структурному редактированию Да в редакторе Там есть специальные команды как бы это становится сильно потому что вы по сути блоками как бы начинаете писать и мыслить блоками То есть вы как бы почти физически ощущаете АСТ вам не нужны всякие эти игрище там с аннотациями со всякой этой фигнёй там транспак в сидите то есть если вы хотите там метапрограммирование позаниматься то это обычная функция которая трансформирует данные да то есть как бы для тех кто не знает как бы лисп - это язык который записан структурами данных этого же языка то есть если бы JavaScript писали вот вот объектом Да объект массива вот предположим у вас ничего кроме этого нет И вы весь код пишете в виде объекта обк массива Да там число и примитивов у меня есть толк кстати который называется там я Нате JS рассказывал что ложе - это JavaScript минус Минус То есть тут прикол многие гордятся тем что вот они что-то добавляют к языку Да там не знаю типы системы ещё что-то как бы а лажу - это как раз уникально тем что она выкинула всё что можно было выкинуть и получился язык который порою даже мощнее че яз в которые как бы добавлено много всего да то есть это вот минус получается синтакс минус мутабельность Минус классики тики и так далее практически минус Ну то есть вы не пишете типами Да ваши там конечно ну это всё динамически
типизированного но это не имати Вот и вы простоте данными и функциями и всё вот у вас есть условный и функции Исон только ещё и мутабельный Да ну то есть объекти вот эти и больше ничего нету И выясняется что этого достаточно чтобы написать почти любую программу и это прекрасный минимум как бы и оно ещё функциональное всё Поэтому вот эти функции идеальный компонент у них нету никакой зависимости внутренне Да вы их там можете гонять как бы перекидывать куда хотите вот всё передаётся как параметры и в этом плане это идеальный компонент потому что вы когда начинаете там какие-нибудь сингле тоны ещё что-то как бы ваша система запутывается внутри как бы потом её Рапу а функция ВС параметрами где угодно её использую Да понятно что есть там и Да ещ что-то но под это тоже есть уже приёмы как с этим как бы жить то есть вы просто ядро вашей программе на 80% делаете чистое как бы ну и там 20 гряз прон причём ложе не пурист они не пытаются как в хасле спрятать это грязное Ну то есть оно есть грязное просто отделить зёрна от плевел гря жит грязном жит ВМ то что ты говори в голове вообразить особенно кто нас там просто слушает Я бы хотел добавить несколько моментов потому что я сам с этим столкнулся потому что например когда говорят про отсутствие синтаксиса речь скорее идёт про синтаксические то есть синтаксис конечно же есть но речь идёт про отсутствие необходимости введения синтаксических конструкций для того чтобы что-то решать да то есть например условные конструкции Там в любом языке нужно придумать ифы У тебя есть синтаксис того как они записываются есть If else и так далее в кло же по сути у вас э это правда Особая форма то есть само по себе так не заработает она всё-таки вшита в ядро но в любом случае с точки зрения синтаксиса это просто скобочки и ключевые слова которые в них там встречаются да то есть у тебя грубо говоря с технической точки зрения ты можешь сказать Ну это точно такой же Джейсон как любой другой Джейсон Ну просто там слова другие написаны Да но это тот же самый Джейсон вот имеется в виду Вот это да то есть что у вас любая штука будь то Ив будь то там цикл рекурсия всё что угодно это будет представлено вот просто структурой которая одинакова всегда просто разные слова написаны вот Не ну условно у вас в языках как бы обычно вот как бы есть язык Потом есть парсер Да и потом есть внутреннее представление в виде АСТ то есть вот в лажу грань между АСТ как бы стёрто и парсер он уровня типан парсера то есть не типа тайпскрипт парсера да который там понимает какие-то конструкции Там как бы а уровня джисон парсера То есть это там вы можете зайти найти этот файл где кжу это парсит Это просто там портно на 400 строчек как бы кода на Джаве как бы и вот онар называется даже она даже не парсер она просто ридер То есть она берёт и читает как бы ложи код как структуру данных а потом её интерпретирует Ну на самом деле она Гене байт код который потом интерпретируется но в целом это сильно проще и понятнее То есть просто целый компонент выкинут потому что там вот с этими парсера возиться как бы что-то делать дальше мы можем с тобой вот эту мысль развить там правда есть нюанс Это не совсем всё-таки а потому что в А если брать а классическое в том же Джейс Ну если кто-то себе воображает оно конечно многословно у тебя там очень много вот Мета информации здесь конечно этой многословно нет то есть оно компактное оно очень ком оно компактнее чем даже вот текст на обычных языках но тут надо ещё знаешь наверное что сказать что почему собственно мощь такая Да у языка в том что у тебя При таком раскладе грубо говоря в любом другом языке тебе нужно если что-то прям особое делать вводить новые синтаксические конструкции да то здесь не нужно потому что у тебя любая штука может быть уложена в эту систему это может быть кстати даже сложно вообразить пока ты это не попробуешь Но это представить как например Мы решили писать какой-то DSL действительно в виде ял файла вон enable там не знаю кунет всё остальное это по сути Ну очень близко к этому да оно там на фоне где-то будет реализовано но в ям у вас останется тот же самый Я хотя там типа не знаю одно слово написали у вас там развернулся кластер там мультизона и всё на свете Да вот что-то в таком духе комбинаторика плюс ещё мощная тут из интересного получается скорее как бы лисп для ленивых Да ну то есть как бы вот если не хочется синтак приду ири повия планировали потом сде Повер потом подумали Ну блин оно и так нормально Ну типа ули Они хотели там потом его натянуть Да но решили это там как бы важно что метапрограммирование появляется Да поскольку если ваша программа - это структура данных Да и вся и весь ваш язык заточен на то чтобы трансформировать структуры данных то вы можете легко написать функцию которая порождает как бы программу Да это называется макрос и это это никакая Это необычная функция там сбоку придела это обычная рядовая функция вашего языка которая порождает код и это называется макросом и в момент считывания кода Можете написать макрос из интересного например там ait SN Да в кжу реализован библиотекой То есть это не ядерная Ну типа не в ядре языка А вот cora S библиотека сделана просто как библиотека То есть она просто определила ряд макросов То есть вы можете расширять свой язык Хотя это вложу не приветствуется потому что выдумывать языки сложно вот Но если очень хотите прямо вообще не проблема Это даже не Как это не Next level Да это вот просто вам хочется Там придумать какую-то конструкцию там вместо Ифа там Н сделать Да как бы это вот типа две строчки у вас появилось конструкция Н вот с одной веткой буду Знаешь это как редакторские комментарии когда книжку Читаешь Да у тебя есть там добавление от редактора я вот буду в такой роли выступать Потому что есть вещи которые нужно проговаривать потому что я знаю что всё равно когда ты про это рассказываешь У тебя много восторга я с ним согласен но там есть всё-таки подводные камни которые нельзя не упомянуть макросы вообще лажу чтобы люди понимали Да они совсем не похожи там на сиш нае другие если кто-то се это воспринимать У меня есть аналогия для того чтобы было понятно для тех кто с этим не работал да что такое макросы Вот например тот кто пишет на тайп скрипте таких сейчас много они знают что тайп скрипте можно писать прямо на типах у тебя типы тоже принимают параметры Да и ты на базе этого там что-то делаешь Вот теперь Представьте что то же самое происходит на уровне кода То есть у Вас как бы код по сути Может быть вы можете написать шаблон кода который наполняется параметрами которые в свою очередь генерируют уже конкретный код так же как работают Примерно вот типы и уже дальше эта штука используется для того чтобы решать какие-то вопросы Такой типа абстракция над кодом шаблони Я бы проще сказал Представьте что вы можете как бы написать код Ну это будет Как бы хуже да чем в кжу но можно То есть вы клеите строчку Ну то есть вы видите какую-то конструкцию в которой куча бойлер плей Да и вы можете написать обычную жава скрипто вю функцию которая клеит строчку Да там и порождает класс какой-нибудь и вал потом делаешь типа ещё что потом сделайте вал Да вот это встроено в язык То есть вам не нужно там садиться как бы писать целый там чтобы потому что по сути ваш тайпскрипт Это просто набор макросов над два скриптом Вот из-за транспак это делается просто штатными средствами одна из целей Вот подкаста и то что я хочу я понимаю что большинство конечно же на ложе после этого не будет писать но почему Например я делаю акцент я про это спрашиваю про это специально говорю Я просто хочу сказать всем нашим слушателям что ложа вот в моей жизни например да это был момент когда вот Коль ровно то же самое что у тебя ооп я там паттерны заморачивался и так далее тут в моей жизни появился си функциональное программирование Я знаю что с точки зрения роста меня как инженера вот этот период был самый сильный Когда знаешь в голове появляются чёткие вот эта вот система того А что действительно важно приоритеты по разным знаешь вот подход такой такой как это всё совместить То есть ты понимаешь Что является ядром Что является ключевым А что является вторичным И после этого возвращаясь уже в обычные языки То есть это очень сильно помогает тебе даже если ты не вообще не с этим Не связан для тебя это сильно что-то другое это очень сильно помогает тебе в том Чем ты занимаешься Мы сейчас просто все пройдём с тобой темы Да которые есть в ложе прогу макросы - это одна из этих тем подобных макросов вы вот в таком прямо виде Больше нигде не увидите И просто их попробовать понять этот принцип Это конечно очень круто но есть несколько моментов Я думаю ты со мной согласишься первое макросы в этом плане мне напоминают как знаешь вот есть виды спорта в которых для того чтобы быть эффективным тебе нужно естественные твои движения противоречат правильной технике вот я всегда привожу пример Просто я занимаюсь скалолазанием Да если пустить человека заниматься скалолазанием и он первый день там позанимался и сказать тебе понравился или нет он не сможет адекватно ответить на этот вопрос потому что все подходы использова для того чтобы лезть они будут противоречить тому как устроено Ну понимаешь от страха люди например там сжимают вот так руки а правильно Лазни на скалолазание происходит только на прямых руках и это как бы ментальный сдвиг который должен у тебя в голове произойти и это требует Ну месяца тренировок минимум И после этого ты вдруг начинаешь понимать Этот спорт и твои ощущения через месяц Ну вообще не те же самые ощущения которые были в самом начале и тебе надо просто перетерпеть этот месяц вот проблема как бы с этими всеми штуками она именно в этом то есть Типа если человек просто сейчас пойдёт и почитает и такой а ну я понял Ну ты же сам понимаешь да это как бы вряд ли будет реальным я понял и здесь надо попробовать поэтому я вот сразу это обозначаю а вторая вещь всё-таки с макросами которые существуют вот эта мощь вот эта крутость штука которая тебя делает более крутым инженером Если Вы реально используете этот язык и если Вы реально их используете это есть опасность Проблема в том что вот когда мы с тобой говорили про язык без синтаксиса Да всё нормально пока там нет макросов Ты читаешь его так как он задуман Но когда у тебя появляются макросы то как вот этот кусок кода вот эта структур будет интерпретирована очень сильно зависит от того как написано макрос ты не можешь к ней применять стандартные правила того что А ну вот первое я могу воспринимать как не знаю как функцию это параметры и так далее у тебя там всё работает не так вот как макрос написан так Это и будет и я просто помню что это одна из претензий к языку у большинства людей которые пытаются массово его использовать что ты фактически с одной стороны создаёшь много классных DSL которые делают твой код очень компактным эффективным и так далее но у тебя каждый кусок кода очень сильно зависит от того как конкретно написал Его конкретный программист и тебе в каждом конкретном куске кода надо понимать этот язык этот DSL эти макросы чтобы в голове как бы этот код нормально прочитать я много говорил прав я или не прав Нет конечно Ты прав Ну то про макросы просто как бы такой маркетинговый лож этот вариант там есть правила как бы в идиоматическое ложе если ты можешь не писать макрос не пиши потому что макросы не существуют в ран тайме и как бы это действительно вводит в заблуждение зади зайни хороший макрос сложно Ну вы по сути
расширяет нами не штатными средствами будете расширять лучше особо не расширять потому что кто знает что вы там расширяли да там и в хасле есть расширение даже там скрипте там даже вот этот GX как бы которые у меня глаза вытекают когда я на это смотрю это тоже вот расширение Ну то есть Окей но лучше бы так не делали поэтому макросы просто говорят Ну это липовое последстви я бы не говори что это щая вещь для меня говорю FPS Рем - это две основные вещи и как бы и мировоззрение что всё есть данные программа есть функции которые лопати вот это Откровение как бы макросы Ну то есть ты попросил про лисп Ну да про макросы нельзя было не сказать чтобы по сказать про макрос потому что они ты получаешь их бесплатно Наверное знаешь что хочешь сказать Вот как есть некоторые вещи которые лучше делать только в библиотеках вот макрос относится наверное к этой штуке да то есть есть либы в которых это супер важно Это удобно и без этого Ну было бы не очень ну те же самые ко Анты бы ну не написали бы да но в прикладном коде если человек пишет макросы Ну наверное он просто какую-то либу внутри делает которую будут все использовать А если это он просто пишет в каком-то коде Но вот тут уже явно он что-то делает скорее всего не то но это уже Вопрос дисциплины но квалификация для этого нуж тоже как бы это макросы в этом плане это Как и любая библиотека и дизайн библиотеки как бы большинство библиотек которые вы попробуете зани зать будут ужасными и в них никто не разберётся Да поэтому как бы макрос он ещё ужаснее потому что он выглядит как встроенная конструкция Ну то есть ты его не распознаешь Да если не но тут мы просто к тому что дизайни язык сложно как бы особенно расширять язык сложно поэтому Первое правило если можешь не писать макрос Не пиши Напиши п люди прочитают и поймут что ты хотел сказать если напишешь макрос надо тогда доказать всем что он должен существовать что он супер продуман как бы и всем понравился Окей мы сейчас плавно перейдём функциональному ядру Но вот очень важный момент который вытекает и связан с тем что мы рассказываем вот ты ещё раз упомянул код как данный И когда ты пользуешься данными Да и мы здесь вспоминаем что у тебя вот эта конструкция когда на неё люди смотрят о такие О Боже сколько скобочек как вообще работать с этим кодом Возможно не все запомнили что ты говорил в самом начале о том что ты начинаешь смотреть код на как структуру и начинаешь с ней работать совершенно другим образом а для этого нужна ещё и поддержка редактора Вот давай поговорим о том что почему скобки на самом деле не страшны Но что это означает с точки зрения того как ты с этим работаешь Не ну первое почти во всех докладах которые поклажу дел я считал скобочку Люде на глазах и вы в тайп скрипте пишете больше мусорного синса всякие точки запятые как бы ЛБ и так далее И вот эту всю хрень Если вы сядете и просто посчитаете сравнимой конструкции на кжу как бы кжу будет меньше вот этих синтаксических вещей там всяких скобочек и этого То есть их на самом деле меньше то что оно вложено и вы как бы эту вложенность видите и она там типа не по не по-разному запи Ну да просто к этому надо привыкнуть То есть это дело привычки ВТО момент что как бы вот эти все блоки в кжу там в основном в круглых скобочках Да вот эта вложенность вашей программы она как бы вложена и это всё блоки которыми вы в редакторах можете манипулировать то есть редакторы которые понимают как бы лисп они позволяют вам прямо блоками манипулировать То есть вы можете выделить Expression Вы можете прыгнуть там во внешний Expression тут же его скопировать перенести Вы можете двигать эти эсн там поменять их местами вот это то чего Ну как бы не умеют вот эти текстовые языки Поэтому да когда ты это начинаешь чувствовать ты физически понимаешь что состоит из БЧ ты эти блочки двигаешь у тебя уже на подсознательном уровне все эти хутки вот и ты реально просто физиологически ощущаешь как бы АСТ Вот это дерево с которым ты работаешь ты не текст пишешь вот как в Ворде Да а ты как бы переносишь блоки Ты создаёшь блоки вставляешь их выносишь вот и это следующий левел как бы редактирования Кода да то есть это вот уже что-то между скажем так некоторым юзер интерфейсом да Потому что это не просто текст Вот который надо выделять Ну у вас там конечно там в большинстве языков там сейчас есть какие-то хоки там выделить там какой-то Expression ещё что-то слишком не униформ то есть вот как вы Выделите If находясь внутри Иа Да вот Попробуйте выделить иф Да в лажу там в в этом в я Максе это два ходки я и вы уже выделили весь If вот а потом над ифом над этим ещё там весь фор выделили как бы и удалили его или перенесли куда-то то есть а это Попробуйте сделать то же самое у себя в текстовом языке У меня есть два как бы две истории к этому первая я во-первых с тобой абсолютно не только Согласен Это одной знаешь какой-то невероятное ощущение мощи когда ты начинаешь действительно понимать всё-таки три момента первое скобками надо уметь управлять То есть у тебя переносы очень важны Ну это примерно то же самое что если бы на любом другом языке мы в одну строчку всё писали понят что так писать нельзя у тебя должно быть переносы второе это parit да это всякие разные важные дополнения к редактору которые позволяют управлять так как ты говоришь потому что по дефолту это так не управляется но Фишка в том что из-за того что у тебя всё только такие структуры этот пат Он простой достаточно Да это некий универсальный способ управления Я просто хотел добавить то что в всё-таки то что ты говоришь А вот сможете вы такое сделать на самом деле смогут в продвинутых редакторах потому что там есть вот эти механики но проблема в том что это не универсальная механика у тебя во-первых там чуть ли не под каждую конструкцию свои ки ключи а вторых всё-таки возможности поради намного шире то есть вот эта смена блоков быстро обернуть удалить внутренности и так далее оно чисти реализовано но не На таком мощном уровне поменять местами Ну да да поменять местами обернуть например там на несколько уровней быстро вот этот перенос по уровням когда он тебя скачет это конечно фантастика я вот скажу тебе Так у меня вот после того как я вошёл в ложу в какой-то момент вот я прямо почувствовал что Всё я её прямо чувствую я на ней пишу Мне хорошо Я понимаю и я кстати на умбе по-моему даже про это рассказывал это было в каких-то лохматых годах И после этого я понял что всё с ложей у меня как бы это заканчивается Я возвращаюсь обратно Боже мой как меня ломало то есть я вот это вот вот это вот недостаток просто текста То есть ты прямо чувствуешь что у тебя программа дерево не в смысле ты такой понимаешь оно там где-то транслируется в дерево а оно вот перед тобой Ты как Нео в матрице им манипулирует и ты воспринимаешь это не как текст а ты воспринимаешь это как структуру которой ты можешь очень легко быстро всё это переставлять и Когда ты возвращаешься в обычный язык ты такой да как после Сайбер трака пересел на велосипед для длинных поездок На дистанции в общем мне даже из-за этого страшно кстати вот знаешь Сейчас лист попробовать потому что я понимаю что я потом вернусь и буду страдать Ну это только один из аспектов то есть Оно ещё всё красиво связано то есть вот говорю это некий Оптимум да то есть вот как бы записали Да все эти фичи они ещё друг с другом завязаны Да написали язык структурами данных получилось и которым можно манипулировать легко писать макросы и как бы ничего волшебного а сочетание просто какой-то уникальный И это для умных и ленивых скажем так вот если вы будете писать язык как бы ки Сел он был умный и ленивый как бы вот ну то есть он наверное мог Выдумать синтакс но он решил Ну а зачем выдумывать если можно взять без синтакс Да давай с точки зрения именно вот опять же то есть мы сейчас просто разберём язык до конца Да чтобы пойти дальше Потому что я тебя спрошу обязательно про то про переписывание сипа на JavaScript берём опять же к ложу и теперь переходим уже к сути да Вот потому что то что мы говорили это те вещи которые бросаются в глаза визуально Да там синтаксис макросы какие-то фишки лисп все дела но если мы пойдём дальше и поговорим действительно про суть и вот типа функциональный язык и мутабельные структуры данных функциональное ядро императивная оболочка давай вот этот поит раскроем потому что он ключевой всё остальное просто общий ли Ну то есть это главное например Прозрение которое у меня произошло в жизни Вот как как инженера Да что по сути ваша программа она как бы она получает данные и возвращает данные так всё что вы делаете Это вы эти данные трансформируется Всё потому что вот процессор Ну что он просто умеет работать с ячейками памяти Да как бы эти ячейки памяти следующий уровень абстракции - это структура данных так над ними как бы потому что в какой-то момент кажется что этот мир пёстрый там куча каких-то сущностей там какие-то объекты классы там ещё что-то как бы ты их там не до конца понимаешь что там внутри А потом когда ты понимаешь что это вот по сути всё это Вырази просто й данными вот условными джисона да то есть всё выразим джисона как бы ваш HT mail выразим как бы медицинские данные workflow Ну всё вот всё что вы можете придумать как бы там вот даже Тесла Как бы как бы как она едет она всё это Вырази данными и Тогда ваша программа вдруг превращается в программу которая просто этими данными манипулирует То есть она их трансформирует она берёт Два куска данных и сливает их или она из одного
экстрагирования данными всё что даёт кжу она даёт вам огромную библиотеку по манипуляции стандартными структурами данных вот огромную просто библиотеку Map redu Filter там Take и так далее update merge как бы и это всё можно сделать потому что структуры данных genic ты учишь этот язык у тебя там 100 функций да над данными ты их понимаешь И потом любая задача тебе сдаётся Потому что ты её как как в математике Да вот ты там свёл геометрию к математике и решил так то есть ты как бы вот как бы свёл там физику к математике и решил Вот в тот момент когда ты свёл ты уже почти решил Вот и когда ты начинаешь мыслить вот этими genic структурами данных функци над ними твоя задача свести задачу к к вот к этой математике вот а потом её решить То есть например frontend вст Превращаем там в структуру данных там язык например тоже просто Вот всё Теперь ваша Вью производит структуру данных так как бы Решили как бы там делаем абстракцию браузера там не знаю ул там ещё что-то в структуру данных Превращаем вирту опять решили дест просто манипуляция структурой данных мы там новый урл подставили в виртуальный браузер который представлен просто мапко в которой есть Урал причём это посколько э мап говорю вам не надо там знать что там Window точка что-то там да как бы это вот обычная такая же структура по которой вы можете там пробежаться там прои волком пройти в глубину там выйти и так далее То есть как бы всё становится одинаковым внутри ну это вот реально Матрица ты в неё попадаешь ты осваивается потому что у тебя вот эти меты наработки ты ты их применяет девопса для фронтенда ещё для чего-то то есть мы рендерит там кубернетес так же как мы рендерит типа дом и Мы также рендерить там какие-то медицинские сущности просто производя структур данных ну то есть вот это наверное такое важное Прозрение а к этому всему Потом добавляется reple где ты всё это делаешь маленькими функа Прости я тебя сейчас Да немножко остановлю мы до рела дойдём потому что это ещё один Да вот эта часть которая замыкает всю эту историю Я просто про данные хотел немножко я много раз слышал когда ты про это рассказывал и у меня каждый раз знаешь возникает ощущение что у тебя Понятно полно образов я понимаю о чём ты говоришь но оно достаточно абстрактно звучит для людей Да и поэтому я хотел пару примеров дать и показать как бы всё-таки на кейсах потому что вот смотрите например когда мы пишем react по сути там внутри такая же идея Просто она немножко спрятана за большим количеством абстракций и она теряется а на самом деле Ключевая Идея то есть она в чём то есть вот у вас этот gcx который потом применяется Да вы же по сути должны сгенерировать правильную структуру данных Потому что если Вы посмотрите что там за gcx Там просто данные Ну на самом деле там функция конечно но имеется в виду что по факту это структура но из-за того что jav Script вообще под это не предрасположен и там это сложно они говорят Ну давайте дадим программистам GSX чтобы они вот писали в такой штуке но в реальности когда мы gxx копили мы понимаем что фактически то что там собирается внутри это очень сильно похоже на структуру данных и вот в ложе вы фактически эту идею оставляете в чистом виде То есть вам не нужен никакой gcx вам это ничего не надо вы действительно Гене эту структуру данных а потом пожалуйста Там вставляете её в дом что хотите делаете И вот про это мышление тоже я хотел усилить может быть это на кого-то сработает что это значит в бэнде вот человек говорит так Ну вот Коля это сказал но звучит как-то слишком абстрактно Я вообще не понимаю как ко мне это относится я вот пишу на спрингер поправишь меня Коль если ты так это видишь или нет Я бы наверное так это описал что когда вы работаете во всех этих системах очень много разных абстракций вы начинаете думать Вот у меня архитектура у меня тут есть значит вот такие штуки там ну в общем ного всяких штук например контроллер обработчик роутинг и всё это вот важные Часть системы которые работают на разных уровнях это подвижные некоторые системы ложе говорит А давайте Ну то есть по сути берём там не знаю сприн да у вас роутинг - это просто данные да которые можно использовать у Вас например вообще Запрос который к вам приходит это набор данных ответ - Это набор данных только другой который вы сформируется у вас получается по факту Что такое в чистом варианте там любой кэндо фреймворк У вас есть на входе структура данных которая называется а на выходе Вы должны её трансформируя получить структуру данных которая называется ренс и Когда Вы начинаете таким образом смотреть Вы гораздо проще будете понимать что вот это вот на самом деле абстракции вот эти вот вещи которые вам навешивают А может быть это вообще всё мишура которая Придумано только из-за ограничения языка там идей каких-то разработчиков которые за этим были а в реальности это всё гораздо проще Ну потому что когда начинаешь думать что у тебя в конечном итоге вот приходит запрос там типа сложная обработка а в конце концов Ты просто в базе поменял два поля А у тебя там 500 абстракций это прошло сервисы Ты про архитектуру споришь и вот это всё Угу как я а или нет да да так и есть Ну то есть вам Пришли данные вы из этих данных там как бы из строки превратили в структуру чуть-чуть проще работать да Обычно народ над этим над вешают какой-то объекти и вы там вообще не понимаете что там внутри ещё это мутабельные кстати ко всему прочему да там э последовательные обработчики которые могут привести к проблемам это не значит что кстати в ложе Нет абстракций просто у вас там как бы я бы знаешь как это Обозначил у тебя вот эта суть она не теряется за абстракциям потому что в в остальных языках очень часто люди забывают вообще что они делают ради чего и начинают строить Воздушные замки я бы наверное так это Обозначил А здесь оно у тебя постоянно оказывается в сверху и почему я про это рассказы почему это важно потому что после того как вы это осознали попробовали в ложе вам это помогает находясь в других фреймворка никогда не забывать что является первичным что является главным И где вы начинаете делать что-то не то лишнего уходить в в Овер инжениринг в том числе Кстати когда там фабрика на фабрике фабрикой помогает чтобы создать некую сложную систему объектов для того чтобы в конце концов просто там поменять чуть-чуть данные и в базе у вас там не знаю добавилась новая запись да про end На самом деле вот говорю приходит структура данных мы SQL тоже как бы у нас есть АСТ шека которая представляет SQL То есть ты вот из из структуры данных запроса генерис структуру данных SQL структуру данны не строчку клеишь Да потому что строчку клеить неудобно как бы потом тебе приходит структура данных ты её улетело То есть это настолько тривиально что мы на самом деле даже не разделяем никаких контроллеров ничего вот у тебя вот на экран влазит достаточно хитрый кусок логики который принимает запрос генерирует слинку ещё в каком-то общем виде там лази за метаданными ты потом типа возвращает ответ вот вам весь эн эн там на кжу как бы вот Особенно пички это просто со там код можно ужи мать максимально Ну и что интересно вот эта дата мышления Да как бы данные данные тут вот длинный спор там что вот что лучше данные да Или какой-то умный объект Да программа и там даже был по-моему длинный трет какой-то между создателем сл толка и Рим хики где вот он сказал А что если бы данные все были программами Да как бы как зовут с Это я забыл у меня вылетело из головы а ри сказал что если бы всё было данными как бы и вот эти два полюса да данные Ну что прикольно данный Inter Да я могу сказать почему это не просто язы то есть на самом деле Жура нас навела на мысль сделать платформу потому что что происходит то есть вот Ну хороший пример я не буду про нашу платформу говорить кубернетес Да вот это вот прекрасна дадн платформа то есть люди дошли до того что вот вы ресурси можете данными описать и всё настройка системы производится тем что ты кучу этих данных накидал в базу и система интерпретировал эти эти как бы структур данных по сути ДС Да и развернулась Конфи так как ты хош в кжу ты поскольку всегда выделяешь эти данные у тебя как бы естественным образом там люди приходят говорят Мы хотим так мы хотим так получается есть данные которые процессные которые падают есть конфигурационные данные Да вот эти условные куртис ресурси там Access полиси даже ре операции может быть описана данными там Какие параметры Да роутинг там Ну какой-нибудь не знаю openi берте вот структура данных Так вы прямо по ней можете как бы из не можете работать есть вы е можете получается как бы Жура сама толкает на то что начинаешь писать фреймворк или бы такую как бы абстракцию да вынося это делая всё
конфигурируется
в виде каких-то пакетов этих конфигураций образом приходишь к некой платформе которая супер гибкая конфигурируется
в Кубик и это возможно наша система например это вот медицинский кубик вы описание сущности закинули таблички на литу создались опишет сгенерить как бы ну закинули Access полиси начали отрабатывать вот эти штуки контроль доступа там закинули subscription мы начали вам оповещать когда ресурсы были вставлены там посылать в кафку эти события и как бы внешний интерфейс для пользователя это просто куча растушевку ты Закидываешь вот эти Мета ресурсы и лажу она естественно приводит к этому и тут важно что язык определяет мышление и кжу определяет мышление то начинаешь мыслить данными Ну то есть это вот ещё одно из прозрении как бы и то к чему приводит кжу да то есть вот я просто зацепился ещё за о Pi да то есть прикол в том что опять же если нас ктото вот слушает и такой думает так Ну и всё же думаю можно ещё с другой стороны зайти типа сам подход он он вообще-то вокруг нас всегда был есть и более того мы все его используем То есть это enable Ну то есть все вещи которые конфигурируется ямми женами а потом кто-то их исполняет берём то же самое Open API У нас есть некие универсальный стандарт описания который позволяет например ты знаешь что существует там штука Я забыл её название которую ты натра Призма называется натравлю на Open API он тебе генерирует полностью сервер с данными которым можно пользоваться вот мы например активно используем для практик лите там мы таким образом генерируем опиш через которые можно потыкать всё попробовать да а это просто один конфигурационный файл то же самое ты из него там СД кашки генерирует то есть идея в том что в отличие от других языков которые всё-таки к этому не располагают там как раз обычно пишется интерпретатор данных да то ложа она создана таким образом что она расширяет вот этот подход как бы в тащила внутрь языка то есть вы внутри языка делаете ровно то же самое то есть вы внутри языка как бы одновременно язык это и данный и одновременно на нём же внутри реализован Ну в том числе интерпретация там исполнение этих данных обычно как обычно вот я тут программирую а вот это данные да Обычно люди там знаешь как делают они пишут там какие-нибудь тапки там тайп скрипты а потом вот из этого супер неудобного способа записать метаданные они достают это из этого генер доку ещё что-то потом выясняется что две части системы написаны на разных языках и это уже не так однозначно А если вы положите просто Дже сончик между двумя языками как бы и генерить из этого да данные это это прекрасно мы попробовали Да со всех сторон это объяснить А И последнее объяснение я всё-таки хочу его тоже дать классный пример - это quy Build вот quy Builder Да как бы в обычном не ложе Это что это штука которая генерить вот именно В чём отличие от данных не данных да у вас вроде тоже есть какой-то пайплайн вы там Where делаете то есть вы цепочку какую-то делаете Но как правило в языках не липах у вас на выходе что генерируется хитрый объект как правило да то есть это объект внутри которого в свойствах глубоко спрятано То есть вы даже сериализовать его не можете и какое-то преобразование сделать сху дополнительно это просто некая закрытая коробка которую вы можете сказать например SQL и он вам этот SQL отдаст а а можно сделать по-другому и даже в этих же языках то есть генератор никуда не девается у вас риби будет ровно точно такой же который всё делает то же самое только на выходе он просто внутри генерирует структур данных вот в ложе именно такой подход То есть это не хитрый объект к которому вы не имеете доступа это просто тупо обычная структура данных на которую например вот даже банально Вы можете снаружи натравить какой-нибудь Ну зная этот формат формат же всё равно надо знать да травить какую-нибудь штуку которая не знаю сделает какое-то преобразование над ним поэтому кстати трансформировать тот же самый ложи код гораздо проще и даже есть специальные инструменты им не надо его переводить там вот как в других языках надо вст перевести сделать трансформацию Проблема в том что вы обратно Не вернёте он потеряет часть данных да то есть часть информации заст может потеряться то с ложей как бы по идее этого произойти не должно или Кстати я тут обманываю Ну ты что-то уже загнул Мне кажется нем Ну ладно Я уже пошёл дальше это всякие знаешь литеры формате которые там трансформирует к ложу есть просто инструментарий который как раз может знаешь типа апдейт твоего кода делать ээ на более широком уровне чем это делают линтер например в других языках Ну ладно это я уже пошёл Да я я делал подкаст забавный вот он там я Мне хватило там на четыре серии наверное называется Show Me Your Apple там приходил Вот русский паренёк который сделал такой интроспективный
статический образ твоей программы по которому ты можешь ходить и видеть как эти данные переходили там туда обратно То есть это такой даже не дебаггер а такая Машина времени инспектор вово Я хотел сказать как de Tools в реакте когда ты можешь вперёд-назад мотать это очень похоже это делается говорю просто штатными средством То есть вам не нужно быть там разработчиком ядра этого языка чтобы такие вещи фига нуть хорошо мы с тобой двигаемся к реп Но знаешь я сейчас подумал как будто бы мы вот перед плом там ещё одна штука была то есть видение данными Да а вот и мутабельность давай вот перед реп последняя иммутабельность и про репл поговорим иммутабельность структура данных Расскажи что это такое чтобы тоже наши слушатели понимали иммутабельность как раз это то на чём народ спотыкается когда он приходит в лажу потому что мы просто не привыкли как бы к мутабельный структурам и это То от чего потом очень сложно как бы отказаться и ты взвыла ешь когда возвращаешься в мутабельный мир идея мутабельность достаточно простая что как бы твоя функция не должна ничего менять Если она приняла какой-то параметр Да она должна отдать что-то новое не меня этот параметр Это позволяет делать функциональную композицию вы как бы ну на уровне типа математической композиции Когда вы там в синус передали угол Да этот же угол не меняется после того как вы его передали вот как бы вам выдаётся новый иммутабельность структур данных как бы в кжу вы как бы делаете операции которые порождают новую копию этих данных с апдейта при этом это стоит мало то есть там вот как раз как бы сердце журы это вот эти персистентные структуры по стоимости это очень мало то есть там 2% 5% конечно там создаётся давление на память поэтому под супер нагрузками всё равно народ зачастую скатывается там как бы до джавы но у вас просто вы меняете структуру получаете копию новую а старое осталось старой И когда вы лопати данных это данные это очень важно вы там в глубину проходите дерево держите контекст какой-то и вы не ожидаете что кто-то там поменяет это вы знаете что вы каждый раз получаете новую копию Да но когда вы только пришли да вам нужно научиться выражать алгоритмы которые вы делали при помощи мутации Да через иммутабельность структу вот тут нам надо освоить редьюс освоить лупы потому что это то обо что обычно народ в начале лбом бьётся Вот но как бы надо перевернуть немножко майд и начать мыслить тем что вот у вас функция она как математическая функция она ничего не меняет она приняла вернула что-то новое такие функции прекрасны тем что вы их как бы можете безопасно вызывать и это нас подводит действительно к крепл потому что вот функция ничего не меняет Да она не привязана у него нету каких-то скрытых шнурочки Как там которые там вот корней Да как у объекта который вот он сидит в ран тайме и его хрен оттуда достанешь понимаете Ну у него контекста много Да у него внутренне линки СВ врос туда он как бы туда в паян как бы намертво функция она вот всё она шарик это что упрощает у тебя везде просто на входе параметры никакого Диса который ещё контекста меняется никаких там цепочек прототипов ничего вообще такого вы просто вот каждый кусок он по сути сам по себе изолирован и это ранний реакт да Опять же я вот простые сравнения ещё у вас сверху вниз Мне кажется поздний реакт реак же позже пришёл к этим компонентам как функциям Да это Ну я имел в виду скорее передача просто вниз даже когда классовые были у тебя всё равно же концепция была одна и та же Да вот ты просто передаёшь вниз может показаться что блин ребят Ну это же порождает там бла-бла-бла Ну на самом деле в кло же с этим более-менее всё прилично то есть нет такого Что вы чувствуете там проблему Что у вас всё-то передаётся на самом деле это гораздо больше плюсов в конечном итоге даёт Но перед тем как опять же reple затронуть давай всё-таки про одну вещь важную сказать Чуть более подробно вот когда ты говоришь да то есть Кто знаком там а почти сейчас все знакомы Map F reduce там в Джаве где угодно все с этим работают да в большинстве языков э все знают что там ну мы мутируй данные и но не везде некоторые языки Запрещают там в Джаве например там много чего нельзя сделать они это контролируют Почему Потому что это довольно важно с точки зрения того что если вы начинаете обновлять то с чем вы работаете прямо сейчас там начиная параллельности возможностей Да распараллелить того что вы можете нарушить какие-то данные в конкурентной среде у Вас могут быть проблемы вообще в принципе следить за этим довольно сложно Да потому что кто в какой момент что там поменял но опять же тут очень важно что язык определяет способность что-то делать потому что кто-то может сказать Ну ребят Ну это же сложно это сложно не в ложе потому что в большинстве языков помнишь был целый момент когда реакт всех приучил с редак сом делать Вот как раз Именно таким способом и прямо пошла волна как бы негатива что ребят стойте Что вы делаете вы начинаете как бы вы знаете какие дорогие операции копирования у вас как бы каждый раз на каждой итерации копируются данные и начали делать замеры и стало понять что там полный Треш происходит так вот в кжу работает не так в кжу Вот давай чуть-чуть про персистентные структуры данных потому что их же
и везде скопировали и в раннем реках использовали Да их везде скопировали там историю если интересно можете посмотреть когда-то написали статью там хамт идеальная структура данных 3 вот потом хики её превратил в персистентные структура по сути как бы ваш там массив это на самом деле Дерево у которого есть некая голова да несколько как бы нот промежуточных и на листочках лежат значения Когда вы хотите поменять его создаётся новая голова и там возможно ещё одна промежуточная нода которая типа Линку ется вот к этой старой к старому дереву и поэтому у вас операция не копирования А как бы а вставка в двух внутренних нот которые маленькие и вот то что я говорил там 5% вам стоит скопировать массив там в миллион элементов как бы ну то есть вот это даже не 5% вот с миллионом элементов он будет стоить там 0,1% потому что вы буквально там две-три ноды вставить Для этого ну то есть есть шеринг вот этого контекста это создаёт конечно давление на память по-честному и там в супер нагруженной системе как бы может выйти бо ну дерево Да оно оно постоянно растёт Поэтому да это создаёт конечно да но в большинстве случаев там в бизнес приложениях вообще не проблема И поэтому и цена этого копирования у вас как бы минимальная поэтому вы можете писать в функциональном стиле как бы не платя цену как бы копированию долгое время в ланге было Copy on это было дорого и они по-моему переписали на пер структуры Скала сразу стащила как бы то что кжу сделал просто повторил он сел Ну как бы это в принципе сердце клау то есть вот как бы второе сердце - это вот это персистентные структуры Рич их изобрёл это такая основная лошадка Рабочая тут Важно добавить что это так настолько сильно интегрировано в ядро вы как бы просто не парить всегда берёте структуру данных любой апдейт просто её не обновляет а возвращает новую и с точки зрения внешней это выглядит всегда как возврат новый и вы вам кажется что происходит полная копи и ощущение такое внешнее внутри на самом деле это ровно то же самое и от вас Это скрыто То есть вы никогда с этим не столкнётся
что это почти Зиро Кост и Да поэтому люди как бы Когда на жава скрипте то же самое делают у людей Ну у всех нормальных людей возникает вопросики Вы Вы что делаете так делать нельзя а в кло же можно кстати тут нельзя не сказать кто-то может кто сейчас так это подумал говорит ребята что это git напоминает Потому что git когда вы смотрите вам кажется что у вас есть просто новая версия файла но внутри он очень хитро устроен Да он там дивчини и эта структура данных это по сути имплементация Гита могу я так сказать для Ну они очень похоже то есть в гите Вы когда делаете новый комит Он же не копирует всю рабочую директорию Да он на самом деле делает новую голову и линковать новые файлы и получается что у Вас как бы ну то есть в гите такая похожая оптимизация применена как бы это оптимизация Ну вот она пришла из говорю из персистентный структур данных то есть они в академии давно известны поэтому что линус что Рич их просто в разных точках применили Ну причём в кжу ты можешь там есть как бы ты можешь выключить этот механизм что там транзиенты называются как бы вы можете как бы включить структуру данных мутабельный режим и мутировать её если там вот по перформанс прямо очень надо Но то что второе говорил что как раз никаких проблем с параллелизмом вообще нету потому что эти структуры они супер безопасные в распределённых вычислениях а для если нужно шарить стейт там есть Явный контейнер для стейта который называется атом такая маленькая база как бы это указатель но внутри которой лежит пресент ная структура и вы её атомарной переключается на новую структуру и потом её можно как бы оттуда получить Когда вы из атома получили значение вы как бы получили последнее значение Да как бы если оно потом поменялось вы уже работаете вот с тем снапшота с которой Вы получили И за счёт этого вы можете как бы вот иметь мутабельного при этом внутри и мутабельных И это прямо супер работает многопоточность вот эти все бедные динамические языки же скрипты питоны Руби страдают и умирают и не умеют многопоточности до сих пор не умеют и никогда не научатся Лаура прямо может как бы загрузить все ваши ядра и что ещё важно что вот этот стейт Когда вы выделяется вы его обычно отдельно хенли вы его сбоку держите вот эти атомы их немного обычно и вы их держите сбоку вы перегружает кроме вот этих атомов это многие делают в реакте похожие вещи Да вот можно было UI перегрузить да А в лажу ты это получаешь почти автоматом Ну потому что так Ты всегда так структурирует программу что вот у тебя есть немножко стейта и он Явный и управляемый и ты можешь перегрузить всю программу Кроме этого стейта тоже самое Кстати и на ЮА происходит то есть вот этот рефреш в кжу он просто бесплатно там с фреймом например вот этот Life update как бы он просто бесплатно и встроен в язык даже ничего не надо делать специально ради этого никаких редак сов накручивать ничего он просто есть как бы из коробки потому что мы так структури программу вот вообще вот эта штука Одна из таких фундаментальных вещей вообще с точки зрения Ну кодирования структурирование программ которую знаешь вот тоже оп какие-то штуки я учил учил учил мне это дала не кжу А наверное сик в первую очередь но с применением именно через лисп потому что я помню когда ты вдруг осознаёшь что действительно у тебя есть просто стейт что вообще это самая сложная штука самое главное и управление ей Да и ты понимаешь что все большинство принципов которые только есть они все сводятся к тому что мы йт где-то держим отдельно да и делаем максимально чисто ядро программы которое просто его трансформируют не манипулируя не растягивая кусочки по разным кускам в разные местах забавно что эта проблема она возникает очень на разных уровнях всегда и очень кстати сложно достаточно это обобщить и понять общую эту проблему давай знаешь вот типа микросервисы любая вообще распределённая система в принципе потом это касается того же самого ангур первого Если ты помнишь там была проблема что у тебя стейт в каждом компоненте и люди очень быстро поняли что это путь в тупик и стей надо хранить в одном месте и реакт как раз на базе этого в том Ну в том числе когда он вышел он говорит ребят Хорош это делать стейт должен быть в одном месте всё остальное - это просто штука которая им там как-то потом управляет манипулируют и в коде же по сути то же самое сре не реакт А флюкс архитектура как бы потому что реакта как раз тоже стоит размазывает жёстко между компонентами А ну давай так теоретически Ну это можно как бы да но сама архитектура дал возможность как будто бы рендерится с нуля что открывает возможность в одном месте и как бы рендерится с нуля Ну ти типа Каждый раз как будто да ты прав да Прав что это фкс но я имею в виду что то есть я понимаю наверное так на это смотрю то что очень важно как бы для меня это тоже определяет на некий скилл разработчика который уже дошёл до точки когда он это видит всё вместе и понимает и сводит это всё к некой единой концепции системы Кстати когда мы про иммутабельность говорили нельзя не сказать мне очень сильно Вот Забавно Я иногда говорю Вы знаете что docker react и вот всё что мы сейчас говорим очень похоже потому что в докере У тебя ровно же то же самое происходит Да у тебя вот этот Билд кажды раз всё заново тебе не надо думать о предыдущем стейтем тому о чём мы говорим сколько это решает проблем когда люди например сравнивают Баш и то что в докере написано говорит Баш же сложно в докере тоже Баш это же тоже проблема ты говоришь Нет это не так потому что проблема не в самом баше А проблема в мутабельность Вам всегда надо учитывать предыдущий стейт всё что вот касается стейта вот эти концепции Вот это понимание мутабельность и чистого ядра это конечно Ну блин я не знаю Мне кажется это одна из самых ключевых вообще вещей которую надо понимать а вот на неё уже всё остальное на Да это аы для инженера которые надо осознавать и Жура интересный язык она вас толкает определённым образом она прямо заставляет вас со стеймс делать в жава скрипте там в питоне но как бы сами языки вас соблазняют и вы постоянно размазывает этот стей и потом Конечно вы получаете адский Монолит с которым ничего не поделать Не протестировать эти компоненти не выдрать их То есть Вам приходится по сути заново из бронзы как бы отливать Вашу программу там или вот следующее действие я наверное не совру есь скажу что react - это одна из первых таких серьёзных библиотек в жава скрипте которая к этому стала толкать прям именно вот к этим всем подходам но на уровне именно конкретно вот себя не на уровне всего языка типа стойт в одном месте иммутабельность рендеринг каждый раз заново не думая про предыдущее состояние немножко орей Почему мы на бке это делали всю жизнь у нас стейт лежал в базе и мы рендерит эти вьючная работало супер поэтому я когда реак появился я такой Ура кто-то придумал энд на фронтенде то есть это же по сути оно есть подход Ну вот это и была Стартовая идея чувака что почему бы типа не сделать иллюзию что мы заново рендере всё вю Да но потом его всё равно занесло Вот я считаю что Да не совсем правильная ветка как занесло его в опять в адскую йт машину как бы со всеми этими вещами его можно правильно приготовить он даёт инструменты Но это получается отнюдь не все делают это мы уже немножко
Давай ТБ по всем этим шагам пото давай так адвоката поиграю скажу Ну что вот есть у меня в ру и в пайне У меня есть да ты не можешь писать код в Реп вот в чём проблема то есть у народа это что-то типа быстренько порга Да там посмотреть что там есть вызвать и убежать УП кода свою там тесты запустить ещё что-то всё вы потеряли контекст на самом деле это достаточно жёсткое прерывание происходит у вас Да ну то есть вот если Вы подумаете Посмотрите просто внимательно Что вы делаете сколько раз Вы прерывается на такие вещи технические там пересобрать запустить ещё что-то и вы даже не можете там внутри тест хорошо Да но ты ты с тестом ты ты не внутри программы То есть как как вот не знаю как пишется код на лажу как в Юпитер ноутбуке только лучше то есть вот я там открыл коннекшн у меня лежит коннекшн вот Вот он у меня в руках да в репли я над этим коннекшн выполнил quy положил в переменную результат он у меня там лежит я ещё ничего не делаю ещё Ему просто лежит я его могу посмотреть я тут же рядышком написал маленькую функцию которая пробегает по этим данным и что-то из них вытаскивает что мне интересно посмотрел не понравилось поправил данные лежат здесь я опять её написал Опять посмотрел пробежался поправил получилось нормально я эту функцию перенёс как бы типа написал комментарии пошёл на неё тест написал Всё лежит данные лежат я эти данные дампл скопировал в Тест ничего не остановилось конек открыт всё открыто endp ростовый как бы контроллер Да я поправил эту функцию тут же её и дёрнул вот прям вообще как функцию дёрнул её даже не через к а просто напрямую дёрнул передал ей данные смотрю что получилось Получилось не очень дёрнул ещё раз получилось нормально скопировал в тест прогнал тест как бы не на на запущенном реп да то есть в всё миллисекунды вообще вот все действия и получается Я сижу и ковыряюсь вот моторик на лету выделывают её Вставляю ещё одну ещё одну и вас ничего не прерывает Вы вы просто внутри вот я сейчас сижу переливают данные фаросский там типа несколько гигабайт всяких метаданных у меня открыт рел я загрузил список там всех файлов из Бакета вот их там 10.000 они у меня лежат я взял Один Первый взял попробовал прочитать там это инди сончик прочитал пробежался по нему написал фуку которая экстракте то что мне нужно заврался уложил в продакшн код не выходя написал тут же тест тут же его прогнал скинул стоит Ну то есть по мне это просто позволяет там на порядок быстрее писать код вот даже сейчас я когда пишу на тайп скрипте и на этом что-то сложное Я прыгаю в клау отрабатываю там алгоритм понимаю То есть я Ну это просто инструмент мысли получается очень супер быстрого моделирования тестирования идей и потом да потом всё как бы возвращаешься в typescript Это всё возможно Когда у вас уникальная комбинация всего то есть во-первых ФП потому что вы не можете перегрузить код который увязаны с другим кодом Да вы определение класса поменяли там переименовали проти всё разлома надо рестартов равно рано или поздно вы рестарта те ну я наверное уточню что да прости я имел в виду что когда ты говоришь п всё-таки в данном случае просто вот как знаешь про лисп говорят что это Data driven языки да что у тебя просто данные отделены от функций Наверное потому что ну они не обязательно должны быть FP это всё-таки не одно и то же прям совсем но да Я имею в виду что функции чистые функции ни на что не завязаны нету объектив связанных Это означает что я могу перегружать код я могу всю систему перегрузить не останавливайся если я й в сторону отодвинул Всё перегрузил я прямо реально всё могу перегрузить вот я могу даже на литу вот я там иногда по приколу когда mvp пю Да я пишу простой скрипт То есть у меня типа код гонится Раз в 5 минут там или он там раз в минуту берёт т и просто делает Ред это получается типа за 10 миллисекунд такую штуку можно повесить вот всё что в Гид приходит Как бы оно туда ещё и может попку реагировать Вот то есть у вас может быть деплой типа там 10 миллисекунд потому что зарейдить этот код - это 10 миллисекунд Ну то есть вот как бы всё переть вам не надо там всё
переподписать в этом ноутбуке прям не выла из него и вас оин прок кода вы его отдаёте вот то есть вы экспериментировали экспериментировали постепенно оно одело в Камень превратилось в прок код вы выкатили и улетел кому-то хочется посмотреть Посмотрите parents of de это такой типа скринкаст где чувак пишет нало игру ВД моде там Приколись от Макса от того как вот успевает разговаривать есть парочка мох стримов внутри собаки жу МК яю решаю 3 часа с людьми рассуждая там типа это как раз вот посмотрите Ну то есть это вот эрис который вы можете получить но тут прямо уникальная комбинация всего да то есть это лисп это динамика это функциональное программирование и оно одно соединяется вот в такую машину и вот теперь возвращаемся я не Эстет там в плане липа и всех этих вещей просто для меня например вот этот инструмент меня сделал типа там в пять раз более как это сказать эффективным То есть то что некоторые люди там делают типа там неделю я могу фига нуть за день вот со своей лажу И просто там вот есть ещё там beating averages да Paper где это просто скрытое как бы преимущество То есть если вы так научились вот ну я я Причём я это вижу Я сравниваю даже с хорошими инженерами Да которые на других языках они не лохи нифига Ну вот с ними там я могу в два в три раза быстрее работать потому что у меня нет прерываний я прям Я сижу экспериментирую бы ВС там через часик кусок кода готов Я даже иногда у меня вобще неделю не Остана он запущен вот там ВС открыто То есть ты пришёл как бы подл эти конек что-то пописал поменял написал тестики заметил всё то есть это скрытая преимущество для меня персонально в пять раз быстрее но я dam GU как бы я понимаю что есть как бы другой майндсет там вот но там ребята вот сря с тем что Они передают управление какому-то
час лучше Я пописал на тайп скрипте вот в курсори Ну да он весь Это [ __ ] пишет нормально но ВС равно как бы я не могу думать я не могу там трогать Да мне иногда нужно думать мне нужно что-то потрогать посмотреть на эту структуру данных там так её сяк потрогать это не получается в типах то есть потому что итерация становится там в 5 в 10 раз длиннее я могу это всё сделать но как бы но она длиннее ЕС поть СБ этик смотреть как он себя ведёт потому что в том же кло же при правильной интеграции в Редактор конечно там она тоже нужна ты просто нужный кусок выделил отправил в рел и тут же с ним пошёл веселиться даже не отправил там оно не так даже выглядит когда ты сидишь в е Максе Да ты просто выделяешь экспрешн и валишь его пря туже там даже и оно тут же тебе высвечивает результат и там по классике Ты просто вот у тебя функция под ней коммент и в этом комментер и ты вот просто прыгнул вызвал посмотрел поменял прыгнул вызвал посмотрел посл м результат скопировал в тесты как бы там находки и тесты гоняются которые тоже гоняются в 10 раз быстрее чем в к или в питоне потому что там весь ратай запущен они просто типа фуки дёрнул типа у тебя там не знаю 10 миллисекунд как бы все тесты прогнали как бы это даже не секунда там Не авлод ну то есть всё всё быстрее как бы фидбек мгновенный Вы можете бродить по этим данным там смотреть их Ну то есть кто-то вот в дебаг моде там пытается кто вот в типизированные языках Да делать это это жалкое подобие того что как бы Вы можете сидеть внутри ложа кода как бы ну считаете что вы всю программу пишете в дебаг моде и это получается как бы удобно и хорошо вот ну другой аналог да При всём при этом всё равно Вот расскажи продвинулась ли или нет С точки зрения не тех типов не тех структур Ну в общем короче типа безопасности какой-то и автокомплит например то есть поддержки редактора с этой точки зрения что-то изменилось или в принципе потому что оно всё равно стреляет иногда как ни крути оно иногда стреляет но тут как раз это о двух концах палка да то есть получается Оно связано уже дизайном всей системы потому что даже если ты сидишь на типка и начинаешь писать платформу да Ну давайте представим мы кубернетес пишем так как бы вот эти типы твои уходят за границу системы Потому что эти сущности уже будут прилетать снаружи так будут
конфигурируется что ты что-то неправильное прислал и где ты прислал неправильно так то есть ты всё равно будешь писать какой-то валидатор ещё до того как ты в типчик погрузил и ты пишешь genic код вот когда ты Ну вот что у нас в клау мы не пишем Create pacient Так ну не пишем мы пишем generic Create Resource который на вход получает схему данных дополнительные параметры То есть это Super generic код если ты попробуешь такой же код написать там на типизированного языке твои типы тоже станут очень маленькими Ну то есть они тебя не будут тащить за собой потому что да это будут какие-то там genic схемки там Elements есть ещё что-то у тебя пришёл Jon В общем виде Потому что ты его не будешь типизировать Да у нас платформа мы должны ответить типа и вы превратитесь рано или поздно в платформу когда будете То есть как бы вот этот как вот этот простой код будет писать МКА который с типами вы не нужны чтобы это писать МКА по типам и сама догадается а будут платформы из которых генерация СДК на которых пишет ЛМ поэтому наслаждайтесь Но это будет недолго А надо писать платформы А в платформах вам типа уже особо не поможет вы будете вот на дженерик уровне работать это почти та же абстракция как и вот дженерик структуры данных это кстати интересная мысль Да по сути это вот похо ну когда у тебя просто снаружи может прийти практически Рандомный там за исключением базовых каких-то Да структур структура Но это понятно что всё равно это такой не универсальный кейс давай так то есть это именно показват опыт универсаль даже когда яже прикладной код Т Возможно это уже искажение да когда ты не когда у тебя модель данных понятная структурированная конечно это супе удобно что у тебя все эти вещи есть всё равно начинаешь строить абстракции Вот вы пишете свою систему вот там два грида вы сделали типа от руки так Ну а потом Ну что вы хотите Ну вы при какой-то смто описанием есть кото и компонент придумывайте и опишете чтобы она как бы ну то есть вы всё равно это будете обобщать и эти все типочки уже поплывут ну то есть вот тут бы я поспорил всё-таки не все проекты они знаешь бесконечно растут и всё такое но и быстрые скетчи О'кей Но говорю быстрые скетчи будет м писать тот люди не нужны как бы ну то есть недолго наслаждаться как бы уже он очень близок к этому Да это Посмотрим это мы посмотрим знаешь что хотел спросить вот у нас просто осталось не так много времени Да поэтому и мы обычно Просто когда мы про язык разговариваем тоже знаешь там типа про будущее про развитие чтобы понять Вообще А стоит ли на него переходить и так далее мы видишь немножко по-другому построили потому что ложа всё-таки слишком другая во-вторых Ну моё личное убеждение мне хотелось как бы рассказать и показать с точки зрения того чтобы люди воспринимали к ложу не как просто ещё один язык и типа ну О'кей Ладно меня это не касается А как именно способ стать более крутым инженером при этом это не отрицает того что можно собственно пойти и всё-таки не Просто попробовать но и работать и можешь вот в эту точку немножко рассказать а что вообще с ложей происходит не Ну смотри ложа заняла свою нишу да то есть на самом деле ложа не стало типа аутсорс нам языком программирования есть несколько фирм аутсорс которые пишут на кжу Но это скорее исключение чем это То есть как бы ты не пойдёшь в устную про компанию писать на кжу Да там будешь на жава скрипте писать на Джаве на си шарпе ложа заняла нишу продуктовых языков там где у технических руководителей была Свобода выбора и они как бы Поль выбрали на удивление Она проникла много куда то есть там разговариваешь с ребятами из рта там не знаю из сра ещё с кем-то там из дтб есть команда внутри которая Ренат на кжу да Вот потому что их никто не заставлял Ну типа они выбрали то что посчитали нужным выбрать Да вот поэтому много вакансий не будет Ну есть это факт но зато будут кайфовые вакансии потому что обы Жура в фирме то это выбор как бы душой сделанный и значит как бы у фирмы есть душа потому что вы можете там на галеру пойти где там вас попросят бы новый язык там выучить через месяц и выйти на новый проект так как бы там где в компании есть лажу там есть душа это вот с одной стороны да мира подсказка и как бы ну кжу есть да но вы должны быть хорошим инженером То есть если вы слабенький инженер Ну не надо туда не идите Если вы как бы инженер который вот ищет вот этого совершенства Да и хочет быть всё глубже и глубже то это хороший хинт То есть если в фирме есть Лаура там скорее всего интересная культура интересные люди да Туда стоит пойти и там много чему можно научиться и это факт Если Вы посмотрите сейчас вакансии это всё будут продуктовые компании все с достаточно интересными идеями с другой стороны как как работодатель Да скажу Возможно это тоже понравится Ну да мало ложе инженеров но во-первых журе приходят зрелые инженеры с хорошим чувством вкуса Да которым вот сразу и она отрабатывает как некислый такой хороший фильтр то есть вот если чувак выучил кло то ты понимаешь что это как бы инженер не левела потому что там тайпскрипт с питоном каждый студент и это умеет Да там школьник и как бы там ещё смокой как бы он тебе скажет что он что-то умеет если человек дошёл и прошёл вот этот порог ты понимаешь это человек с культурным багажом он там Умеет умеет понима вобще
себя не вха инвестировал Да что сейчас вот сейчас много все всем нужны крипте пойду Ja питон всем нужны пойду питон и поэтому этот хороший фильтр срабатывает и а получается ну фирмы с душой ищут хороших людей чтобы долго с ними идти и работать для и как раз шум не нужен поэтому скажем так вот у нас там есть Ну то есть иная команда ну то есть выхлоп одинаковый по хорошим инженерам оттуда и оттуда как бы напряжение даже меньше потому что лажу заранее фильтрует То есть это вот со стороны работодателя как это видно глазами работодателя плюс мы не боимся доучиться То есть если у человека виден потенциал да то есть он начал потому что ну всё-таки основа - это не не конкретные знание Да там не язык и сейчас с мко это вообще уйдёт на второй план вот а мышление человека какие-то Мета скилы Вот его вот этот внутренний поиск чтобы он хотел хотел что-то стоющее сделать и что-то уметь делать лучше всех а не просто по прописям фигачит говорю МКА у уничтожит этих программистов буквально в течение нескольких лет там как бы ну может пятилетия как бы я запомню Да мне интересно посмотреть будет Ну вот такая ситуация на рынке я скажу Ну честно вам как предпринимать никого конкретные знания не интересует Ну вот на самом деле на Верхнем уровне в хороших компаниях потому что конкретные знания обретаю там за полгода интересует мышление интересует насколько человек увлечён какие-то его там софт скилы Хард скилы вообще способность к р скилам способность к обучению Вот вот что интересует интересует чтобы этот человек как бы честно отнёсся к своей работы с энтузиазмом Да чтобы ему было интересно и кайфово вот что в ядре если у вас вот этого как бы нету вы в хорошей компании либо не живёте либо туда не попадёте если у вас это резонирует то как бы Посмотрите лажу потому что это такое Вот говорю Ну да то есть это немножко для избранных вот для избранных для продуктовых компаний где выбрали душой где ищут таких же людей как бы вот клуб по интересам хотите попасть в элитный клуб давайте к нам хотите быть заменённый мко через 3 года продолжайте тайп скрипти Да резко Ты подвёл но я не могу не добавить то что Вообще процесс отбора тебя в компанию Да я же полно народу к тебе посылал и много кто там задержался он известен там в определённых кругах Да потому что люди знают что к вам не надо идти к жури если такие людей это конечно классно но такой установки нет да и Тот процесс который ты сам сделал сам себе Челлендж то есть типа пройти собеседование в Самурай Вот это всё он же У тебя остался примерно такой же мы сейчас поду простили то есть ночку понизили но всё равно у нас сейчас даётся задание потом интерактивно с тобой сидит несколько инженеров То есть тебе уже не надо работать с тремя инженерами но на тебя смотрит внимательно несколько инженеров Ну основной наш Собес - это поработать вместе как бы мы сейчас на миниатюре и дальше уже у нас ребята достаточно чувствительно если почти все говорят Я бы хотел с таким чуваком работать ты как бы у нас если половина сомневается Скорее всего нет поэтому так да да Так что ребят если кто-то об этом раньше не задумывался даже просто в целях челленджа себя очень рекомендую попробовать Ну тут всё равно работает больше честно скажу культурная Матрица Будьте тем кто вы есть да и Попробуйте к нам Возможно мы как бы таких и ищем более-менее Наверное я выразил Кто мы такие И что мы ищем как бы Поэтому если оно резонирует то Попробуйте Можно несколько раз пробовать мы вообще не торопимся как бы ну то есть у нас нету там чёрных списков вот поэтому Можно прийти на первый Собес как бы получите с лупов вместе список книжек Там ещё надо подтянуть через годик вернётесь у нас некоторые люди там через два через 3 года к нам приходили с третьей попытки Но это нормально Ну то есть мне кажется что вот если ты ищешь как бы компанию нуно это как семья ты будешь проводить там больше времени чем со своей семьёй Да ну поэтому должен быть матч иначе и вы и компания будете мучиться матчи сейчас рдки как бы Ну но бывает бывает вот у на 70 отборных есть Так что приходите Да да я в шоке что у вас уже народу Слушай большое тебе спасибо что пришёл и поделился назвали Да посмотрим что напишут Ребята в коммента проложение пожалуйста ещё много топиков мы да напишите пожалуйста Потому что я уверен Несмотря на то что мы в целом рекомендуем его просто хотя бы да как для развития как инженера я уверен что многие Сейчас бы говорили А как же действительно статическая типизация ещё что-нибудь в общем пишите свои мысли По этому поводу в комментариях будет интересно почитать и мы на что-нибудь может быть ответим А если это будет интересная дискуссия и спасибо что остаётесь с нами Да ну и там мои толки Можно погуглить я там много этих вещей как бы
поразкою и посмотрите там по по всем темам мы это добавим Да мы это добавим и не забудьте подписаться на подкаст в Юту и ВК а также на мой канал организованное программирование в телеграме где я регулярно рассказываю про эффективную разработку а
[музыка]