Size: a a a

2020 June 18

DD

Den D in Go-go!
Evgeny
Только есть такая проблема, что в случае php у тебя есть фреймворки, которые тебе диктуют определённую структуру приложения, правила структурирования кода, рецепты всякие и т.п.
В го такого нет и тебе придётся дизайнить и выстраивать свой монолит самостоятельно. И чтобы он не превратился в клубок экскрементарного кода, нужны соответствующие навыки и опыт. Поэтому "порог для входа" для написания сложных приложений на го будет повыше, чем в php, где ты можешь просто копипастить куски кода из примеров в нужные места.
Потому и спрашиваю про архитектуру приложения на go. Если свои решения или используются подходы из других языков.
источник

ЛА

Локоть Анатолий... in Go-go!
Evgeny
Это не означает, что это нужно использовать повсеместно. Каждому инструменту - своё применение. И рефлексии следует избегать настолько, насколько это вообще возможно.
Все стоит использовать когда нужно. Не только рефлексию.
Если говорить за производительность, то можно все писать на cgo и аллоцировать память, в которую не ходит gc, все будет работать очень быстро.
Нужно ли писать весь код на с? Нет.
Везде баланс нужен.
источник

с

сонная википедия... in Go-go!
Daniel Podolsky
ну, кстати, GoR нам был бы очень кстати. и, возможно, на генериках его даже можно запилить
beego2
источник

ВС

Владимир Столяров... in Go-go!
интересно какие еще антипаттерны они туда вкрутят
источник

с

сонная википедия... in Go-go!
Владимир Столяров
на этом прототипе будет скобок зашкаливающее количество
или приватных интерфейсов представляющих собой сумму констрейтов
источник

AZ

Artem Zheltak in Go-go!
Локоть Анатолий
Все стоит использовать когда нужно. Не только рефлексию.
Если говорить за производительность, то можно все писать на cgo и аллоцировать память, в которую не ходит gc, все будет работать очень быстро.
Нужно ли писать весь код на с? Нет.
Везде баланс нужен.
Вызовы си го вроде считаются системными, не будет ли из-за этого все тормозить на вызовах, но работать быстро внутри?
источник

с

сонная википедия... in Go-go!
Локоть Анатолий
Все стоит использовать когда нужно. Не только рефлексию.
Если говорить за производительность, то можно все писать на cgo и аллоцировать память, в которую не ходит gc, все будет работать очень быстро.
Нужно ли писать весь код на с? Нет.
Везде баланс нужен.
вовсе необязательно нужен C
источник

00

0JLQuCDQotGP0L0= 0x3... in Go-go!
Локоть Анатолий
Все стоит использовать когда нужно. Не только рефлексию.
Если говорить за производительность, то можно все писать на cgo и аллоцировать память, в которую не ходит gc, все будет работать очень быстро.
Нужно ли писать весь код на с? Нет.
Везде баланс нужен.
На си можно и на котлине писать
источник

с

сонная википедия... in Go-go!
0JLQuCDQotGP0L0= 0x3d4f22
На си можно и на котлине писать
для котлина нужна жвм или экспериментальная грааль
источник

00

0JLQuCDQotGP0L0= 0x3... in Go-go!
сонная википедия
для котлина нужна жвм или экспериментальная грааль
llvm
источник

ЛА

Локоть Анатолий... in Go-go!
Artem Zheltak
Вызовы си го вроде считаются системными, не будет ли из-за этого все тормозить на вызовах, но работать быстро внутри?
Есть пример проекта и доклада где люди специально аллоцировали много данных в с

https://youtu.be/bdx8W_gxS3E
источник

IK

Ilya Kaznacheev in Go-go!
Превратили го в непонятно что
источник

IK

Ilya Kaznacheev in Go-go!
Куда идти теперь?
источник

с

сонная википедия... in Go-go!
я не думаю что native актуально сравнивать
источник

IK

Ilya Kaznacheev in Go-go!
В зиг?
источник

с

сонная википедия... in Go-go!
Ilya Kaznacheev
В зиг?
в зиге ручное выделение памяти
источник

DD

Den D in Go-go!
Локоть Анатолий
В пхп нет строгой типизации, поэтому и дженерики не нужны.
Теперь есть типизация свойств в классе, параметров и возвращаемых значений методов. В php дженерики ждут не меньше, чем в go. Мне просто не понятно какие паттерны нельзя реализовать без дженериков
источник

E

Evgeny in Go-go!
Den D
> Богатая доменная модель подразумевает, что бизнес-логика заключена в классах и их поведении/отношениях. Анемичная подразумевает, что бизнес-логика пишется процедурно (в сервисах или даже plain-функциях), а классы - это просто структуры для передачи данных

В go же аналог класса - это структура. Что мешает засунуть бизнес логику в структуру?

> Соответственно, в го, без дженериков и прочего мета-программирования очень сложно делать всякие хитрые паттерны, основанные на отношениях объектов.

Каккие паттерны, например? В php же тоже нет дженериков, но паттерны вполне себе реализуемы.

> А в php ты изи можешь описать, скажем, десять классов подтипа "заказ" и написать универсальную функцию, которая единообразно обрабатывает любой  класс из вышеперечисленных.

Что мешает использовать композицию вместо наследования? Я где-то читал (возможно ошибаюсь) что создатели go и решили не включать в язык наследование потому, что можно использовать композицию
> В go же аналог класса - это структура. Что мешает засунуть бизнес логику в структуру?
Ничего, кроме того, что ты не сможешь нормально написать достаточно универсальный код для обработки _разных_, но схожих структур. Например, у тебя есть список пользователей и список клиентов (наборы полей разные, но в чём-то схожи). Ты вряд ли сможешь обрабатывать их одинаково, без копипаста. С теми же дженериками смог бы. А в php ты можешь перечислить несколько типов через | или вообще обращаться к полям, не зная типа (что есть антипаттерн, но тем не менее).
Да, на это есть хаки, но я говорю о принципиальных вещах.

>  Какие паттерны, например? В php же тоже нет дженериков, но паттерны вполне себе реализуемы.
Читай https://habr.com/ru/company/jugru/blog/503868/, раздел про агрегаты.

> Что мешает использовать композицию вместо наследования?
Ни та, ни другая в одиночку всех проблем не решает.
источник

с

сонная википедия... in Go-go!
и сплошной comptime
источник

IK

Ilya Kaznacheev in Go-go!
сонная википедия
в зиге ручное выделение памяти
Да хоть ножное
источник