LINUX.ORG.RU

golang в web? AI?

 , ,


0

5

Кто-то пишет или писал под web на Go?
Стал посматривать в сторону Go, та как захотелось чего-то менее абстрактного. Код понимаем, но всё равно пока лезу в документацию по каждому чиху.

Что нравится

  • предоставляемые инструменты. Ты вообще не зависишь от IDE, редактора etc.
  • документация
  • адын бинарник, docker говорит «спасибо», да и я тоже

Что не нравится

  • документация (нет примеров с описанием, почему так и что это даёт)
  • может пока не разобрался, но если навернуть технологий то становится понятно желание раскидать всё на микросервисы. Код избыточен и приходится придумывать/следовать неким правилам (абстракциям), а тут он (Go) по внутренним ощущениям не очень подходит. Или я не разобрался.

Кто-то использует в мире ML? Удобно как в Python или приходится приседать?

Если сравнивать с той же Nodejs/Python? А если с серьёзными вещами (C#/Java)?

Поделитесь опытом.



Последнее исправление: Eulenspiegel (всего исправлений: 5)

Ответ на: комментарий от Eulenspiegel

Если я правильно помню, там была авторизация по JWT и какой-то начальный ОРМ по типу DAO, я не вспомню сейчас как называлось, из трех букв что-то. Ничего абсолютно сложного.

FishHook
()
Ответ на: комментарий от Eulenspiegel

Вот это https://gorm.io/gen/index.html

И почему сейчас не пишешь?

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

FishHook
()
Ответ на: комментарий от FishHook

и мой текущий насущный хлеб базируется на совершенно другом стеке технологий

Так вот это и интересно. Я сам пишу на Dotnet и немного на Nodejs. Когда накрутили с Empty API в Dotnet, нужда в Nodejs пропадает.

Eulenspiegel
() автор топика
Ответ на: комментарий от rtxtxtrx

Ко всему привыкаешь, и привязывать функции к структурам, и к :=, тут вопрос возник от того, что в принципе всё, что нужно - вшито, плюс один бинарь, а вот как начинает усложняться, то я чувствую избыточность и «некрасивость», что-ли. Вот и решил поспрашивать.

@FishHook вот писал в один пятак, было бы интересно, если была бы обратная связь о том, как оно в поддержке.

Или Go используют, чтобы писать мелкое? Мне не очень понятно применение. Может опыта не хватает, не знаю. Я на низкоуровневое в Web давно не писал, а так Си использую.

Eulenspiegel
() автор топика
Последнее исправление: Eulenspiegel (всего исправлений: 1)
Ответ на: комментарий от Eulenspiegel

Его придумали как замену Java для написания кровавого интерпрайза… отдельных микросервисов. Пхпшники массово на Go сейчас переходят. Это язык в первую очередь для веба. На нем написан Docker, который тоже клиент-сервер по сути — лучшее что есть в Linux наряду со Snap и Flatpak. Все так или иначе крутится вокруг сокетов. В Go даже треды вручную нельзя создать. Так что ML тут лишний. Питон там выбран потому что умеет C/C++ функции запускать из .so/.dll наименее геморным способом через ctypes. Другие альтернативы R, Julia и какая-то хрень про которую все забыли типа компилируемого чего-то похожего на питон

rtxtxtrx ★★
()
Ответ на: комментарий от rtxtxtrx

Его придумали как замену Java для написания кровавого интерпрайза… отдельных микросервисов. Пхпшники массово на Go сейчас переходят. Это язык в первую очередь для веба. На нем написан Docker, который тоже клиент-сервер по сути — лучшее что есть в Linux наряду со Snap и Flatpak. Все так или иначе крутится вокруг сокетов. В Go даже треды вручную нельзя создать. Так что ML тут лишний. Питон там выбран потому что умеет C/C++ функции запускать из .so/.dll наименее геморным способом через ctypes. Другие альтернативы R, Julia и какая-то хрень про которую все забыли типа компилируемого чего-то похожего на питон

Фига ты Америку открыл. Вот только ты не путай PHP подход и Java. на PHP мы дёргаеи базу ручками, а в кровавом - абстракция. И как показывает мой опыт, при среднем проекте она реально выигрывает. Как мяса накинешь, так из императивных подходов дым идёт.

Это язык в первую очередь для веба.

Смотря что ты под этим понимаешь. И да, gPRC можно использовать и в других ЯП.

В Go даже треды вручную нельзя создать. Что-то ты путаешь по ручному управлению потоками. И главный вопрос, зачем?

Eulenspiegel
() автор топика
Последнее исправление: Eulenspiegel (всего исправлений: 1)
Ответ на: комментарий от Eulenspiegel

ИМХО, мелкое - большое, это субъективно. Я бы не стал основывать на голанге Enterprise систему, потому что мне лично кажется, что структурная типизация противоречит общепринятым в ентерпрайзе практикам. Когда я хочу добавить в программу компонент, я должен именно добавить новый класс, не изменяя старый код. Это осуществляется через контракты. В Го, каждая структура может ВНЕЗАПНО стать имплементатором интерфейса, безо всяких изменений в ней самой, тупо потому что она случайно удовлетворяет требованиям интерфейса. Когда я пишу код на Джаве, я знаю, что вот этот компонент выполняет контракт, и от самого факта наличия этой имплементации может измениться поведение системы. Но это изменение контролируемо, потому что я как автор компонента знаю, какие контракты он исполняет и делаю это сознательно. А в Го - нет.

FishHook
()
Ответ на: комментарий от FishHook

О! Спасибо. Хороший, годный ответ. То, что надо!
Получается, что я понимаю в верном направлении?
Go хорош там, где нужен бинарь (нет докера), утилиты, которые можно переписать и где нужна работа с сетью?

Eulenspiegel
() автор топика
Последнее исправление: Eulenspiegel (всего исправлений: 1)
Ответ на: комментарий от firkax

go - язык для слабоумных, не трогай его а то заразишься.

Ну почему, интересны некоторые подходы. Некоторые удивляют. Странно, зачем прогнулись под дженерики, тут они как пятая нога.

Eulenspiegel
() автор топика
Ответ на: комментарий от Eulenspiegel

Я ж говорю, не притрагивайся к нему, он заразный. Не надо пытаться изучать или тем более понять их логику, а то вдруг обнаружишь что присоединился к ней, и уже необратимо.

firkax ★★★★★
()
Ответ на: комментарий от Eulenspiegel

dotnet это замена джаве, из которой микрософт в начале 2000-х прогнали другие копирасты (а у них был MS J++ даже), так что смотри на неё.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от Eulenspiegel

у меня недостаточно опыта конкретно в го, чтобы делать выводы, для чего он подходит, а для чего нет. Вообще, я думаю, есть некие общие и независимые от языков практики, позволяющие писать гибкие, расширяемые и масштабируемые системы. И я уверен, в мире дофига примеров успешного применения го для чего угодно.

FishHook
()
Ответ на: комментарий от FishHook

Вообще, я думаю, есть некие общие и независимые от языков практики, позволяющие писать гибкие, расширяемые и масштабируемые системы.

Вообще есть, но если в языке намеренно зачморили ООП, то становится сложно их применять. Такой ЯП провоцирует писать левой пяткой не приходя в сознание. Ну может так и задумано, не знаю. «Release early, release often» не слишком располагает к медитации на проектировании, тут нужно попроще и потупее. PHP был когда-то хорош, но сейчас уже слишком переусложнен, да и динамическая типизация не для слабонервных. Вот наследничка и выкатили.

bread
()

Кто-то использует в мире ML? Удобно как в Python или приходится приседать?

Никто в ML его на серьезных щах не использует. Ну мб для веб серверов, но это не ML собственно. Причина проста до безобразия - в ML большая часть кода на python и C++ и никто его переписывать не собирается. А без инструментария делать там нечего, разве что баловством заниматься.

Norgat ★★★★★
()

Если сравнивать с той же Nodejs/Python? А если с серьёзными вещами (C#/Java)?

Что там сейчас в Go - хз. Когда смотрел (лет 6 назад), киллер фичей была нормальная асинхронщина на уровне языка. В nodejs и python этого нет - потому что есть нюансы при работе не с хелловордом (например, async/await нельзя в celery worker в python).

Кому это нужно? У кого хайлоад и сотни/тысячи vCPU. Где более эффективное их использование экономит кучу бабла. Поэтому для меня понятно почему то же Avito гоферов нанимает.

Сравнивая с C# - в C# все это есть, но не всем нравится зависимость от MS. А так - ASP.Net довольно приятная штука, на Linux вон у нас простенький микросервис написанный за неделю уже год крутится и никаких проблем.

Norgat ★★★★★
()
Ответ на: комментарий от Eulenspiegel

Пипец у тебя аргументация. Ну давай сравни jdbc из жабы с doctrine из пыха. Кто напрямую руками в базу лезет, а кто через абстракции?

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от cobold

dto-шечка… но тем не менее в остальном из похапе по-прежнему лепят яву и тот же <?php можно лишь единожды написать в файле и лишь вначале, а прямое использование шаблонизатора по назначению сродни тяжкому греху. вывод: пхп - ересь. тру пхп - это вротпресс

rtxtxtrx ★★
()
Ответ на: комментарий от cobold

php сейчас тоже не php тогда, никто не отменяет сложность применяемых абстракций. Всё ты правильно говоришь. Я на примере php учил пару лет назад фабрики DI ;)

Eulenspiegel
() автор топика
Ответ на: комментарий от Tark

Отключи адблок и посмотри сколько курсов по питону тебе предложат и сколько по го. А почему? А из-за низкого входного порога. Т.е. ровно по той причине, по которой паскаль юзали для обучения базовому программированию

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от cobold

Обучение гаданию на картах таро сравнилось по популярности с курсами по ИИ

Сейчас популярно другое. Херки массово записываются на курсы тарологии, а для детей курсы по роблокс и майнкрафту.

rtxtxtrx ★★
()
Ответ на: комментарий от cobold

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

Tark ★★
()
Последнее исправление: Tark (всего исправлений: 1)
Ответ на: комментарий от cobold

На код начинающего программиста нельзя смотреть иначе как без слез умиления. На каком бы языке тот не писал

Я смело спорю. Если учить базовым вещам через призму умений и знаний, то результат очень неплох.

У новичка есть другая проблема - он не знает, хорош ли учитель и верит ему, как уточка…

Многие наступают на эти грабли, выискивая быстрый метод получения результата. Что на выходе? Если новичок нашел работу, то через несколько лет он мнит себя серьёзным спецом, но увы. Этот «спец» тратит время и, возможно, деньги компании не в ту сторону, так как код или не поддерживаем или написан так, что его переписывают постоянно такие же «специалисты».

Eulenspiegel
() автор топика
Ответ на: комментарий от Eulenspiegel

или написан так, что его переписывают постоянно такие же «специалисты».

Вот сейчас я потрачу время и перепишу проект с Dotnet на Go ;)
Тему закрываю.

Eulenspiegel
() автор топика
  1. Сборщик мусора в Го - мусор!
  2. Если переписать print(‘Hello World!’) на Го и скомрилить, то полученный бинарник будет весить за сотню мегабайт. Да, это не опечатка, не килобайт - МЕГАбайт.
  3. При компиляции бинарника Го самостоятельно полезет в интернет для скачивания библиотек.
  4. При компиляции он отправит телеметрию гуглам о тебе. Хотя и говорят, что она вроде как отключена и не встраивается в скомпилированный бинарник, но верить корпорации добра… Это как в мозилле, настроил конфиг, а через какое-то время обнаруживаешь, что он изменён и у тебя установлены новые дополнения.
  5. Язык малословный, учится легко и это плюс. Язык сильно кастрированный и писать бесконечную портянку кода с повторяющимися частями сильно утомляет и порой раздражает.

В связи с проведенным анализом полученных данных, комитет народных экспертов ЛОРа постановил:

  1. Минусы языка перевешивают плюсы.
  2. Лучшее потратить время на что-то более сложное и функциональное.

Доклад ставил первый помощник третьего заместителя второго секретаря младшего аналитика пятой экспертной группы регионального представительства дальневосточного филиала.

anonymous
()
Ответ на: комментарий от anonymous

Он не сотню мегабайт весит. А намного меньше… Менее 5 мегабайт. Точно не помню… Это конечно значительно больше 16 килобайт на C++, но там РАН тайм для запуска горутин, сборщик мусора и тп. По мере увеличения сложности программы бинарь на гоу начинает весить ненамного больше сишного… Ну те твои аргументы дебильные. Хеллоуворлды не показательны

anonymous
()