Size: a a a

2020 June 18

ЛА

Локоть Анатолий... in Go-go!
Anton Kucherov
Ну мне хотелось что-нибудь компилируемое. А еще хотелось как можно меньше разнообразия. Не люблю когда начинают с пустого в порожнее переливать, как сделать ту или иную вещь, просто потому что язык позволяет сделать это 10ю разными способами. Ну и модель PHP, когда он умирает на каждый запрос для себя лично я объявил ограничивающей меня в развитии. Но это все субъективное очень...
По поводу умирания на каждый запрос, есть нода.жс, которая не умирает, но сильно проигрывает го в производительности.
Тут плюс го ещё в том, что стандартная либа идеально сбалансирована по функционалу и простоте/скорости
источник

DD

Den D in Go-go!
Anton Kucherov
Как хотите так и делайте. Главное не тащить подходы из других технологий As-Is без адаптации к особенностям Go. В остальном дикий запад.
Но вы же сами написали "перерос "Framework Driven Development" и начал понимать концепции которые стоят за всеми этими подходами". Значит вы используете эти концепции в go. Какие именно?
источник

E

Evgeny in Go-go!
Den D
Всем привет!
Я php разработчик. Хочу изучить go применительно к веб разработке и решения задач для которых php не хватает.
В связи с этим есть ряд вопросов. Заранее благодарен за ответы.
Какие приложения пишутся на go?
Какие плюсы языка по сравнению с php?
Просьба привести пример многопоточного приложения, которое можно написать, чтобы погрузиться в язык (описание задачи и ссылку на репозиторий если есть)?
Какая архитектура обычно используется в go приложениях (желательно ссылку на репозиторий если есть)?
Гугли статьи badoo на хабре на этот счёт. Они используют и go, и php одновременно и им нравится.
В двух словах: на php проще писать бизнес-логику за счёт всякой магии, фреймворков и так далее, но это не очень надёжно и производительно. На го писать несколько медленнее и бизнес-логика получается многословнее, зато выносить какие-то узкие места, писать системные штуки или там особо важные сервисы получается очень хорошо.
источник

E

Evgeny in Go-go!
Но лично я бизнес-логику на го пишу, выходит симпатично, жаль, к богатой доменной модели не получится прийти с такой бедной системой типов. Приходится анемичную делать.
источник

ЛА

Локоть Анатолий... in Go-go!
Есть вот такая вещь ещё, это парни на го сделали парсер пхп, и по сути тоже можно иметь оба языка

https://m.habr.com/ru/post/495224/
источник

DP

Daniel Podolsky in Go-go!
Локоть Анатолий
По поводу умирания на каждый запрос, есть нода.жс, которая не умирает, но сильно проигрывает го в производительности.
Тут плюс го ещё в том, что стандартная либа идеально сбалансирована по функционалу и простоте/скорости
я видал нодеров, которые умели сделать так, чтобы оно не проигрывало сильно, и даже вообще не проигрывало

но, блин, это были реально монстры, а на go этот уровень базовый, доступен мидлам
источник

ЛА

Локоть Анатолий... in Go-go!
Daniel Podolsky
я видал нодеров, которые умели сделать так, чтобы оно не проигрывало сильно, и даже вообще не проигрывало

но, блин, это были реально монстры, а на go этот уровень базовый, доступен мидлам
Я сравнил эндпоинты, возвращающие простенький жсон на экспрессе и стандартной либе го.
источник

AK

Anton Kucherov in Go-go!
Den D
Но вы же сами написали "перерос "Framework Driven Development" и начал понимать концепции которые стоят за всеми этими подходами". Значит вы используете эти концепции в go. Какие именно?
It depends. Например я ни чего не имею против DI в Go. Но есть и противоположное мнение. Я не против Hexagonal Architecture, особенно там где она необходима. Но опять же в мире Go это очень холиварные темы. Что касается шаблонов проектирования, многие из них адаптированны под Go и вполне себе используются.
источник

F

Forgetable in Go-go!
Экспресс говно :(
источник

МД

Максим Дубинин... in Go-go!
Anton Kucherov
Ну мне хотелось что-нибудь компилируемое. А еще хотелось как можно меньше разнообразия. Не люблю когда начинают с пустого в порожнее переливать, как сделать ту или иную вещь, просто потому что язык позволяет сделать это 10ю разными способами. Ну и модель PHP, когда он умирает на каждый запрос для себя лично я объявил ограничивающей меня в развитии. Но это все субъективное очень...
В целом согласен, правда пых тож развивается и мне нравится в какую сторону, тот же 7.4 умеет в прелоад, а так же читал, что вроде на базе этого мона замутить и не умирающий каждый запрос пых,roadmap помоему называется на go😁 написанный , но там уже  не nginx+php-fpm, а непосредственно к самому php обращается. Но для меня в первую очередь причина - го всё таки на хайпе, люди для нагруженных приложений так просто плохую штуку не будут юзать😁 гарбаж коллектором тока пугают
источник

AK

Anton Kucherov in Go-go!
Локоть Анатолий
По поводу умирания на каждый запрос, есть нода.жс, которая не умирает, но сильно проигрывает го в производительности.
Тут плюс го ещё в том, что стандартная либа идеально сбалансирована по функционалу и простоте/скорости
Спасибо, но нет. Я на JS пишу с 2002 и я его одновременно люблю и ненавижу. Но ненавижу больше. 😂
источник

E

Evgeny in Go-go!
Локоть Анатолий
По поводу умирания на каждый запрос, есть нода.жс, которая не умирает, но сильно проигрывает го в производительности.
Тут плюс го ещё в том, что стандартная либа идеально сбалансирована по функционалу и простоте/скорости
Не особенно нода и проигрывает, если писать нормально. Точнее, не так, единственная область, где она однозначно проигрывает - это многопоточность, но такое, чтобы самому писать какие-то многопоточные алгоритмы,  встречается в работе довольно редко. А в дроблении чисел и посылании туда-сюда json'чиков они действуют практически одинаково. Го более удачен из коробки, за счёт типизации, но у ноды есть typescript, которые побогаче, как язык.
Так что тут исключительно вкусовщина.
На лично мой вкус, тайпскрипт прикольная штука, но джаваскриптовая экосистема - это такой ад, что лучше никогда этого не видеть и не трогать.
источник

DD

Den D in Go-go!
Evgeny
Но лично я бизнес-логику на го пишу, выходит симпатично, жаль, к богатой доменной модели не получится прийти с такой бедной системой типов. Приходится анемичную делать.
А как бедная система типов относится к богатой и бедной доменной модели? Какие типы имеются ввиду? Класс как тип или примитивы?
источник

DP

Daniel Podolsky in Go-go!
Den D
> вам академический пример, или из реальной жизни?

вам академический пример, или из реальной жизни?

> вопрос не ясен

Интересует пример типового приложения. Структура проекта, слои приложения, шаблоны проектирования которые используются в go.
Например в php, java, с# используется гексогональня архитектура, шаблоны проектирования типа Стратегия, Адаптер, Декоратор.
Используется ли все это в go?
если честно, устоявшейся практики - пока? - нет

словосочетание “гексагональная архитектура” не используется при этом :)

вообще, go язык небогатый, негибкий и невыразительный. это достоинства, если что

но некоторые концепции на go просто очень трудно использовать - средств не хватает
источник

DD

Den D in Go-go!
Anton Kucherov
It depends. Например я ни чего не имею против DI в Go. Но есть и противоположное мнение. Я не против Hexagonal Architecture, особенно там где она необходима. Но опять же в мире Go это очень холиварные темы. Что касается шаблонов проектирования, многие из них адаптированны под Go и вполне себе используются.
Большие монолиты на go пишутся?
источник

ЛА

Локоть Анатолий... in Go-go!
Anton Kucherov
Спасибо, но нет. Я на JS пишу с 2002 и я его одновременно люблю и ненавижу. Но ненавижу больше. 😂
Я вам ноду не рекомендовал, наоборот констатировал, что она хуже.

С 2002 изменилось грубо говоря, все. Сам серверный язык появился в 2009, и чуть не каждый год выходили доп стандарты, которые сделали современный es6 ничего общего уже не имеющим с тем браузерным языком, каким он зародился
источник

DP

Daniel Podolsky in Go-go!
Den D
Большие монолиты на go пишутся?
можно, и даже есть уникальная вещь (internal пакеты), которая позволяет писать монолиты лучше, чем на других языках
источник

E

Evgeny in Go-go!
Den D
А как бедная система типов относится к богатой и бедной доменной модели? Какие типы имеются ввиду? Класс как тип или примитивы?
Богатая доменная модель подразумевает, что бизнес-логика заключена в классах и их поведении/отношениях. Анемичная подразумевает, что бизнес-логика пишется процедурно (в сервисах или даже plain-функциях), а классы - это просто структуры для передачи данных. (читай, например, https://habr.com/ru/company/jugru/blog/503868/)
Соответственно, в го, без дженериков и прочего мета-программирования очень сложно делать всякие хитрые паттерны, основанные на отношениях объектов. Есть интерфейсы и утиная типизация, но этого недостаточно. А в php ты изи можешь описать, скажем, десять классов подтипа "заказ" и написать универсальную функцию, которая единообразно обрабатывает любой  класс из вышеперечисленных.
источник

ЛА

Локоть Анатолий... in Go-go!
Daniel Podolsky
если честно, устоявшейся практики - пока? - нет

словосочетание “гексагональная архитектура” не используется при этом :)

вообще, go язык небогатый, негибкий и невыразительный. это достоинства, если что

но некоторые концепции на go просто очень трудно использовать - средств не хватает
Полностью поддержу, что отсутствие свободы в выражении в го это плюс. Избавляет от зоопарков.
Все, где можно "навыражаться" это в сишном коде на cgo.
источник

IK

Ilya Kaznacheev in Go-go!
Den D
Большие монолиты на go пишутся?
Все пишется на всем
источник