Vladislav
Если ссылок на этот кусок памяти нет, то почему его просто не удалить?
саша
почему бы и нет?
GC может очень и очень замедлиться
Cat
GC может очень и очень замедлиться
как будто ты не знаешь, что деструкторы можно вызвать по выходу из скоупа
Cat
и не использовать для этого GC
Cat
только в случае dangling ptr
Cat
точнее вру, какие dangling ptrs, чистые reference counters же
саша
как будто ты не знаешь, что деструкторы можно вызвать по выходу из скоупа
Но тогда нужно будет явно помечать переменные для того, чтобы они умирали после выхода из скоупа. По сравнению с дефером это не даёт никаких преимуществ. RAII в языках с GC это такое себе
Cat
Но зачем дропать ресурс, если он должен пережить скоуп?
если должен пережить, то это можно определить на этапе компиляции
Cat
для него не вставлять smth.drop()
саша
если должен пережить, то это можно определить на этапе компиляции
Очень частно нельзя. В итоге это принесёт только путаницу
Cat
ну ты же знаешь, на что я намекаю зочем развивать бессмысленный диалог
саша
ну ты же знаешь, на что я намекаю зочем развивать бессмысленный диалог
Нет. Go - язык с GC, RAII тут больше вреда принесёт, чем пользы. Если хочется RAII, то нужно отказаться от GC, если хочется GC, то придётся отказаться от RAII.
Cat
ок
Сергей
Всем привет вопрос, здесь можно размещать ссылки на вакансии для go разработчиков?
Alexander
Всем привет вопрос, здесь можно размещать ссылки на вакансии для go разработчиков?
говорят в нормальных чатах в описании куча всего интересного. врут наверное
SobolSB
SobolSB
Хай, гайз) Нашел в офф. репозитории языка Golang непонятную конструкцию, не могу врубиться... Вот что за “expr” внутри struct {} , который внутри type ()
🏁Александр
интерфейс O-o
Cat
вбросили ссылку в питон чат?
Tigran
как будто что-то плохое
SobolSB
вбросили ссылку в питон чат?
Да, хах, я прост не умею искать чатики. Меня сюда переслали.
Maksim (Ellrion)
Хай, гайз) Нашел в офф. репозитории языка Golang непонятную конструкцию, не могу врубиться... Вот что за “expr” внутри struct {} , который внутри type ()
там ниже видимо есть expr struct {...} которая реализует Expr интерфейс (или альясит его) а это встраивание (гугли golang embedding)
SobolSB
там ниже видимо есть expr struct {...} которая реализует Expr интерфейс (или альясит его) а это встраивание (гугли golang embedding)
Да!) Воистину это так) А может ли быть такое в блоке кода: Ну например... func main () { /* .......чо то мучу здесь или до функции... а потом бац и идентификатор просто, примерно как в примере на фото выше*/ ThisChatisBest }
🏁Александр
нене, только внутри структур
🏁Александр
нельзя внутри функции 🙂
Maksim (Ellrion)
ну как бы "встраивание" в функции это тупо вызов другой функции)
Maksim (Ellrion)
иначе непонятно что могла бы делать такая конструкция
SobolSB
нет
Понял. Меня прост удивило , что идентификатор просто так без всего... то есть, как тогда писать парсер/грамматику для таких конструкций, когда может любая строчка где угодно оказаться.. Но ща я понял, что только внутри struct )
Maksim (Ellrion)
на том же скрине вон Node интерфейс встроен в Expr интерфейс
SobolSB
и внутри интерфейсов другие интерфейсы. и интерфейсы внутри struct
Не, ну главное чтоб в блоке кода такого не могло быть :)
🏁Александр
это как тип
🏁Александр
можно в аргументы функциях использовать
SobolSB
Я прост по спецификации пишу парсер/лексический анализатор для Go. Для Go оч подробная спецификация на офф.сайте, я по ней накатал грамматику и все примеры, которые у меня есть оч круто парсятся. Но вот возникла проблема... точнее я обнаружил, что у меня в блоке кода можно любой идентификатор написать прост так ))) Происходит это вот как... (Ща будет последовательность свертки нетерминалов моей грамматики, но это чисто один в один из спецификации): идентификатор -> (может быть свернут к ) operandName -> operand -> primaryExpr -> unaryExpr -> expression -> statement Ну а statement это все то что может быть внутри блока кода функции. (По типу func main { statement }
SobolSB
Вот, то есть, формально, исходя из спецификации вполне возможно нечто следующее : func main { yoyoyo }
SobolSB
Не могу понять, как они в реальном компиляторе такое безобразие исключают. Потому что понятное дело такое никак не возможно в реальном коде программы.
SobolSB
В общем, понимаю что проблема моя не связана напрямую с языком Go , а с теорией формальных языков и грамматик. Прост хотел убедиться, что такая ситуация действительно невозможна и проблема непосредственно с грамматикой моей.
🏁Александр
O_o
🏁Александр
а зачем можно спросить?
SobolSB
Курсач :)
🏁Александр
вот же пережигают энергию не в то русло
SobolSB
Хах, может быть :) Но когда, например, для какого-нибудь супер-родного и изученного Си пишешь парсер (ну или транслятор) узнаешь такие конструкции... Что хах кажется , будто в обще не умеешь программировать на нём )
SobolSB
Можешь попушествовать (в смысле понажимать на названия нетерминалов) и в итоге будет Operand -> operandname-> идентификатор
SobolSB
Лень подробно было писать/скринить, ну попозже мальца могу прям четко наскринить эту ветку в спецификации
SobolSB
SobolSB
SobolSB
SobolSB
SobolSB
SobolSB
Вот, то есть, либо я что-то путаю, то ли... Из идентификатора без каких либо ограничений можно свернуться к Statement
Vladislav
Pawel
Мучайся или учи реакт 😈
а чем тебя напрягает такой вариант? x := Div( H1A(Attrs{ Width: "10px", Colspan: "12", }), H2(), Div( Comment("some comment here"), P(Text("text inside P"),), Text("some text here"), Li(), Ul( Comment("and some comment here"), ), ), Text("and here"), ) <div><h1 width="10px" colspan="12"></h1><h2></h2><div><!--some comment here--><p>text inside P</p>some text here<li></li><ul><!--and some comment here--></ul></div>and here</div> И реакт учить не надо ;)
Pawel
Эмммм... Всем? :)
1. Это лучше чем jsx, поскольку оно нормально композится 2. не надо в js, достаточно голанга 3. static html виден поисковикам в отличие от spa ... profit!
Pawel
Что такое флаттер и почему плохо? Целый SO на этом простроен же
Pawel
на razor
Pawel
Впрочем html templates из стандартной либы голанга - это действительно ОЧЕНЬ плохо, тут я согласен. На столько плохо, что я не могу представить как им вообще пользоваться и не плеваться матюками
Pawel
Он просто другой
Наверное для людей из мира похапэ это норм, но меня после попыток сделать простейший лэйаут с шапкой, подвалом и десятком наследованных кусков от этого аж прям трясёт.
heavycharged
kås
Я знаю. Мне интересен кейс проблемный
heavycharged
кейс проблемный, если есть асинхронные компоненты, в которые нода гугла-бота не умеет (по крайней мере, не умела). ну и яндекс до недавнего времени не умел вообще spa.
Pawel
А можно детальнее почему у тебя спа не индексировался? Ты точно его готовить умеешь?
Мне так умные люди сказали в 17 году :) я сам хз как там работают гуглоботы, но умным людям пока что верю
Aleksey
Причём я сайт с джанги на голанг перетаскивал со стандартным темплэйтом, в спокойном темпе за неделю
Да и накиданое валяется с twig перенос недоделаный (twig это от того же разработчика jinja), просто проще большинство сайтов на hugo сделать, сайты чаще статичны
Aleksey
А hugo это штатный с небольшим дополнением функциями
Pawel
Да и накиданое валяется с twig перенос недоделаный (twig это от того же разработчика jinja), просто проще большинство сайтов на hugo сделать, сайты чаще статичны
спсб за ссыль, гляну. У меня крайне негативное отношение к шаблонным движкам. Чесно говоря мне нравится как это сделано в хаскиле - написал код на хаскиле и тупо отрендерил его в хтмл. Это то, что я сейчас пытаюсь реализовать на Го
kås
SSR наврядли только для сео нужен