Привет друзья с вами Кирилл Мокевнин ведущий подкаста организованное программирование тема сегодняшнего подкаста язык го и его развитие который мы обсудим вместе с Алексеем Палажченко Привет Правильно ли Всё Всем привет Да всё правильно сетевой основатель в компании перед тем мы как с тобой пойдём в го Мы с тобой вместе работали да То есть те кто смотрит подкаст знают что я в основном зову друзей Вот и мы с тобой работали ещё в лохматых годах это по-моему одиннадцатый год был да да да и с тех пор много чего прошло и ты вот как бы перекати в го очень активно им занимался самое смешное что прикатился я примерно тогда же то есть на самом деле как бы го я начал делать ещё Когда в майкрософте работал то есть очень много лет Да ну и соответственно ты был большим активистом и в общем-то по этой причине я давно думал что ну когда-то тебя надо позвать потому что про гомне 100% надо поговорить хотя это один из немногих языков популярных на которых я ну там полторы строчки кода написал про него слышу смотрю исходники кое-какие вещи знаю но честно говоря никогда продакшн код на го не писал поэтому в этом плане ситуация чуть отличается от всех предыдущих наверно подкастов которые были но перед тем как мы пойдём прямо в го ты делаешь очень интересную и давай Пару слов про не поговорим потому что ба данных не каждый день люди делают Прямо скажем Ну да да Если как бы говорить и про баз данных то скажут что не настоящая баз данных это ВС на все прокси и настоящие данные хранятся в по мы просто про для проко то есть идея в том что любое приложение кото ис
ком Остане Это позволяет нам сократить время посать с хранение ВС 10 лет как
ми чтоэто ВС
рабо це вашего проекта не читал но то что ты говоришь это звучит знаешь как это звучит так что вы типа помогаете монго декам вернуться нагре безболезненно Ну это одна из причин вообще трие послужило то что Измени лицензию Да теперь это не Open как бы любители говорили что я считаю
должен позволять тебе делать как бы всё что ты хочешь с кодом и этого не позволяет там есть некоторые условия которые не позволяют её использовать в определённых случаях А самое главное там в теории есть возможность такая Да на практике то требование которое есть в тексте лицензии на практики не реализуем поэтому мы делаем Open Source альтернативу db для кого для тех кто не может использовать db по лицензии для тех кто стоит за Open sce не хочет использовать Open Source для Те кто уже экс не хотят тащить ещё одну технологию для существующих проектов которые хотели бы слезть в Моби не могут Ну и так далее В конце концов для тех кто сидит на атласе и хочет с него слезть не сможет потому что мо запрещает использовать Mon db в любом другом облаке без их лицензии они приходят к облачным провайдерам буквально с кетом и говорят Либо вы покупаете у нас лицензии Либо вы на вас мже пару слов хочется про это услышать то что ты рассказываешь это конечно какой-то Ну какая-то просто адовая жесть Неужели после этого у них хоть кто-то останется они делают то есть они могут себе это позволить и делают просто потому что уже много кто на них подсел и просто не соскочить или у них растущая база растущий бизнес новый о современный О точно также как бы Когда ол себя повёл и стал водить лицензию за ро процессоры и так далее да существующая компания с них не слезли потому что уже реп сидят такая же ия приме есть вотк популярности [музыка] г и вс рано Она ВС е продолжает популя кругах рабочи и Да база есть атлас ВС ещё растёт компания ВС ещё убыточная насколько я знаю по публичной Это публичная компания Да отчётность вроде как она в ещ убыточная но акци торгуется высоко поэто Ну а отношение сообщества прод
Поль пользовались включая Компани кото купили несколько лет назад и самый популярный пост вредите мо db сейчас на текущий момент это Потому что когда они его зали они огромное количество пользователей кинули просто через колено это вот тот функционал которым мы сейчас Работаем и буквально не знаю на днях Через несколько Неде в сго
2 всё гораздо быстрее лучше совместимость и так далее в том числе там будет часть того функционала который Ну просто убирает потому что пользователям это надо хорошо вопрос Почему был выбран го для реализации вот этой вот этого экшена вот этой прокси который вы пишете Ну вот как я сказал да Если учесть что мы не разрабатываем по-настоящему баз данных Как сказать бы риста да с точки зрения это как бы база данных Ты к не подключаешься отправляю запросы и всё хорошо ной не пишем для этого
написа хот в теории первы проти делать Почему Потому что бы существующий код нас уже был и было интересно попробовать получится быстро это сделать или нет стало понятно что делать имеет смысл и начали делать норма коне с партнёрами Вот а если убрать экн хранение и вот это ВС прочее то что остаётся
этон отправка и по сути Go Это отличный изы для написания сетевых сервисов большая часть людей пишет конечно обычны htp или PC или но Большая разница между тем как писать прокси проко db или htp нету а для этого язык идеально подходящий Ну и Вторая причина конечно что я очень давно пишу на пишу на начиная с 60 до 1 и по сути вот уже не знаю сколько 15 Т уже 15 лет Ну чуть меньше Да 13 лет пришёл на голову практически без остановки это язык который знаю лучше всего знаю все особенности все проблемы знаю сообщество это язык который для меня универсален просто по сути Ну да да вообще удивительно потому что там до этого у тебя Python был рельса кстати не помню была или нет но у тебя богата была Да я вот когда мы с тобой работали Я пришёл изначально НС программистом потом переключился нан на и как раз когда работали в майкрософте Когда произошёл этот двойной акш когда нечего было делать Мы с нашими коллегами посидели такие почесали репу и Давайте что-нибудь попробуем сделать прикольное и сделали игру Go Ну точнее начали делать игру го Вот И там было три компонента там был мобильный клиент на си шарпе а какой-то прокси на иланг и штука которая запуска нго естественно на чём её писать писать на го вот я её написал на ГО и вот С тех пор пошло поехало Угу У людей в голове есть представление что год Ну достаточно новый язык Ну во-первых в принципе уже довольно много прошло времени как он стал называться го и как го существует Но мы знаем и хочется сказать нашим людям которые нас слушают что го не появился в Гугле когда там типа он вышел то есть ну у многих ощущение что вот Google придумал новый язык и вот он вышел а историю про план 9 Никто не знает но я бы сказал что эта история можно её отследить наверно вплоть до как то есть создателя этор гриме и н Томсон Томсон из них самый старый и самый известный человек который создал предшественник это один из отцов из отелей Юса Если вы эти фамилии знаете Томсон обычно тре в этом Ду упоминается известен Да нарам Одно Изе ласси
это создатель 9 всех последующих за ним систем созда нех других инструментов извест в конце концов и рор г наиболее известен своей работой над тоже То есть это история старше гу Да иде И вообще егос
что не один конкретный момент времени Да оно же там как бы эволюционно развивалось но была вот эта история с планом де Да это в сумме по-моему и операционка и mainframe или что-то в этом духе Да ещё был выров Лим вот там и какие это годы были восьмидесятые девяностые н де закончился где-то я бы сказал активное развитие в середине девяностых просто получается очень забавная ситуация вот как бы ну как реально растут языки программирования как они стреляют Да по сути всё это было тогда и синтаксис и либо даже стандартный и вот всё можно было в принципе уже работать никому это было не нужно никто про это не думал потом в Google вложил так кучу денег они это переупаковка
что это невероятно востребованный язык нужно я бы сказал что это важно конечно б был важен огром роль сы финансирование просто по сути Легенда создание Прим говор чтоле пра они так и были я спрашивал подтвердил что они сходили Ната посвященный c+ современно на тот момент это был какой-то предполагаемый новый р+ вернули
повернулись другу и решили что надо сделать новый язык надо с этим что-то делать потому что так жить невозможно компиляция занимает огромные часы сложность потрясающая нужно сделать что-то проще они вернулись многим к своим идеям с с но пере упаковали это подобны даже ска подобный синтаксис То есть была такая старая статья где сравнивается и БН X Вот и в
кон язык и в конце коце выясняется что бнд X - это алгол 60 Вот и я бы сказал Да что как бы что-то из ал гола пошло что-то из питона очень много из лимба но в таком более современном от части си подобном синтаксисе и это полетел вот бренд Гугла сыграл большую роль Для меня он скорее всегда был минусом чем плюсом но я не могу сказать что были какие-то моменты когда Google сыграл свою негативную роль скорее был постоянно такой страх но он не реализовался в итоге до сих пор Ну по-моему был страх что в том числе это всё может прикрыться очень быстро потому что этим доверять гигантам вообще-то опасно Ну это с одной стороны с другой стороны Да понятно есть какая-то история там про Дарт и возможно какие-то другие Но я бы сказал что язык появился во многом вопреки Гуглу просто так получилось что трое этих людей работали вместе в Гугле потом к ним присоединились ещё другие люди которые опять же так получилось что работали в Гугле там Ян Тейлор который делал гцц и линкер братец Патрик который которого в России все конечно знают по создателю как создателя ж и ша и вс остальное То есть не было такого большого влияния вот мы об этом поговорим наверное ближе дальше Да когда говорим какие-то новые фи есть люди которые говорят что это вот Google делает kpi для го по количеству новых фич в новом релизе и поэтому сейчас всё пошло не туда и мы обречены но о Мы сейчас про это поговорим да я сразу спойлер Я так не думаю если честно я не вижу вот этого вни угла если честно Потому что я за разработкой слежу довольно активно О'кей го прошёл долгий путь у него невероятная там кривая вот это вот типа все там в него там рванули нужны специалисты все дела одна из особенностей наверное в том что из-за специфики и появления языка и того как вот он пошёл потому что не все языки такие Такой путь проходят Да там например вообще практически отсутствовал всегда начинающий уровень да то есть нет такого что го учат где-то с нуля Ну есть наверное сейчас но не в таких масштабах и поэтому по что типа вва в через го в программирование - это достаточно редкая история и в основном это людей там с PHP там с любых других языков перекатывает и в общем-то всем нужны по большому счёту готовые специалисты Да 100% будет меняться наверное уже меняется но я бы не сказал что это прям капец массово так вот го собственно занял прочную нишу даже в тех местах подвинул джаву Я уж не говорю про PHP понятное дело там это было логично и в итоге Вот если сейчас мы говорим Можем ли мы сказать что он ещ продолжает расти или он уже занял свою нишу определился И всё он в ней как бы живёт и растёт Ну и про эту нишу что что собственно делают Наго Ну Киллер фичи Киллер приложением для го был докер конечно да то есть в начале когда го появился Да какие сильные стороны простота самое главное но простота сложно продавать поэтому все говорили вот отличные рутины легковесные треды статические бинарки закинул и всё работает не нужно это тащить зависимости питона или на ЧМ тогда делали но появился докер и действительно всё взлетело потом появился кубернетес и Стало ещё больше всё э ниша конечно го занята очень плотно если посмотреть на Cloud native Foundation landscape там там почти всё написано на там очень-очень редкие исключения когда что-то не на написано вот это ниша можно сказать Go закрыта полностью я не знаю какие другие языки на уровне сетевых сервисов какой-то такой вообще е продолжат использова называтся у меня фом который ребята он самых ярких примеров просто они только успели Нару написать а ВС остальное у них уже да да И вот это доке Который изначально был переписали на причём там была смешная история тоже опять легенды и вроде как это правда что
[музыка]
пом эти Катам е пере с давам чтобы удивились
жения бы компания которая была пыталась заменить собой року Это был Европейский аналог року который лся нача
ниша приложени тоже хорошо покры потому что большое преимущество ческого бинарка кото раз компилируется легко собираешь везде работае везде то есть не как Ja гдети один бинарник который типа виртуальна машины которая по идее работает везде на самом деле не очень нужно всегда кучу тащить здесь как бы бинарник не универсальный нужно
просто две переменные окружения ставишь и пожалуйста И вот у тебя есть статический который универсальны хорошо работает не требует зависимости какието другие ниши Ну вообще Go язык довольно универсальный Да и на нём можно и мобильные приложения писать и нейронные сети на нём делают Но это конечно сильно всё на любите игры делают в конце концов на нём я про это спрошу тебя попозже Да там потому что многие сложные вещи типа Умки разных фреймворков требуют наличие Мета программирования для того чтобы хорошо их сделать и скорее всего Уго там есть вопросики короче к нему в плане того как он и такие вопросы решает Да но я так понимаю что ещё вот что наверное ещё что попёрло это вот эта история с микросервисы Да и скажем я понимаю прекрасно давай так вот PHP нае большие проекты я понимаю там PHP просто не подходил его туда втыкали Ну команды знали его использовали но он плохо под это подходил поэтому там логично что нужно было на что-то перетягивать кто-то успел на джаву но в целом видно что им гораздо прикольнее интереснее перетягивать это Наго А вот двое проекты то есть вот экосистемы большие банки там вот это весь крупняк туда тоже он начал проникать и Казалось бы вроде бы jav хрен подвис сильное влияние насколько Интересно что в начале когда АВ залили Они вообще ожидали что перейдут на го программист и поначалу было очень видно что вобще приходили было перегруз всего и так далее но при этом переходили питани русты которым не приходилось жертвовать очень многим Да Выразительность языка ниже но не настолько ниже но при этом гораздо проще многие вещи делаются работает всё гораздо быстрее зависимости нет так потом постепенно постепенно голову стал занимать другие ниши Да в том числе и разработка постепенно почему вопрос хороши Я думаю что на сам Ключевое свойство опять же простота всё-таки язык гораздо более сложный и и оброс он функцио сильно за это время Вот но опять же простота такая вещь кото сложно продавать да Если ты придёшь Существую Компани где всё на Ja написано скажешь Давайте перепишем на что проще они скажут совсем что ли и не будут ничего делать поэтому надо как бы завлекать чем-то другим возможно то чем можно завлечь тем что на есть хороший который бите который был там с самого нача поддерживает http2 hp3 и все новые фишки и при этом в Джаве да до сих пор я знаю Там как бы с этим несколько зоопарк то есть есть несколько разных реализаций Я не знаю есть там стандартны помоему по-моему есть стандартная Но ей никто не пользуется потому что все пользуются каким-то обм стандарт или чем-то внешним вот а в Go она уже такая старая довольно хорошо работает проверена временем е не страшно выставлять на в интернет пря каким-то прокси Google собственно её во многих местах использует тоже ну там сжа ещё чуть сложнее потому что у тебя ребята которые на ней пишут в таких местах Они конечно смеются над словами наверное простота и всё остальное у них Главное чтобы там софт 40 лет работал без сбоев и с обновлениями Ну над ними смеются ребята которые пишут набо над ними наверно да Но я име всё равно в этом отношении то есть 100% значит они поверили в го как в сталь можно Положи какието фанатики проли конечно Ты абсолютно прав одна из главных ше именно обратная совместимость язык обратная совместимость после 1 Не ломал разу Я вот недавно кстати ради эксперимента я нашл свой код написа на R6 это последний 1 между Они обратно совме последний раз
вот с тех пор он ни разу не был нужен этот код отлично запускается работает написанный 15 лет назад Ну это как знаешь как история про то что молодая технология Я помню вот Гош неки все такие у нас нет фреймворков ведь фреймворки не нужны столько абстракций там тра-та-та Там смотрите как классно а сейчас и такой смотришь на всё это и видишь постепенно вот ты говоришь там не ломают обратную совместимость у тебя обратная сторона 100% растёт тех долг там и всякие дизайнерские это будет накапливаться ни один язык не может этого избежать если что-то меняется Да го понятно Ещё самый молодой Поэтому у него этот багаж самы маленький но у тебя фреймворков появилось полно у тебя экосистема растёт пакетов и более того фичи появляются которые начали раскалывать сообщество и получается с одной стороны го как бы классно зашёл Но вот скажи сейчас то есть есть такое что он ещё продолжает как бы как ракета переть вверх или вс-таки он на Плато вышел Ну плато пока Если честно не видно ходящего растёт количество разработчиков растёт разработчиков найти всё ещё довольно тяжело Несмотря на то что рынок скорее в обратной ситуации именно разработчиков хороших искать сложно вот что касается кстати вернусь немножко на шаг назад Да обратно совместимость тех долг растёт по каким-то таким очень сильно фундаментальным вещам какие-то небольшие вещи го фиксит интересным образом то есть недавно когда был переход на моду недавно лет наза когда был переход на моду
Т зависимости повир по Су любо современ ко может копировать любой версии и допустим там знаю версия 212 они там поменяли как работают Раньше это была одна переменная на все итерации после этого это стала одна новая переменная на каждую итерацию технически это ломаю совмести
исправили на всякий случай оставили можеть щение и по сути сечас это официальный способ которы делается чере окружение То есть можно любой предыдущий старый механизм включить обратно если это что-то сма на практике Лично у меня ни разу не было Такой необходимости Вот Но в принципе какие-то такие относительно простые вещи Да в плане потно
если считать что она сломана чем я лично не уверен пофиксить таким простым образом невозможно Хотя были проы которые её расширяет делают её проще но они не Пошли потому что они делают язык существенно сложнее Ну кстати да про вот эти вещи тоже зацепи Понятно В общем он ещ растёт у него он не вышел на плату всё больше Ниш занимает но интересно что ты сказал про фреймворки Да вот
количе обч леров Но таких как бы одного или двух или трх фрв которые бы захватили всё так и действительно не появилось то есть есть некоторые популярные но при этом в последних версиях Go часть их функционала там знаю раун какой-то да появился стада библиотеке серьёзно роутинг стандарт ли Ну на самом деле опять же да роутинг по путям был с самого начала с верси 1.0 что добавили это добавили какую-то поддержку шаб тях добавили порт тогда это прикольно получается есть Лано говори ти у нас нет фреймворков потому что у на реворк встроен в сам опять же да это был тоже интересный теоретический вопрос HP в написал Вот он к нам как-то на конференцию приезжал он открывал первую конференцию в Москве и мы с ним как раз пере конференци сидели Он задал такой вопро что до бите какой функционал как в пито когда всё подряд ю
долж быть или нет С одной стороны если она есть да Это универсально с другой стороны это как бы не позволяет по сути те сделать ни один альтернатив в случае го Это всё-таки скорее было хорошо потому что уж довольно Хороший получился результат Хотя внутри на местами выглядит очень страшно Но работает хорошо Ну понятно да Ну я имеют е можно сза вообще сама вот э история про движение в рону инри повышение абстракции она есть потому что становится больше проекты Нужно больше разных вещей то есть вот эти все слова на тему того что нам кроме голого го ничего не надо потому что все остальные языки просто сложные А мы простые я вот с этим тезисом никогда не был согласен потому что ребят Ну если вы пишите просто много микросервисов Ну наверное да Но это в любом языке бы у вас так было вот а часть вещей просто встроены в язык поэтому и не нужно Ну да да конечно вообще изначально гос создавался для програми lch да для создания больших проектов и вещи которые были тогда нужны и почему появился долгая компиляция была проблема номер но кото Они хотели решить это грамотное управление зависимостями Я имею вду внешними зависимостями это отдельная история Да внутрен зависимости в каком порядке что как компилируется перекомбинация
но постепенно постепенно сложность языка действительно раст Да это является для некоторых людей в сообществе Такой проблемы я бы не сказал что для меня это является проблемой Но наверно сейчас поговорим да Давай сейчас поговорим Единственно Только спрошу тебя всё-таки Ты про кубер сказал Какой объём там кода и сколько компилируется можешь сказать Нет сечас сходу не скажу я знаю что наверное
саме по по размеру сообщества 100% Да по размеру входа не знаю сколько компилируется тоже так сходно скаж но в Go эффективная компиляция там нету необходимости перекомбинация
в последней версии который вот выйдет в феврале или да феврале А появится возможность подключать внешние кэши То есть это мо может сделать распределённый кэш где-нибудь там на сервер у тебя кэш хранится и дольше чем в локальный то есть э проблема перестанет быть проблемой ещё больше бы сказал прикольно ну Можно сейчас если есть время в фоне запустить кубернетес
компилируется да Давай поговорим про его фичи про его Изменения к нему есть определённый набор претензий у разной аудитории Да давай сначала перед тем как говорить про всякие новые фичи вообще в целом про дизайн языка вот мир разделился Да на два то есть для кого-то скучный для кого-то значит обработка ошибок кто-то говорит что там слишком много шаблонного кода кто-то говорит но зато он тупой как дрова
явлением иба лат карава ИТ ВС хоро или видиш тоже есть какие-то проблемы с которыми мы теперь живём в плане дизайна языка вопервых Я согласен с тем что ску Это скучный язык на ко это язык не знаю Я вот недавно Интере изучал оба языки
не сказал что у них неожиданного поведение всё-таки существенно больше чем го язык который позволяет тебе сфокусироваться на проблеме которую ты решаешь до той области пока е выразительности языка хватает то есть нельзя сказать что го - это штука на которую легко писать DSL как на Руби Да потому что Ну нет тут не хватает просто выразительности языка и ты если ты хочешь япишу хочу решать свою бизнес проблему в ДС ногой это невозможно те нужно писать зна интерпретатор свой или встраивать язык или что-то такое вот Но если твоя задача - это что-то более низко уровне чем DS для бизнес-задач например типичные промо сетевые сервисы язык не мешает тебе совершенно он тебе только помогает И никаких неожиданных фич которые какие-то весёлые но в неподходящий момента в нём нет вот если в нём какие-то минусы Ну да некоторые люди считают это скучным что я хочу язык который мощный как не знаю как Swift который добавляет и добавляет фичи с каждым разом всё больше и больше именно в сам язык как сложность или язык который как раст который тебя бьёт по рукам вообще везде Абсолютно Ну кстати в этом отношении тут много всяких сравнений есть там как раз бьёт по рукам хаскель тоже бьёт по рукам там типа распределённый но есть Ланг Но с другой стороны там Понятно никакой те кросс компиляции и всё-таки это язык ну другой в этом плане Хотя я его очень люблю честно тебе скажу Ирлан Эликсир я их обожаю и с точки зрения знаешь его скучно Вот помнишь Руби Какое отношение у людей вызывал меня всегда это поражало в нём те кто сбоку Они конечно могут говорить Ну что же там непопулярные все дела Вот ни фига если люди Да ты сам знаешь они попадают Они они он влюбляет в себя ты его либо любишь либо ненавидишь Но у тебя нет к нему отношения как к скучном языку я в какой-то момент для себя вот чисто знаешь так с точки зрения вот меня программиста а не меня эффективного сотрудника или там владельца компании я такой Блин мне конечно го вот не доставляет радости никакой типа не в том смысле что на нём не писал бы или не использовал Но типа есть языки которые сам факт на них написания Ну как знаешь как вот не знаю там занимаюсь спортом Да я там начинаю тренировку И мне просто вот кайф вот от го нет такого эффекта и реально есть люди которых это торкает Вот это удивительно то есть по идее мы вроде инженеры Вроде взял и пошёл но нет есть красота есть вот это ощущение и конечно у разных людей прям ты прям видишь как Люди делятся Да часть людей - это нормально часть нет и они ничего с собой не могут поделать при этом я бы сказал что мне программировать Наго на самом деле очень сильно нравится да то есть и Меня торкает программировать Наго Я люблю программировать но скорее из-за того что не из того что О боже мой какая потрясающая фича в языке хотя на самом деле Ну если честно да комбинация каких-то фич вот в плане Там конкурентности рутин и так далее Она действительно иногда работает прям очень здорово как всё классно сложилось хоп взял немножко поменял код и у меня там 100 рутин параллельно Вот Но в основном это из-за того что я просто чувствую себя эффективным на этом языке Я не бориш языком неожиданный эффект в современности то что э простота позволяет очень делать эффективно дополнени при помощи т gpt и так далее колота отличный в отличие от ру Например я боюсь Да ты прав в этом плане абсолютно и поэтому в этом смысле как бы ного Я очень быстро эффективно Решаю свою задачу опять же при этом есть компилятор есть система типов хотя и не такая развесистая как во многих других языках но тем не менее более стойкая чем в том же рубе да где как бы ты не знаешь Пока не запустишь заработает или нет вот в этом смысле как бы горад но нет такого что Боже мой какую потрясающую фичу завезли хотя хотя и такое тоже есть вот дженерики завезли и было интересно побираться то есть давай так дизайн ошибок ты в принципе считаешь это типа лучший компромисс в конечном итоге который был и есть смотри Можно сразу сказать что в го есть вещи в том числе дизайны ошибок которые сами авторы говорят что мы возможно что-нибудь ещ придумаем также было с дженерика То есть когда до тонери появились все такие
небко про которые были внутрен которые они сами себе написали Как сделать жери и сами поняли что они так их сделать не смогут то есть Это работа которая была очень-очень давно до первых публичных анонсов когда вот мы Дума сделать ре так это было очень много рабо Они хотели что сде им
был какой-то момент когда го как язык именно не развивался был огромный период развития тунга улучшение компиляции улучшение там внешних зависимо модуле и так далее и было огромное количество пропо кото долгий ящик такой гипотетический год потом они решили что го в таком виде как 2 никогда не случится и Давайте потихоньку анализировать
сде значит затаскивать новые фичи Вот и первые фичи которые были это если я не путаю это как раз были модули дженерики и обработка ошибок обработка ошибок из них это был первый пропол который попытались реализовать который полностью реализовали и решили не включать в релиз потому что стало в общем-то хуже по большому счёту это не значит что к этой теме не вернутся более того они говорят что оник этой тем вернуться просто сделали шаг назад чтобы посмотреть на то что они вс-таки добавили часть циа была сделать ша назад посмотреть как это работает собрать статистику подумать на воз чтот про его можно найти он называется и по сути он примерный функциональный знака вопроса Да
вти таго это не Это скорее неявный си который
скрывает вот общее ощущение что конечно синтаксис Ну то есть да оно всё тупое понятно и так далее но всё-таки оно немножко мешает и они об этом думают потому что ну получается вот эти вот вот эти вот цепочки вложенные да с этими проверками Ну напрягают людей Да ну я бы сказал что если есть вот такие цепочки как ты по рисовал то есть стандартная типа стандартный совет не делайте Вот так То есть просто делайте Рен в Go Боже мой боже мой турн можно написать в любом месте функции Поэтому просто ранний выход и это превращает вот такую цепочку в более длинный код но зато более узкий Да гарды наше всё да Ну по дизайну языка более-менее Понятно В итоге сообщество приняло то что сделали это стало полезным какой результат вот этого изменения я бы сказал что сообщество В массе приняло это полезная польза есть для себя могу сказать что польза 100% есть с дженериками стало сильно проще писать код в том месте где я его пишу тем кому не нужно Не нужно Ладно Они не пользуются есть некоторое количество людей которые сказали что го идёт не туда и в сложность и Кип ловы менеджер наводит но подтверждений я бы сказал что это нету ну знаешь это такая типичная история про статус кво то есть аудитория которая туда пришла часть её была прямо фанатично вот по поводу того что всё должно быть максимально простое тупое и они продолжают за это цепляться хотя язык всё-таки пошёл вперёд Ну есть часть людей которые говорит что да язык вообще не нужно менять нужно или нужно что-то делать другое нужно уть ту пробле Возможно намер есть Рен пробле то что очень Многие хотят это какая-то более хорошая подеж по сути в языке сечас Нет есть аналог который позволяет решать Стич пробле Вот я думаю что возможно они появятся но кто-то говорит Нафига намри Нафига нам [музыка] давай про систему типов немножко Я насколько вот вижу со стороны Да И вот общаюсь с людьми когда вышел ty скрипт дошёл до определённого уровня у всех капать слюна начала и все такие а нам тоже бы вот это вот всё вот у гошко есть такое Я слышал что тоже есть вещи крипта которые Многие хотят затащить в го но я ничего про это не знаю То есть официальная позиция команды - это язык программирования кодом а не системой типов есть шники пишут код а не дизайне системы типов которые не позволит им писать неправильный код Вот это конечно имеет две стороны медали Да С одной стороны тебе приходится писать большое количество кода иногда проверки Иногда у тебя Ну вот типичная проблема Да в го указатель по сути имеет Три разных смысла Да это либо ты используешь для того чтобы модифицировать получатель либо ты используешь чтобы придать что-то эффективно только указа не копировать целиком или для того чтобы может эти три смысла они не никах не конных ссылок ничего такого появится системе типов но может быть но пока официальный ответ такой что нет пока нет это усложнить систему типов без необходимости сломать силь обратную совместимость при этом что наверно важно
[музыка] или е что-то как будто они появляются откуда на самом деле все эти про они все публич это обсуждение идт публично разработка идт публично и это часто занимает много лет серьёзно то есть те же дженерики делали долго несколько лет по поводу то что я сечас толь скал да про отчасти был публичный прототип Где сделали
что
кось потому что любая функция кото принима
нание фун перегрузки функци пере и получается что ради этой функции нам нужно делать сильно сильно более сложны вот сейчас сделали потенциально такую позволят ты можешь сделать ибе и вс что скрыть указатель структу запаковать чтобы не торча нару
да да в теке появляются модули с версией 2 которые исправляют какие-то ошибки дизайна пока что там не помню одна наверное скоро будет вторая был Ma Random который теперь Ma R 2 есть там идея сделать новый интерфейс для ны но я слабость верю что всю сну библиотеку перепишут на использова дженериков и о если честно что не мешает тебе делать свои собственные фреймворки на всём этом они не будут интегрироваться со всем миром и будут выглядеть очень странно но но теперь это можно сделать Кстати я сейчас знаешь такой подумал это такая-то тупая мысль но она классная Вот вот эта идея Типа если мы делаем новую версию стандартной Либо мы просто её называем двойку добавляем туда Да я такой вспоминаешь у тебя в Джаве там куча пересекающихся либ и у них просто тупо разные названия и ты как бы должен знать да та думаешь Ну это же простая идея была ребята что бы так что так не сделать Ну по то как сделали модули и как сделали версионирование ско там было слз по этому поводу тоже отдель истори хотим об этом сейчас поговорить или нет но вкратце что любая мажорная версия новой библиотеки внешней Да должна добавлять мажорную версию прямо в путь свой То есть если это версия О то это называется github.com пользователь My package если это версия 2 то это github.com пользователь my2 тотже самый Но это долж быть либо отдельная ветка либо отдельная попка и V2 Вот это торчит прямо на ру прямо ВПО пути да Знаешь мне что это напоминает в github actions так экшены используются Да когда у тебя версион используется но в Go это сделано для того что ты можешь постепенно мигрировать свой код с одной версии на другую при этом в какойто ты будешь использовать обе Да в большинстве языков у тебя нету возможности Ну конечно с большим исключением JS где можно использовать версий да да но там не знаю в том же ру питоне Да у тебя нету простой возможности использовать несколько версий од здесь Ну если у тебя ещ в либи есть глобальный стей то и хрен ты по используешь Две версии там тоже есть ограничения всякие конечно конечно безусловно есть ограничения глобальный й какие-то глобальные хелы там знаю импорты и так далее но на практике это всё-таки не так часто встречается в год Поэтому да это вот знаешь вот как любое инженерное решение хорошее Оно всегда обратная сторона медали чего-то потому что с одной стороны то что ты говоришь это правда но с другой стороны есть очень большая проблема потому что штука в принципе затрудняет апдейт и для тех людей которые в принципе хотели бы готовы были быстренько это бахнуть тебе надо ходить по всем файлом и менять Там версию Нет для этого есть Тулин То есть как бы одна из опять же Kill видишь постепенно постепенно в процессе подкаста мы всё больше и больше говорим языка с самого самого начала было огромное количество линго в том числе теки стандартного тунга для парн и модификации кода написать свой нте или Свон которы делать
пря как ли встроен и вс остальное расшире бите есть так называемые библиотеки с им которые по сути часть Просто у них Верни не такая железобетонная как стандарт вообще не ломается Нико потенциально ломается но
модификации кода на любом уровне Если хочет на очень низком уровне пожалуйста если нужна более высо абстракция более высокого уровне пожалуйста То есть это реально делается очень легко и поэтому руками ходить менять все файлы Нет есть туль для этого да Слушай да супер и в этом плане я сейчас тоже хочется сказать один из причин успеха го ну понятно что это мелочь по сравнению со всем остальным но всё же это действительно Тулин вот мы постоянно эту тему шутим что новый язык выпустил сделай сначала крутой пдж менеджер а потом как бы рассказывай про свой язык да а тут у тебя это же вообще по-моему единственный язык у которого форматер встроен прям Это был первый язык который вышел сом формам это тоже была причём самое смешное что в самой первой версии у него были какие-то параметры есть Парат использу и версия это убрали это под влиянием это под влиянием того что ну типа всем было Норм и все бы ну как бы часть понят воски имен одинаковый го Все проще теперь ВС больше и больше появляется форма которы не принимат конфигурации Ну я име виду это общая такая тенденция пошла помнишь Сначала это придумали Ну по крайней мере массово это стало да Самое интересное что придумали л такой первый язык с формам который настолько а потом Да везде пошло стандарты стандарты стандарты что типам тот же пакетный появился позже и тоже была драма в сво время когда было огромное количество внешних яже во времена 1 бы пакет я помню ты дела Я вспомнил что ты делал этот пакетный времена но в итоге я бы сказал что дизайн модуле реально лучше получился всего остального несмотря на ВС ту драму которая там была строго лучше чем ВС Остальное при этом как бы
Почему зависимости у тебя используется максимально старая зависимость максимально новая для меня вопрос непонятный Почему так сделал кстати гораздо гораздо проще А я ведь не особо-то знаком с этой системой То есть я просто помню что в импорта ты указываешь это прям ну в параметрах Да всё а в итоге у тебя какой-то Аля там файл го файл в импорте у тебя только мажорная версия То есть если у тебя мажорная версия ноль или оди в импорт пути её нет если это 2 то это V2 если 3 это V3
только есть фа в котором уы верси кото используется и он же является фа Зачем нужен фай То есть у тебя есть файл который описывает твои зависимости диапазон и так далее есть
кото описывает фие зависимости нету никакой возможности диапазоны Если ты хочешь обновить одну библиотеку
то старые допустимые То есть если у тебя есть какая-то библиотека она указывает зависимость она указывает самые старые версии которые можно использовать и в итоге когда ты обновляешь в зависимости если ты там запускаешь команду обновления по умолчанию Ну точнее как если Ты запускаешь вообще ничего не изменяется Да но если ты обновляешь одну зависимость то во всех системах используется максимально новые версии и её зависимость транзитивная зависимость максималь разрешён это полностью решает там проблему родных зависимой и так далее прикольно это на самом деле приэтом конечно опять же есть тунг Не говоря уже про всякие Да но есть и Стандарт которы позволяет тебе обновлять это более часто если так хочешь Слушай а вообще в этом отношении Есть ли Вот Уго скажем такие зависшие как бы проблемы когда Ну многие экосистемы знаешь там есть такие прямо в Тулин Ну просто засада которая там длится десятилетиями годами кою решат возми тот самы разговаривали тоже там же история с пакетным менеджером Это какой-то ад который бесконечный просто и вот только сейчас вот этот U там появился и вроде как он помогает И то это сторонняя приблуда которую вообще пытаются сделать ещ как коммерческий проект Так что Ещё неизвестно что там будет история на Контра с казалось все довольны при
это бых не появи в это какой-то цирк каждый раз это удивительно было огромное количество внешних потом появился механизм Венн когда ты просто все свои зависимости вкладывал в папочку рядом И если э Папочка называлась то включался режима они использовались и по сути идея
уже знает что с этим делать а модули появились уже существенно позже но я говорю но они изменили Всё полностью То есть никто сейчас не пользуется какими-то внешними лами и на мой взгляд опять же они строго лучше если игнорировать историю которая в каких-то местах была не очень приятно для сообщества и для людей которые в этом участвовали вопрос решён вопрос решён Да ну это зависимости да А я имел не только то есть вообще цело понимаю я просто думаю Наверно так сходу наверное Ничего в голову не приходит да то есть сообщество активно работает да Google всё ещё активно вкладывается в язык команда там довольно большая Она развивается я зна сечас скажу какой у меня подводный вопрос в этом отношении Дело в том что получается смотри Забавно то есть про очень многих проблем Ну по многим причинам в го нет или их решили да но так люди устроены что им нужны проблемы им нужно на чем-то страдать им нужно вокруг чего-то строить драму и это забавно что я вот уверен нет такого
сст довольны фоку куда смеется вот Интере г драма в происходит основная Я думаю что текущая драма это что язык сложный сри потом что-то ещ и вот есть такие опасения что язык будет сложнее слож я бы не
назвал внедрение фич изменений она сейчас увеличилась или нет Она увеличилась но просто потому что ка минута она была нулевой и вот в этот момент как бы произошло как раз в этот момент стабильности огромное количество людей в гое прошло и поэтому они не знали как го менялся до этого момен да то есть до 1:0 язык там были викли релизы он менялся каждую неделю Ну это понятно это очень ранние версии и так далее Но даже какие-то там 1 1 1 13 и так далее первые релизы менялись довольно сильно и в туринге
потом был период зати когда думали том что делать верси
Этот Давайте постепенно добавлять в текущий язык и конечно э скорость развития стало больше опять же она была нельзя сказать что эти вещ появляются внезапно потому что говорил они все годами
ожидает в течение пары Троки лет в го Нури из таких текущих публичных пров есть обсуждение вернуться к каким-то изменениям лока то есть был прол даже был пакет бите Хотя Экспериментальный про он слишком Плохо работал текущая обсуждение Это по поводу сделать региона идея в том что можешь кусок памяти аллоцировать и дальше в нём более эффективно подс и потом одним большим куском освободить
по сути сделать такие регио памяти которы управляются более эффективно ЕС ты делаешь это правильно в отличие отре взрывали
еэ Если ты их рога но
Я думаю что это пару лет палет може пару версий год этого е не будет Слушай а многопоточность насколько я помню Там же просто лу внутри и крутится на одном ядре Или я не прав в готи нет самой самой первой версии то количество Ну у тебя рутина легковесные ТД они маятся на Т операционно сино синем Кост
яд если они есть недавно люди делали на машинах с огромным количеством ядер самый самый круп можно взять ядер показало что он там на машинах с исключительным количеством ядер он эффективно использует примерно половину да то есть что сделать лучше Да в этом мест Ну ладно хоро в том случае проб бы в про но
он делает новые треды когда блокируется на системных вызовах или когда ВС уходит файлы вывод или что-то такое но обычный код работает на всех Я понял А у тебя запуск рутины приводит всегда к старту нового треда нетти легкове Ты можешь легко в своей программе запустить миллион рутин этот миллион рутин будет использовать столько тредо сколько у тебя ядер операционна система если они делают какой-нибудь фа и другие блоки вывы капотом как обычно он не блокирующий он не приводится сода но при этом можно использовать то есть механизм когда у тебя на реквест или там подключение сдаётся рутина и обрабатывается это очень типично и десятки сотни подключени легко да да тут в этом плане конечно это прям Ну практически Поэтому в этом плане Тут всё понятно знаешь я что Вспомни вот была такая всегда история то есть мы поговорили продин да про всякий Тулин и всё остальное А вот давай немножко про собственно кодинг на го поговорим да хотя мы немножко его затрагивали по поводу там скучно и простоты но есть всё-таки моменты которые мне интересны Я помню вот история про concurrency на Go Она всегда стояла особняком Ну типа есть базовый го Вот ты там циклы списки что-то ты там поделаю хорошо научился программировать Садись пять а вот как только встаёт вопрос а давай-ка тут рутин обработка ошибок упала проконтролировал и так далее Я помню что говорили это сильно меняет мозг это надо менять своё сознание можно писать очень по-разному можно писать очень неправильно и эту часть как бы не является Такой типа А ну вот понял и пишешь то есть это требует какой-то определённой экспертизы и именно здесь зарыта самая собственно сложность и она даже больше сложность Ну типа всё-таки у тебя не просто последовательный скрипт Да у тебя какой-то нелинейный код появляется да прон да то есть с одной стороны там действительно близко км трем Но именно както реализовано по сути противоположно да то есть в ланге у тебя там есть мей боксы Да КС сейчас напомню КС анонимные но треды именованные да и соответственно треды общается между собой как они называтся треды Нет не нет у тебя акторы но у тебя у тебя нету вот как в этих по сути у тебя нету вообще разделения никакого в плане того что есть кана Чере
по еще просто теряется обработка полностью Да вот какой-то там автомат написал по разбору и переходу по состоянием так и работает да Ну смотри ты можешь сделать так что если сообщение которое пришло Не обработано дальше зависит от того что ты написал в этом може
когда у тебя есть анонимные рутины они никак идентифицируются собой Там есть конечно под капотом но доступа никакого к нему нету да есть каналы которые обычные переменные которые обыч перемен используешь ты можеш из канала прочитать записать закрыть канал может нези вот су
Приходит какое-то время в начале когда го программист начинают писать они ничего не понимают потом начинают использовать это везде Абсолютно это очень типичная проблема через все через проходит ты начинаешь использовать рутины и каналы и конкуренты через где это не нужно потом постепенно это проходит ты начинаешь осваивать другие примитивы они с тех пор уже тоже появились они есть в наной библиотеке они есть в расширенной библиотеке какие-то более удобные например там не знаю теке давно есть Group которая позволяет тебе подождать несколько рутин завершения это ВС можно сделать руками на каналах но такие примитивы более конкретные более именованные более использования есть
шито Саши по большому сч ВС это сделать рути простое не одно значение пару значений ошибка
[музыка] бы такой контроль его видно это просто переменные которые ты продашь аксиомы каналов тоже довольно простые для понимания у меня лично э сложность особо никогда не вызывало Но с другой стороны перед этим я писал на тви У меня тоже каких-то сложностей не вызывал Да слка поэтому я не знаю возможно это что-то во мне вот из того что я вижу да то что все начинают использовать тивные канал где это не нужно нача
знаешь я сечас понял а ведь действительно учитывая развития Просто когда я про это постоянно слышал на тот момент не было вообще никакой экосистемы А сейчас же у тебя высокоуровневые фреймворки которые под капотом это делают Правильно ли я понимаю что в принципе если ты пишешь стандартный шный сервак классический совершенно роутинг обработчик и так далее Ты ещё вообще мало вероятно столкнётся с с прямой работой с каналами с рунами или я не Прат Вообще нигде нет то есть если ты пишешь htp серверу там микросервис или даже медиум сервис максервис ты не увидишь там рутин потому что все эти рутины внутри Насти самого сервера Да так видишь обычный синхронный код обработки Всё я понял да что-то у меня вот Эта мысль сразу мне не пришла в голову действительно То есть получается происходит очень прикольная вот эта вещь когда у тебя уровень разработки за счёт вот повышения уровня абстракции начинает падать у тебя появляется большое количество гошко которые могут просто писать по сути Ну типа сегодня ты на F API пишешь Завтра ты пишешь на го ну плюс-минус одинаковый Код да да да то есть синхронный код на го выглядит абсолютно Так же как синхронный код в питоне Да при этом асинхронный код выглядит не так там нет никакого Авета нет вот этих разноцветных функций Ты просто вызываешь функцию а под капотом она может что-то делать асинхронно но если у неё синхронный внешний API ты этого никогда не увидишь то есть API там не знаю Т htp запроса он выглядит Как абсолютно синхронный при этом много запросов может идти параллельно просто от тебя это ск и наверное это знаешь такая типичная история тоже про каждый язык когда начинает приходить всё больше и больше людей у тебя качество кода тоже начинает падать особенно тогда когда надо писать более низкоуровневые вещи и вот это знаешь такой налёт элитарности он все языки это проходит да когда у тебя на нём пишут только как бы профессионалы Да он постепенно постепенно снижается и Ого был интересный момент когда йк выступал на конференции как раз он рассказывал там про историю как он появился он сказал такую фразу которую вырвали из контекста и везде опубликовали и был по этому поводу там большой кипеж и сообщество и за пределами что он сказал что го это язык простой мы его сделали простым для того чтобы Google мог нанимать много разработчиков недавних студентов и так далее ну и соответственно там пошло как бы со всех сторон да то есть что вот ти ты нас назвал тупыми да да го язык для дебилов типа да то есть и внутри сообщества как-то это было не очень понятно но гор Она вырвана из контекста но смысл такой да что го это язык где простота ставится в углу да то есть в основу Вот кому-то это не нрави хочет писать Таха или кто-то хочет писать на свифте опять же да В некоторых случаях у тебя Выбора нет но язык как Swift как язык именно не как экосистема он противоположен го во многих смыслах он очень сложны добавляет добавляет фи а существенно меньше скоро да в этом плане он когда на джаву и на ноду смотришь у тебя глаза на лоб лезут потому что у тебя просто каждые полгода там ну то есть это всё там они вошли в этот сумасшедший цикл добавления фичи изменения которые никогда не остановится мы знаешь к чему подошли прямо плав как раз к истории про создание Наго сложных инструментов и выход его за рамки вот типа сервиса и так далее Потому что вот смотри я мо моё представление скажу Да я знаю что потому что в том числе сам писал да какие-нибудь Омки и так далее они основаны на большом количестве Мета программирования в любом языке их нельзя написать тупыми и деревянными ты можешь таким образом quil написать ты можешь ещё что-нибудь Но мку настоящую ты так не напишешь а когда мы говорим про какие-то бизнес приложения типичную историю Джанги когда у тебя прямо вот именно логика взаимодействие много базы И всего остального и сети там кстати как таковой это часто и нет И если есть это просто отдельная какая-то приблуда сбоку да то у меня есть некое предубеждение что го не очень хорошо под это подходит и естественно такие фреймворки делаются пытаются это всё писать делать и более того я не удивлюсь что некоторые люди прям стартуют проекты где реально много прям бизнес логики Вот что ты поэтому во-первых насколько действительно язык к этому готов не готов и сколько это сложности ж кода по прикладные приложения будут Нава или думае это не произойти это неэффективно не самый лучший язык для написания есть есть для это функ опять же комля помогает сист тиче очень помогает Но это не Да это немногие другие в кон конв
библиотеке вот поэтому и чисто огромное количество на Наверно я бы не стал но с другой Роны огромное количество не знаю обычных вебсайтов
страниц интернет-магазины легко пожалуйста Пит вот много там не знаю Она довольно простая поэтому видимо для этого го неплохо
в Go есть интроспекция рефлексия да то есть делать м на Go можно orm в принципе в Go ложится довольно неплохо потому что у тебя есть простые структуры которые ты Машь на строчке в базе данных Я кстати тоже как как сказать ответ на всё я это тоже сделал на го да то есть на го я писал когда-то она всё ещё есть всё ещё всё ещё где-то в списках есть оно неплохо ложится чего в го нету это конечно порождение кода НТА потому что ну в компиляторе язык не встраивается то есть у тебя есть бинарник в этом бинарник У тебя компилятора нет поэтому ждать код нельзя Ну как в Джаве генерацию просто делать аналога вала нет вот при этом Да при этом что тебя Ну типичное решение этой проблемы раньше это было как ты просто генерирует код во время компиляции да ты там делаешь какой-то препроцессор который условно тебе генерирует все нужные методы там по шаблона какого-то сейчас есть которые эту проблему отчасти решили ну там до некоторой степени вот механизмы интерфейсов интроспекции рефлексией и так далее Всё это было самого начало и всё это доступно комбинация этого плюс как я уже говорил лёгкого парсинга и всего этого позволяет Легко делать кодо генератора раньше все по сути там не знаю кастомные коллекции например делали на коды генератора работал Это не очень хорошо но это Потому что вот именно такая базовая проблема с базовыми типами и контейнерами Вот Но для каких-то м работало отлично Я считаю ну то есть например Давай чтобы прямо в конкретику берём типовую задачу когда у тебя есть описание каких-нибудь методов для выборки из базы Да ну берём в спринг Буте да когда ты просто описал их название и он тебе по названиям наге нери код ты его не видишь Ну можешь открыть посмотреть исходник и так далее Это сейчас есть это легко сделать или это потенциально есть я не знаю надо посмотреть есть вообще такие штуки наверное есть да вот другое дело то что сри ты говоришь что не смотреть в код в Go обычно сный код просто кладётся в репозитории рядышком для того чтобы любой поте для этого кода мог его использовать не тащат Ту же самую версию того же самого генератора да то есть по классике СГ тся резистори Коми Вот и Обычно он генерируется таким довольно читаемым для того чтобы Любой кто мог его посмотреть его почитал опять же формат ту помогает иска помогает поэтому Даже даже сложность генный код обычно не так уж сложно понять вот если ты говоришь что вот у меня есть мой тип это структура вот меня такие-то поля сри Мне нужные там АСС методы это легко сделать Да насколько это нужно Ну не знаю на Слушай а кстати это делается ведь отдельными командами потому что у тебя вот этот аннотации процессоры такие как в Джаве этого нету да Ну отчасти есть есть команда Go generate которая проходит по всем файлам ищет комментарии запускает нужные команды То есть если ты делаешь просто не Но именно потому что в репозитории весь код СГ уже лежит Всё будет работать а если ты хочешь генерить ты обычно запускаешь он проходит по всему дереву запускается нужно Ну немножко чуть больше геморрои накладывает Да так парочку команд надо запускать и Ну на практике это бост людей заворачивают в файл про но я так и подумал это частая ситуация тоже самое кстати скриптом тоже там такие истории бывают когда тебе пару команд надо запускать удивительно как-то вот так вот всё просто и понятно Да вот пого типа вот язык вот работает вот идём вперёд вот типа у нас всё хорошо и А у тебя там питон а там ан внедрили всю Эко систему переписали и переписываем там ну и каждый язык он Примерно вот такой когда у тебя такие фундаментальные сдвиги почему так происходит Просто потому что так классно то есть короче его спроектировали в тот мо Короче всё это делалось в тот момент когда уже такой опыт мировой как бы в себя вобрали когда можно придумать прям хорошо Ну я думаю это да части из-за того что люди которые это делали они уже на тот момент были состоявшиеся Инны опытом Им не хотелось делать ещё один супер навороченный язык от части их философия от части Я думаю связа с тем что просто дженерики ещ не обсудили Возможно когда мы их начнём сдать мы поймём что не всё так прекрасно Окей про сейчас поговорим я единственно тогда знаешь что спрашиваю вот знаешь есть всё равно такая история что чеку надоедает Да ну программисты они в этом плане кстати отличаются от честно говоря других направлений часто вот ну вроде Казалось бы ну вот язык вот Работаешь Всё хорошо Нет после 3-4 лет пяти там часто людей начинает ломать они что-то ещё ищут идут дальше Или ты считаешь что го относится к таким языкам на которых Вот люди остановились он вот в этом плане всех устраивает И типа А куда дальше-то что делать Ну раз Окей я понимаю ситуации по крайней мере но а в остальном Если честно я думаю это на 100% за от людей а нет языка то есть есть люди которые всю жизнь пишут на сильно ПСС я таких знаю есть люди которые Каждый каждый год меняет работу меняется так полностью включая язык Да я таких знаю я думаю что это языка зависит не я понимаю что нет языка Я скорее не будет ли го таким то есть стал ли он таким пристанищем когда Ну ты действительно Блин ну куда дальше-то потому что причины перехода на гос других языков понятны А вот перехода с го куда-то ещё Ну вот хочешь ты пойти в машин лнг Да делать машин на го в принципе можно но зачем скорее всего ты пойдёшь в питон или хочешь ты не знаю что-нибудь устраиваю можно встроить можно Ну зачем ты будешь или что-то такое да Или какие-то новые со или если ты захочешь ты сделать какой-то более современный аналог лу но не лу на чём ты будешь делать настраивать его как будешь
Ну ты наверно пойдёшь смотреть не знаю нази условно Да если То есть ни всё равно есть безусловно относительно универса как и любой большой состоящий язык Да он универсальный ты можеш на НМ делать всё как питон в этом смысле наверно наиболее универсальный это второй язык во всём но во всём второй вот я бы не сказал что он во всём второй да для стих сер отлично подходит для обработчиков отлично подходит для консольных утилит отлично подходит мобильный можно делать отлично подходит Ну нет наве Слушай они серьёзно Они пытались как бы вот пряжи есть серьёзно Да ну в смысле Наго реально можно писать Go приложение для iOS для Android это есть это поддерживается даже он опубликовал ради интереса приложения всто написанно на Go Нет я имею в виду там же там же прямо нужно чтобы у тебя редактор был вот экосистема цела Не ну это всё есть Ну вот смотри вот сколько игр Да на мобильных написано на ру А я просто Мобильный мир для меня он отде они есть есть там известные игры там там ещ что-то Да они написаны их там на Нури на и на ru M ну их сколько их 10 наверно ну вот нано столько же нано приложений написано мобильных на практике конечно да но оно более часто используется на Андроиде как сервис для Android приложени я име на самом телефоне где есть возможность такая чтобы кто-то массово писал что-то на IOS я не знаю но оно есть есть ф для доступных приложений Сколько приложений доп написано стати это вполне возможно станет гораздо более популярным они есть при этом есть разные варианты есть такие которые типа заменяют тебе типа Электрон то есть по сути ты логику приложения пишешь на Go UI у тебя жава скриптовый CSS HTML всё как мы любим Но при этом там htp сервер у тебя нено а Гош Да такое есть Есть Нати на библиотеки Как ни странно есть всякие биги и так далее сколько это в используется Ну да но не сравнимо с тем количеством людей которые пишет сер на понят Ну да если ты frontend хочешь писать тоже JS typescript короче есть есть огром есть Go JS это штука которая позволяет тебе писать на Go и транслировать JS ты можешь делать процен на Go есть официальная поддерживать стандартны поставки blain для webassembly можете программу на перегнать assem она будет отлично в браузере работать ЕС токо будет довольно большой есть проблема с We assem Как называется Да вот ЦС и Наго вообще никак не работает Пока что нет никакой возможности у него есть функционал в Go который вца просто не поддерживается но возможно с этим что-нибудь Будет сделано сколько людей использует вного Я думаю больше чем goer JS и десктопные приложения мобильное вести взятые но всё равно это относительно такая ниша но она используется Да она используется там не знаю для плагинов написания например Угу А слушай а вот для себя такие типа просто консольные улитки а Go вот большая же часть экосистемы она на питоне написана в разных дистрибутива линуса есть ли там движение в сторону перехода на го или нет Ну я я видел движение в обе стороны какие-то инструменты приписывают Наго Есть как минимум первое что приходит в голову есть такой инструмент ама которая позволяет тебе записывать скринкасты с терминалом довольно он реально крутой То есть он делает тебе как бы видео на самом деле это не видео это JavaScript код который показывает тебе эти команды плюс в том что он гораздо более маленький чем видео можно на паузу поставить можно текст скопировать Крутая штука для демонстрации консольных утилит написа на питоне переписан ного переписан обратно на питоне обратно на питон Да почему Потому что типа всё-таки писать такие консольные утилиты которые настолько плотно работат с минам ужасно на любом языке питание это мене ужасно на оказалось е более сло чем ужасно пря Да ну кста чтобы ты знал мы его используем очень много лет для вставок как раз курсов по гиту по баш на хекслет потому что это шикарный вообще инструмент Ну вот у них был публичный блокпост как они прописали туда и почему прописали обратно можно найти У меня кстати в этом я могу даже добавить у нас проект есть Ну во время обучения на хекслет там консольную надо типа утилиту писать а нам надо было тесты написать ну такие внешние которые это проверяют И когда я в это кинулся чтобы ну имитировать терминал запускать выполнять эту там команду смотреть результат я с ужасом обнаружил что не существует готовых решений позволяющих как бы таким образом проводить тестирование особенно там где интерактив Вот именно где надо отправить и принять единственный язык в котором я нашёл решение это как ни странно JavaScript просто кто-то нахерачился
в его тестовой экосистеме р спека есть такой инструмент который позволяет тестировать именно консоль утилиты и ты не поверишь мы его
заюзал нам надо было просто найти способ тестировать консольные утилиты представляешь забавно что внутри чейна Go есть много Ну понятно тестов есть тесты на команду Go то есть команда Go - это такой точка входа во весь Go на неё есть специальный синтаксис тестов который называется так называется по-моему Go Test не готе срит который позволяет те тестировать консольные Риты совершенно самобытный совершенно ОТК подходит только для чего-то этого или чего-то подобного совершенно внутренне прия этом есть люди которые его оттуда извлекли и некоторые проекты его использует для себя там вот язык Q его использует ещё кто-то но вот такой интересный мент как-то в го сообществе принято делать такие АК инструменты вот у есть там самое главное видишь в чём проблема то есть протестировать просто отправил в консоли получил вообще не проблем на любом языке а как только у тебя интерактив появляется вот тут тебя сразу Да я понимаю там да там да ну и паттерн мачин какие-то темплейты какие-то вещи которые изменяются какие-то там задержки и так далее дадада да там системное время что-нибудь ещё в этом духе там да вот скрипте это всё есть прикольно Хорошо давай тогда с тобой вернёмся немножко опять в Код Да вот э история про дженерики которая Я помню значит скажу тебе сразу Я помню этот твит Господи как над ним ржали значит чувак там сделал ку в которой он говорит работа дженериков в го это ещё на тот момент когда их не было он берёт ставит такой мультику сор причём там так классно снято что ты сначала не понимаешь Ты видел Да этот твит и он пишет одновременно там вос функций под все дипы Я видел это это действительно был такой способ стати была ещё более смешная картинка где кто-то обл кусок кода кото с дженериками и типа вот отлично работает Типа все таки смо в ЧМ прико чувак использовал для уловы скобочек как код С темпле на c+ но угловые скобочки были нид не обычные СШ и это был темплейт для автозамены Да вот ну в общем да до того Давай шаг назад в 1 самая первая версия даже самого первого релиза Мне кажется были интерфейсы Интерфейс - это механизм агирова програмирования когда у тебя есть разные типы которые реализуют общий интерфейс у них есть одинаковые методы и они станов взаимозаменяемыми то есть есть незнаю кани какой классический у нас там пример про животных Я не знаю да условно есть собачка которая говорит гав-гав и кошечка говорит мяу мяу знаешь я как преподаватель програми что Да не ну давай так мы сразу умным словом кинем эта штука позволяет реализовывать Саб тайпинг кто надо пошёл гуглить Профи подтипов
сатай кстати не Мне кажется это нета но я плохо знаю Ну смотри это полиморфизм подтипов Да просто теории есть полиморфизм параметрический есть подтипов что дженерики - это параметрический полиморфизм и его просто по-другому называют по сути одно и тоже просто раз Ну коче вкратце идея в том что если у тебя есть два типа у которых есть методы с одинаковой сигнатур который содержит одинаковой сигнатуры И после этого они стано заменяемыми там где принимается интерфейс то есть важно что вопервых эти тибо сго
чтобы просто совпадали сигнатуры то есть всё Например у чего есть метод STR который не принимает параметр и вращает строку реализует интерфейс stringer который принимается в многих местах библиотеки А то что ты говоришь это знаешь как называется это называется номинальная система типов Это как в тайп скрипте когда у тебя важно сигнатуры а не то что Ты конкретно реализует вот да это оно Ключевое то что действительно эти два ти не только не знают друг о друге они ничего не знают об интерфейсе интерфейс может быть вообще Объявлен в другом пакете то есть идея в год То что интерфейс определяется чаще всего он определяется в приёмнике по крайней мере в теории на практике Ты чаще всего определяешь его примерно так же просто на всякий случай что убедиться что ты это инфе случайно не сломал Да добавил метод и хоп У тебя в другом конце кода где-то перестала компилировать часто это нормаль иногда нет и поэтому ты хочешь Проверить прямо в этом же есть но Ключевое да то что эти типы про интерфейс дру не знают про интерфейс тоже не знают вот ВС это отлично работает на самом деле то есть проблема риков решена всё ничего не нужно делать за одним исключением оно работает по методам вго нету перегрузки методов нету перегрузки операторов соответственно то у чего нету методов с этим оно работать не будет у чего у нас в го нету методов у базовых типов в отли от тогоже неь 42 методов нед Да набор методов этого типа он пустой соотвественно единственный интерфейс который общий для не знаю И 3264 это пустой интерфейс пустой интерфейс используется довольно активно он раньше так и писался интерфейс дальше фигурные скобочки внутри ничего сейчас он пишется как это тоже самое озт что угода угодно дела
хорошо и часто полезно часто это проблема потому что НТА происходит это ещ менее эффективно Но это отдельная история зна сразу хочется сказать Просто прости у меня сразу в голове такие флешбеки хочется сказать А как же этот боксинг боксинг в Джаве там же решено всё да вот и вот мы собственно прямо к этому и подходим Да вот есть у нас такая проблема есть у нас интерфейсы которые не работают для базовых типов к чему это при к тому что делать какие-то кастомные коллекции можно да ты делаешь код генератор какой-то шаблон который заменяет и дальше шься в то что представ ты хочешь [музыка] сделать хоче сделать кото сох порядок элементов и дальше тебе нужно эти элементы для нужно вызвать опе меньше общем случае какой-то ти выть не можешь пото
каких-то тив ты хочешь вызвать функцию их ме Для каких ты хочешь вызвать общем ито вся конструкция с кодо генерации чере особо не работает ЕС даже Ладно сравнение меньше больше ещ но в каких-то случаях даже Сравни равно равно в каких-то случаях и дальше приходится делать какие-то Калище работало это не особо В итоге
вопрос весь тот вопрос который мы вот уже обсуждали несколько раз типа что люди недовольны по сути недовольны те кто кастомные коллекци типа данных точнее касто коллекции базовых типов Не использовал Если ты их в работе не используешь у тебя в язык притащили огромную штуку которая сложная большая и нафига она тебе нужна А если ты в работе используешь кастомные коллекции базовых типов то конечно Без этого никак Вот и что в итоге они притащили они притащили как ты говоришь метрический полиморфизм полиморфизм Да вот который позволяет тебе расширить понятие интерфейса добавив в него тип то есть у тебя есть обычный интерфейс но внутри он помимо набора методов может указывать Какие типы или какие базовые типы так сказать Ну это немножко сложно объяснить но по сути Если у тебя есть какой-то тип у него есть под ним может лежать какой-то другой тип то есть Ес есть тип структуры с твоими полями то там соответственно базовый тип будет структу ты можешь написать там ty My 32 это будет по сути это будет отдельный тип с другим именем нужно делать явную конвертацию но под ним базовый тип будет Вот и в этих новых интерфейсах Да который называется изначально про Пытался контрактами но в итоге они от этого отказались это была отдельная конструкция сечас просто интерфейс который тизи
Один из таких типов или Один из таких базовых типов или их там какое-то пересечение допустим вот и дальше такие интерфейсы которые которые добавлены типы данных а не только метода можно использовать для написания своих функций причём не для методов для методов их нет но для своих функций или для своих других типов которые порождаются если я чу сделать от любого Тито
все все строки все так далее можеть ме
сни даль ты дела
этот тип во время компиляции порождается скрыт тебя никакая когенерация не допускается ВС это у тебя получается эффективный код который работает с базовыми типами данных при этом того же вот этого жаско босин аксин они такие как нам делать можно так боксинг анбоксинг можно всё никак не делать то есть просто руками как раньше было или там есть какой-то третий подход Я уже забыл есть была программист а да да медленные программист это Т никак мы делаем всё руками делаем либо медленный код ВН тайме это Бонн и третий вариант как c+ по темпле когда мы геем огромное количество кода большая часть которого потом выбрасывает это делает ю компиляцию в итоге они сделали Я так понимаю по сути вариант третий с ком
Зая по Су иде в том что да для каждого типа код хотя есть неко оптимизация большая часть которого выкидывается потом приводит это к увеличению компиляции к увеличению прох Реутов на практике работает довольно неплохо скорость хорошая возможности для оптимизации есть привнесли огромную сложность Стоит ли оно того вопрос открыты в первую очередь зависит от того используешь э функцию А ну конечно может для создателя языка то и сложность Но блин Мы работаем в мире где у тебя все языки такие То есть это не является какой-то вот ты говоришь comparable и Ты объясняешь да А я про себя думаю но Любой человек который работал со статикой он это он это знает просто как бы впитал с молоком То есть у него нет никаких вопросов по поводу этой штуки и получается что даже наоборот лучше когда у тебя Мне кажется есть какое-то единообразие потому что это абсолютно стандартная вещь Она плюс-минус везде одинаковая И представля кстати сложность в тайп скрипте например по сравнению с тем же го ну там же просто капец там там такой уровень программирования на типах И кстати я вот тоже с ребятами на эту тему у нас был разговор там есть библиотека i18n Да И вот у тебя как бы у тебя полностью идёт вывод всех строк Ну это конечно фантастика Да ты там у тебя просто вот всё там само дополняется и так далее Но даже в небольшом проекте если у тебя хоть там сотни строк у меня реально он кшики виснет намертво потому что ну вот вот комбинаторика так работает у тебя слишком много разных вариантов комбинации типов поэтому есть проблема Ну это тут обратная сторона медали Но с другой стороны знаешь вот если на это смотреть действительно ещё дальше блин го к сожалению никогда Да такого не будет как вот какой-нибудь не знаю SQL вот такой вывод когда у тебя прям Вау Ну понимаешь да у тебя там проанализированы таблички у тебя такой комплит что просто конечно конечно Амин Да го - это язык Я тебе говорю главное что нужно понимать все признают включая авторов языка все сообщества что это самое сложное изменение в языке на данный момент При этом если ты посмотришь со строны но оно не такое чтобы супер сложное Да оно во всех языках есть да все это знают все умеют им пользоваться Да но это самое сложное самое крупное изменение в языке за всё это время Вот и при этом были пропол сделать его ещё сложнее ещё хуже например кто-то предлагал перегрузку операторов которые до Большой точ Ну по большому счёту тоже решит эту проблему просто другим образом Но это прямо Никто не хотел делать потому что на перегрузке опера слишком проблем при этом есть всё ещё такие шероховатости например всё ещё нету методов Казалось бы да есть функции и есть типы То есть ты можеь слать от но у него не может быть у не есть методы да то есть они тоже Ну они не явно используют но я не знаю Ну допустим все там штуки для модификации этих они долж быть функци Вот методов нет Казалось бы Почему Потому что есть большой с интерфейсами Интерфейс - это набор методов и тут получается тоже есть какой-то ме и вот как они пересекаются ж собой пока поэтому методов
конверт который принимает в себя т и который конвертирует получатель в т Если ты хочешь конвертировать не знаю в строку и в число пишешь два раза а ты часто сталкиваешься с необходимостью вот когда ты понимаешь блин ну здесь я пишу прямо код который можно было не писать нет такого вот именно для таких вещей нет я могу сказать что вот В нашей работе fdb дженерики офигенно зашли до того как их не было первая версия dv требовала резную версию чейна в которой были дженерики потому что Ну да докумен ориентированы ба данных у них там в основе табли строка документ документ - это массив
отсортированный там сохраняется в рядок элементов рядок элементов там важен Поэтому просто использовать я не мог соответственно нужен какой-то тип данных делать
еев э э я не так переживаю как Про проверку типа во время компиляции да компилятор - Это мой помощник и делает всё через ни через рефлексии вообще не хотел Слушай а знаешь я тебя хочу ещё спросить именно с точки зрения не понятно что го там у него есть очень важные преимущества важные штуки но есть ещё один маленький интересный момент знаешь с чем связанный Я тут с Колей Рыжиком же подкаст по кло же делал да Угу Угу И ты его не смотрел а Нет ещё Нет Посри но он классные вещи видишь я на камеру так сказать заставляю людей покс что они будут смотреть и потом будут выходить Ну да да я с Коли тоже знаком и будет интересно посмотреть да да да И там Слушай он очень классную штуку рассказал и я прямо почувствовал сейчас что это вот тот момент где вы с ним прямо пересекаете и вот Баттл такой ну не то что Баттл вот это вот обсуждение супе интересная Инженерная на тему типов смотри а он же пишет по сути обобщённую систему так же как и ты в которую могут приходить любые сущности то есть они делают фигню для медицинской системы у каждого клиента свой набор сущностей на базе которых они туда это закидывают их система создаёт нужные таблички структуры то есть очень похоже но только специфично под их стандарт и когда мы с ним обсуждали вообще вот эту типизацию он говорит Слушай кириллка Чем более у тебя обобщённая система Чем больше ты идёшь в эту сторону Как бы твоя система и их она в этом плане такая Он говорит Мы же не создаём внутри юзера или там договор У наск фигня которая говорит создать некую сущность ресурс кой же определяется там входными параметрами и это было его обоснование того что Ну когда мы говорим про системы типов далеко не всегда система типов является Вообще строгая Да такая а является плюсом потому что у тебя При таком дженерики тебе никакая система типов не поможет У тебя один хрен на вход приходит нечто документ который потом всё в ранта делается и Ведь у тебя вот именно эта часть Я не говорю про инфраструктурный код который там вокруг А вот эт часть Он ведь тоже такой же да у тебя то что кладётся в коллекции ну оно всегда зависит от конкретного Ну то есть это вообще вы не можете определить у вас там абсолютный дженерик не в смысле дженерик А в смысле общий Я вот в этом смысле Да Ну смотри если мы говорим про именно про db и про db Да там в основе лежит документ документы могут быть вложены Ничего непонятно но с другой стороны там есть там определённое количество типов там нельзя определить новый тип то есть типов много и там не знаю там Четыре типа для чисел и ещ что-то и есть всякие интересные кокей когда там сравниваются не знаю это отдельная история могу долго рассказывать В общем когда ты пытаешься реализовать аналог Мон совместимы с ним там огромное количество кейсов Как как сравнивается между собой пустой массив И Ну например да что идёт первым ладно это простой случай Да как сравниваться пустой массив И массив котором один единственный элемент который Ну тут уже ноно при этом определённое количество нельзя добавить взять и создать полностью новый катип Вот и в этом смысле дженерики в они такие же да То есть ты не можешь взять и создать свой новый тип вообще ниоткуда То есть он всё равно как бы строится на основе какого-то типа да там не знаю чаще всего на практи какая-то структура ты не будешь там делать огород ради того чтобы создать
которы поэто код он относительно ну его не очень супер приятно писать но при этом он довольно читаемый он понятный его просто использу вот вот в итоге все проверки в ран тайме у тебя по факту получаются Нет по факту все проверки в компиляторе поэтому Ключевая идея Ну я име виду если тебя может прийти любой документ Каким образом ты это сделаешь тебе же нужно будет он любой о любой документ но я знаю что у него все ключи приро Да у меня Компи как бы да это всё равно общая штука ключи строки та Он то же самое рассказывал он говорит у нас да конечно приходит документ в нём какой-нибудь Items есть и так далее А вот Внутри там уже может быть абсолютно всё что угодно и ты не можешь это просто определить типом потому что у тебя зависит всё от конкретного входного входных данных Ну опять же да именно если в mbb Там есть такая штука просто н схема Ты не поверишь то есть они сначала избавились структуры а потом решили добавить Да есть схема можно определить структуру на практике этим поч никто не пользуется если честно Ну в основном это структура данных коты записываешь она определяется приложени Просто если вернуться к к дженерика то в принципе их можно было бы сделать да то что я делаю Вот это все итера кстати которые даже ещ не коснулись тоже мы их собственно и сделали Бене первой версии Да на рефлекси напух интерфейсах болье количество делать компилятор не проверит и ничего хорошего не получится и код получается менее эффективны говори для меня это наверно вторая проблема Да есть Пока У нас не было ещ этапа такой жёсткой оптимизации но уже сейчас я знаю что код будет более эффективный чем простой код на интерфейса Хотя это тоже отдельный вопрос есть люди которые бьют дженерики в годе я бы сказал просто так одна из прин то что код для дженериков вообще говоря можеть оп В некоторых случаях он получается ровно такой же эффективности как с пустыми интерфейсами то есть неэффективная но на мой взгляд но стоит того потому что ком проверя за сч большой сложности увеличения времени компиляции Хотя о ВС ещ быстры и прочих минусов И вообще могли ться чем-то более полезным конечно но для меня
вот по поводу итераторов Угу пото что ты несколько раз упомянул и ты сказал так что это прямо совсем новая фича Да итераторы появились вот когда в последнем релизе 123 текущий релиз появились летом этого года наконец-то довезли до конца при этом поддержка библиотеки пока ещё не очень полная то есть в следующей версии Наверно через одну тоже будет расширение поддержки библиотеки идея такая что давным-давно когда год только появился самая первая версия давайте сделаем возможность сделать Range не только по слайм мам каналам как сейчас а по любым ка Тим данных простейшая идея что есть какой-то Тип который реализует какой-то интерфейс если он реализует интерфейс мы по нему делаем Рей и проблем была несколько во-первых Как прерываться как сделать брейк Как сделать ретурн как сделать что ничего не утекает но это была бы в теории первоя фича где происходит пересечение
функции языка да то есть for Range - это просто ключевые слова это способ делать цикл в языке и какого-то интерфейса который в самом языке вообще говоря не определён вот это то что их всегда останавливал То есть у тебя есть какой-то Ну грубо представ что у тебя есть какой-то стрингер да это как бы универсальный интерфейс он везде исходит гон Но это часть там библиотеки часть языка то есть именно в языке определённо один интерфейс рор Да и то он там строго говоря не должен быть как раз это одна из тех вещей которые поменяли в 1.0 до этого Это был просто интерфейс в пакете ос То есть это был ос эррор везде Знаешь тут что довольно вот Забавно вот Представь вся индустрия разработки книги рекомендации важность абстракций и так далее а и по сути это же вот сама вот эта концепция Да что ты отвязывается от имплементации соответственно у тебя абстракция как бы умеет итерироваться по штуке которые она не знает как устроена она как бы отвечает всем принципам Ну знаешь такого типа хорошего программирования Если мы с тобой всё это обсудим и довольно забавно как в го типа просто как будто всё забыли и вот это вот отрицание полное Даже те люди которые топят за это в других языках Да это был вопрос IQ Да и там говорили что вот важно всё делать явно важно чтобы всё было понятно итерация явно ты всегда знаешь когда ты итерируемый итерации по умолчанию есть у тебя вот Явный индекс где ты используешь не происходит никакого не никакой возможности те не кажется что вс-таки этоже немножко фанатизмом попахивает Ну отчасти Да я бы сказал что это это такая штука какже То есть в принципе было понятно что было бы неплохо понят Как сделать и в итоге их сделали но на основе
дженериков они мне кажется правильно решили делать хотя на самом де
был завязан на Дета реализации языка и было както так себе опять же проблема босин аксин в этом случае при так или иначе решать поэтому вс-таки сначала сдела В итоге получились на мой вз довольно простые Если
честно у тебя есть жери У тебя есть бы те для чтобы вать итератор
есть вот введени итераторов да было там три типа по которым можно было делать цикл и там да Ну три слайс канал и Map потом добавили Range по иту что звучит немножко странно но по большому счёту это просто типа такой сели как в питоне Да поту По числу не я имею в виду это как Ату вру там типа один то да Или как Range или X Range в питоне Да это просто типа для того чтобы написать дто ра но там точка запятой и меньше Да это просто маленький ческий сахар но он был важным шагом к следующему что теперь можно сделать по функции что тоже звучит довольно странно но по сути это тея есть функция котора на каж цикла вызывается и дальше если оет какое-то особое значение Э итерация вается вот на практике это с мо сде такую завернутые в итераторы которые под капотом делают тоже самое плюс эффективно реализуют брейк эффективно закрывают итератор когда итерация завершилась там огромное количество сложностей включение В общем по сути они ввели к рутину для того чтобы сделать ратор такой что Боже мой НТА зачем у вас там рутины есть ещ какие-то рутины зачем вам рутины там огромный там цикл статей какой-то рес как это сделать максимально эффективно В итоге Да в R go в чей завезли рутину для того чтобы эффективно сделать итератора хотя Казалось бы ерунда ерундой но зато у нас получились итераторы которые так же эффективные как код который делал всё это явно без утрат прекрасно то есть в итоге в год так или иначе стали завозить все самые такие фичи других языков Но эксепшн пока ещё нет слава Богу Ну знаешь мне кажется от вот того что уже сделали до эксепшн Да не рукой подать Не ну есть и другие варианты мне кажется знаешь в этом смысле любители там всяких монат вот этих вот лево права и какого-то пайплайн который управляет этим Да а не Кеч 100% пропол в эту сторону Да наверное идут что у тебя есть некий процесс который Просто этим может управлять потоком но без необходимости в тройке оборачивать такое есть были про позы там сделать ка аналог тув например или просто на самом деле теперь можно сделать То есть те пожалуйста ты можеш делать Просто это будет выглядеть поддерживать не будет но почему нет кстати из-за этого я периодически вижу в Твиттере чуваки которые любят показывать значит Гош код а рядом код на с паттерн манго вот и кстати мне тоже об этом думал в принципе все такие языки они так или иначе в какое-то подобие паттерн мат двигаются да либо в самих свичах либо пря добавляют кую команду а что в этом плане в го происходит то есть вообще ничего То есть как бы никакого движения именно в языке нету но пропол есть Я честно говоря вот если думать о том как бы что они будут делать дальше если такие большие фичи языка я бы сказал Да что это где-то высоко просто не очень понятно как будет выглядеть Гош най паттер матчинг если честно но посмотрим Угу Ну потому что здесь как бы такой думаешь В принципе можно было на комбинировать он же паттер матчи как-то в принципе кстати вот штука понятная мягко говоря я вот не помню чтобы эти У меня проблемы были это наоборот всегда такой типа очень понятная вещь Ну вообще говоря Да я думаю что там чисто теоретически просто расширить существующий ске Ну да будет выглядеть так более-менее надо Поня Хотя тоже знаешь всё равно новый Инструмент там можно нахрачи также знаешь свечи и тоже вот это цепочку то всё-таки цепочка - это больше про людей чем про в общем
опять же дофига чего сделали какие-то непонятные Функции какие-то [ __ ] какие-то там ши итераторы какие-то рутины вообще в ранта могли бы делом заняться да чем-то более полезным мне как человек который пишет опять же у меня есть документ кастомный тип данных и мне по не нужно роваться просто мана небесна Я теперь могу огромное количество кода где мы делаем итерацию по ключам по значениям в глубину в ширину и так далее Оно просто уло сделал на на наша версия 2 пока делается закрытом рери Скоро скоро я недавно
сделал При этом они ещ типа безопас работают также эффектив фантастика те кто использует просто не нуж
Конечно Да не очень походит Угу А слушай есть какая-то причина по которой ты бы мог такой сказать что не что-то го Всё я пошёл в другое место давай вот просто сравнение наверное самое адекватное с растом Ну ра скать интересно понимаю потому что я писал совершенно другом Расте чем Все сейчас пишут полу он тоже пошл шй Путь Да я раз раз изучал тогда когда там был гц и много типов указателей Вот и Это совершенно другой язык чем сейчас уло То есть это были там ну времена до 1 0 давно и Ну ещё до того как Бор чека поставили голо угла Вот поэтому я слабо себе представляю что там в современном Расте но я думаю что то что меня действительно Может на меня повлиять это если как-то Google решит го превратить в то во что люди думают он уже его превращает да то что придут какие-то менеджеры спи по количеству фич релизе и начнут язык он будет всё сложнее всё всё более навороченный и так далее и тому подобное Ну не знаю Назик пойду какой-нибудь условно А ты видишь причины Ну опять же хочется про расказать по которым например имеет смысл выбирать раз вместо го не Ну смотри ну го - это язык с ран тайм с габо элект Да все места где те ранта ч подходит сразу проблема опять же как мы говорили
[музыка]
есть такие
проекты Работа была
делали если бы были бы люди которые также хорошо знают как команда которая бы в Талас Да которая хорошо знает го Вот ещё сказал про тайго Да без гарбич коллектора Правильно я понимаю что учитывая что там нет никаких специальных механизмов для Ну управления памятью как в расти по сути это просто си с чуть-чуть изменённым синтаксисом смотри интересный момент что го в нём есть ц Да но он далеко не такой как в Джаве то есть Java существенно другой язык за счёт того что там используется везде ссылки указателя и по сути Ну указатели в таком явном виде нету но везде ссылки то есть всё передаётся по ссылке в Go всё передаётся по значению Вот и просто количество мусора которое гнется на гораздо меньше плюс в точении есть механизм ese анализ как одна из фаз калькуляторе е ко может доказать что какое-то значение не утекает на кучу оно его лоцируется на стаки вот Тани всем этим пользуется и всё что можно оно всё лоцируется на стеке и поэтому Летов не нужен Просто некоторые вещи он те Ну опять же не супе актуально Но раньше по сути он Лили не ком это был не си такой довольно Годо более такой особенно он в итоге не даёт те никакого никого но просто некоторые веи если что утекают
вся саде то есть ребята которые решили пописать на таких штуках у них есть вот такая альтернатива Да ну яю чтот его компания которая делает токе нотификации Как странно Ну видимо я опять же не знаю супер подробности но вроде как история такая что у них ВС было написано на им текино
и они вот почему-то решили сделать это не знаю но мы как сообщество толь наслаждаемся результатами ра Окей У меня те пря буквально последний вопрос по поводу сообщества наверное да и может быть немножко найма программистов Если у тебя есть это вообще что оно из себя представляет насколько вот не знаю как оно чем жит об
уст тоси простой понятный удобный процесс развития языка и участия в этом добре являетесь ли вообще целом или это много маленьких независимых штучек есть сообщество разработки языка которое именно вокруг разработки языка который участвует если не в написании прямо непосредственно обсуждении про
[музыка] туда Вы если можно чуть больше обращайте внимания на разработку потому что все эти вещи обсуждаются годами реально и если вы в этом участвуете и хотите скать своё а недовольство чем-то это лучше сделать гораздо гораздо раньше чем когда фичи уже зарезали а пом О боже мой джерики не нужны было раньше это говорить если говорить Это с аргументами они это принимают Да тот же самый функционал про обработке ошибок от катили её потому что ну не работал в особом сообществе вот а это на хабе всё происходит Да обсуждение сечас ВС на дискуссия разработка ВС е у них в этой системе Как называется при этом есть импорт из То есть я вот недавно отправил про Я просто написа для понимаю Просто я жи
обсуждение комментария идёт внутри Гета но код ты всё ещё шь на Он всё ещё автоматическим проце вге то есть изучать гери прям целиком не обязательно главное понять что после того как ты нажал и ответил на комментарии нужно нажать кнопочку subm она отдельно почему-то Вот Но это сообщество О не то чтобы супер большое Хотя мне говорю Мне казалось бы важным чтобы больше людей участвовало если хотя бы разработке именно Кода да хотя бы пров ини что там происходит Вот и есть конечно огромное сообщество пользователей по всему миру проводятся этапы конференции записываются Подкасты это всё есть вот насколько оно едино Ну так довольно едино было по крайней мере сообщество российское было довольно неплохо интегрировано хотя бы не знаю конференция у нас была горн Да она называлась гофен по сути потому что К нам приехал основатель американского гофер на перфе и говорит вы отличные Ребята давайте да Используйте пожалуйста вот сейчас понятно Росси немножко изолирована от этого всего но сообщество по всему миру есть я постепенно буду поднимать сообщество надеюсь Ну да если будете в Армении обязательно присоединяйтесь Если вы гофер к сообществу и участвуйте в этом добре Лёш тебе большое спасибо что приза СБО
что пова что знаешь так часто бывает когда делаешь подкаст у тебя приходят как правило не люди которые интересуются технологией а именно специалисты в ней они чаще всего Потому что им хочется как бы поучаствовать в этой движухи Да так что ребят напишите что вы думаете о тех вещах которые мы разобрали согласны Вы или не согласны с тем Куда движется го вот и что вы вообщем да что вы вообще во всём этом думаете мне доставляет истинное удовольствие со стороны наблюдать за этими срача и за этим за этой движу потому что ну надо чтобы Как у всех было да У всех же есть проблемы Ну вот и у гошко есть проблемы Вот и не забудьте подписаться на подкаст в ютубера организованное программирование в телеграме где я регулярно рассказываю про эффективную
разработку E