LINUX.ORG.RU

Почему Go это плохо, и он вам, на самом деле, не нужен.

 ,


7

15

Давайте я вам поясню про язык Go, откуда у него растут корни, и почему его на самом деле не стоит использовать. То что напишу ниже, это взято как из инсайдерской информации, так и из материалов, доступных в интернетах.

Дело в том, что Go это, на самом деле, «решение» внутренних гугловских проблем. Но отнюдь не проблем горизонтального масштабирования серверного ПО, как многие почему-то думают. Он приспособлен специально для использования в гугле вот в каком контексте.

Гугл нанимает большое количество тупых студентов, только-только после вуза или ПТУ, и заставлять их писать хоть какой-то простой код. И делать минимум ошибок, при этом. Для этого Go сделан таким тупым и упрощенным. И выкинут в паблик он только для того, чтобы вероятность, что у такого студента, только пришедшего в гугл, было хоть какое-то знание Go, была выше нуля.

Но дело вот в чем. В гугле, на самом деле, над каждой командой гошников стоит тимлид, или целая группа, который/которая вот этим взаимозаменяемым роботам-гошникам расписывает всю систему, чуть ли не вплоть до состояния конечного автомата, до if-ов, и показывает куда и что писать. Поэтому же Go на корню режет всю креативность, поэтому там нет практически никаких средств абстракции, и поэтому он не дает делать вообще ничего сложного. Дабы программисты на нем вообще ничего лишнего не думали, а кодировали все чуть ли не побуквенно по указаниям умных людей.

Из гугла же идет маразматическая система управления зависимостями Го, которая заточена на монорепы.

Тут возникает вопрос - а почему этому тимлиду не дать в руки кодогенератор, вместо всей этой accidental complexity, возникающей из-за огромного количества строк кода, и из-за затрат на коммуникацию?

А тут надо понимать, как внутри устроены огромные корпорации типа гугла.

Их давно пожрал рак бюрократии. Там у менеджерских и околоменеджерских должностей один из главных критериев промоушнов, или вообще даже ассесмента(усидения на должности), это количество людей у тебя в подчинении. И количество говнокода в вакууме которая твоя команда написала. И вот все эти люди, сидящие на более-менее средне-высоких должностях, постоянно бодаются за эти промоушны и ассесменты. Это их главная и единственная цель. Поэтому, ни о какой эффективности тут речи не идет вообще от слова совсем. Тут главное - корпоративные игры, количество голов в твоем стаде и количество и размер высеров, которые это твое стадо произвело(причем буквально, важны SLOC).

Естественно, это все отражается на качестве продуктов, и это видно как по полному прекращению инноваций в гугле, так и по постоянно мелькающим и закрывающимся высерам этой компании - hangouts, duo, google plus, google wave, и прочее и прочее, можете еще вспомнить много чего.

Если у вас в компании такой «модели управления» нет, и более того, у вас нет возможности нанимать крайне высококвалифицированных людей за крайне много денег, единственное назначение которых будет расписывать стаду гошников(которые тоже стоят немало денег просто из-за количества) систему до уровня конечного автомата, то вам этот язык и вся его экосистема нахрен не сдалась.

Никакой мифической простоты в отладке и в понимании кода Go не приносит. Да и сложность программных систем растет совершенно не из-за понятности/непонятности какой-то отдельной взятой строчки кода или функции. Потому, что, во-первых, понятность это понятие субъективное, во-вторых потому, что, отдельно взятая фунцкия на 5 строк понятна любому опытному программисту, будь она написана хоть на Rust, хоть на Common Lisp.

Сложность программных систем возникает из-за их размера. И Go эту проблему значительно ухудшает. Человек не может удерживать в голове слишком много вещей, даже если каждая отдельная вещь - очень простая. Количество RAM в голове ограничено.

В случае если вы не хотите выкидывать кучу денег просто так, и скорее предпочли бы нанять немного, но более-менее опытных программистов, Go будет только вреден, потому что все вменяемые люди от него, на самом деле, плюются. Он реально отталкивает опытных людей, которые способны понять сложные требования и написать, и поддерживать, более-менее сложные системы уровнем хотя бы нескольких сервисов плюс БД и MQ.

★★

не стоит использовать.

А разве кто-то сомнивается? Ну кроме смузихлебов.

«решение» внутренних гугловских проблем.

ЕМНИП, это даже Пайк в одном из интервью говорил. Но пруфов уже не найду.Задача была «чтобы даже питонисты могли писать».

Гугл нанимает большое количество тупых студентов…

А, ну вот. Тезис выше подтверждается. И, кстати, не им одним это надо. В целом сейчас был тренд «а давайте нормальных инженеров заменем на макак-смузихлебов и пусть они нам без СМС и регистрации пилят что-то».

И выкинут в паблик он только для того…

Очевидно. Плюс - килотонный тестеров.

В гугле, на самом деле….

А по-другому не получится. У тебя есть армия джунов и релиз через квартал. Если джун будет сам изобретать - то, вероятнее всего, результат тебя удивит. Сам знаю историю, как человек не знающий про regexp изобретал свою парсер вместо одной регулярки. В итоге наплодил кода более 1к строк. На C#. Умудрился еще и рефлексией там что-то присобачить, чтобы было меньше кода.

Поэтому же Go на корню режет всю креативность…

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

Дабы программисты на нем вообще ничего лишнего не думали…

Нормальный поточный процесс производства. Чувак, кто гайки крутит на заводе какого-нибудь «опеля» тоже мало креативности может проверить. Гошник - это рабочий завода, приспособленный к конкретному станку. Его задача не думать, а собирать вполне типовые решения.

…маразматическая система управления…

Потому, что им надо получать стабильные дистрибутивы с изоляцией влияния одного смузихлеба на другого. Это логичный ход и для большой команды - монорепа не плохое решение. Вообще, ИМХО, DRY ради DRY - скорее антипаттерн. Если у тебя есть вероятность, что модуль А поменяется или дешевле твою доменную логику изобразить через его доработку - клонируй, добавляй к себе и развивай отдельно. Ради простых CRUD или прокесей (частые кейсы гошки) делать что-то большее - не оправдано экономически.

Тут возникает вопрос - а почему этому тимлиду не дать в руки кодогенератор…

Потому, что сделать кодогенератор будет дороже, чем армия смузихлебов. Его надо сделать, поддерживать, развивать. А это куда больше будет, чем армия ребят с подворотами.

Их давно пожрал рак бюрократии.

Без бюракратического аппарата ты не сможешь управлять большой компанией. Вот есть у тебя рацпредложение. А платит за исполнение работ генеральный. Между ним и тобой N ступеней. И не просто так. Время генерального - очень дорогое, он принимает стратегические решения, тактические (то есть оперативные задачи) - он передает другим уровням. Они же выступают фильтром идиотических предложений из разряда «а давайте возьмем и перенесем все на Х, чтобы было как у реальных пацанов». Предлагающий ведь может даже и прав, что Х лучше. Но есть куча факторов - от сборки до конкретных особенностей стека, которые он выпустил в своей идеей. И вот, чтобы этот самородок не долбал подобными идеями генерального (в том числе) нужна бюрократия. Но это один из кейсов. А их много.

Там у менеджерских и околоменеджерских должностей один из главных критериев промоушнов….

Внезапно, так почти везде.

И вот все эти люди, сидящие на более-менее средне-высоких должностях, постоянно бодаются за эти промоушны и ассесменты.

Внезапно, так почти везде кроме стартапов. Правда у них нет продуктов. Только желание продать себя за новую инвестицию.

Это их главная и единственная цель.

Больше ресурсов в подчинении - Больше продуктов делается - Больше доля выручки компании зависит от тебя - Больше твоя оплата. Логичная цепочка. Внезапно - не только в ИТ.

…эффективности тут речи не идет вообще от слова совсем.

А что понимать под эффективностью? Это определение за собой скрывает функцию полезности, вполне конкретную. Для того, чтобы дать ответ - есть она или нет, - надо сначала ее детерминировать.

Тут главное - корпоративные игры….

Логика гугла - логика работы стартапа. У них большая часть продуктов является старатпом. А это значит - MVP и в прод. Смотреть будет бабло или нет. Если будет - едем дальше, если нет - выкидываем или отправляем в апач умирать. Гугел часто путают с продуктовыми компаниями - от этого и диссонанс.

Естественно, это все отражается на качестве продуктов…

На сколько помню они продукты с 0 переписывают всегда, новую версию. Ее считают просто MVP. Так как они - стартап, то это вполне нормальный подход. Зачем пытаться писать хорошо то, что даже может не зайти? Сделали MVP, проверили гипотезу. Шевелится - дальше дополняем. И так итерациями пока не будет понятен продукт. Если он не стал понятен - то разработка была копеечной. Смузихлебы на Go и Python все равно не такие дорогие ребята.

Если у вас в компании такой «модели управления» нет….

Я бы сказал, что тут масса альтернатив Go и в этой нише. Просто Google удобнее он потому, что любую фичу по необходимости они быстро добавят сами. А в целом - я бы сказал, что Go не нужен и при аналогичной модели. Слишком большой вендорлок и слишком мало гарантий развития. На Dart вон на сколько забили? И до Flutter предпосылок не было, что это оживет.

Никакой мифической простоты в отладке и в понимании кода Go не приносит.

А если посмотреть на код гошников, то убеждаешься в старой поговорке «простота - хуже воровства». Люди с низкой квалификацией такое даже на go пишут, что 3.14здец. А ведь это еще инструмент примитивный. Что было бы, если бы им дали по зубам тем же CL?

Да и сложность программных систем растет совершенно не….

Проблема любого языка прокладка между стулом и клавиатурой. Да.

во-вторых потому, что, отдельно взятая фунцкия на 5 строк понятна любому опытному программисту, будь она написана хоть на Rust, хоть на Common Lisp.

Покажи функцию написанную на каком-нибудь брейнфаке. Будет интересный опыт.

Сложность программных систем возникает из-за их размера.

Не всегда. Она чаще всего коррелирует из-за связанности кода. Мало кто понимает идеи Алана Кея, считают что сопряженность = связывание. Как применить декомпозицию вместо наследование в шаблонном методе - вообще для большинства становится «рокет сайенс». Правда это уже не проблема Go, а скорее рынка. Дядя-комерс не хочет платить условные 10 енотов инженеру. Он хочет платить 1 енот Карлу и иметь 9 енотов плюсом к прибыли. И желательно, чтобы Карл был дебилом и не развивался, иначе кривая роста дойдет до тех же 10 енотов.

И Go эту проблему значительно ухудшает.

Поддерживаю. Инструмент нанес вреда больше, чем в свое время бейсик. А уж принятые best practice его некоторые в адекватном круге инженеров приводят к получению фейсом об тейбл.

Человек не может удерживать в голове слишком много вещей….

Тренируемо. Но ЦА гошки - именно не тренируемые. И не обучаемые.

В случае если вы не хотите выкидывать кучу денег просто так…

На вменяемых людей - насрать. Главное есть ли прибыль. Одна знакомая компания на гошке и равеле собирает тонны инфопомоек, которые достаточно просто поддерживаются. Сотрудники не просят сильно больше золота (в разумных пределах). Моржа растет. Какая разница, что думает об этом условный Александреску? Задача бизнеса - делать деньги. Делать дешевый хлам - одна из стратегий. Вполне живая.

Он реально отталкивает опытных людей…

Смотря на сколько много заплатят. Тут вопрос в количестве енотов, которое работодатель даст за ковыряние в го. Если оно будет больше, чем на условно «хорошем ЯП» - то погружаются хоть по уши.

Но в целом с опусом согласен и поддерживаю. Python, Go и подобные решения - «рак» IT и ведут только к профдеградации.

small-entropy
()
Ответ на: комментарий от slew

Тут ты не совсем прав. Если люди не стремятся к state of the art, будут получатся уродливые решения. Выбор стека это всегда трейдофы, и люди должны отдавать себе отчет что в языке хорошо, что не очень, и почему тут вот этот стек булет оучше другого.

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

Это всё ерунда. Ничего особенного нет ни в перле, ни даже в плюсах.

Конечно, нет. Вся штука в том, кто и как их готовит 😂.

Когда я начинал карьеру, на перле писали любые рандомные школьники.

Карьеру на ЛОР? 🤣

На плюсах первокурсники пишут KDE, например.

Поэтому я его видел только на скриншотах 😁.

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

Why not? 😄

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

На плюсах первокурсники пишут KDE, например

А в гноме не так, только выпускники?

Ну так там божественная Сишка.

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

Устами младенца тык скыть…

Если перефразировать его спитч вкратце то будет так:

Го узкозаточен под специфику разработки внутри гугл. Не используйте го в больших проектах, если ваша специфика значительно отличается.

То же самое можно сказать про любой узкозаточенный инструмент. Новым для меня было то, что го узкозаточен (я с ним не знаком). Выглядит логичным, скорее это + и го и гуглу.

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

использую кодогенератор от deepen linux, на гитхабе все есть

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

Вообщет, это что-то вроде зеркала. Прибито имеется ввиду к технологиям конкретной ОС как в .net

.net core работает в люниксе.

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

Если люди не стремятся к state of the art, будут получатся уродливые решения

Можно создать красиво/просто на лишпе/C++, но там же можно создать уродливо/сложно шо писец. На гошке у тебя на выхлопе будет все плюс минус одинаковое. Как бы ты не старался сделать очень сложно/уродливо, результат будет почти такой же, как если бы ты старался сделать красиво/просто. И это один из мощных плюсов той самой гошной простоты и дубовости, за что его и выбирают сейчас часто как стандартное решение для прода. Там просто исчезает возможность накреативить. Как бы это не нравилось обиженным суперпрофи с 20-ю годами кодинга на лишпе/плюсах, для бизнеса это только плюс.

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

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

Да говно выражение. Говно идея, говнина, высказанная другими и подхвачена принесённая в массы.

ЛЮБОЙ ЯП общего назначения - ВСЁ! Если в него умеешь, умеешь хорошо, то и делаешь всё на нём, даже макаронного монстра. Если упираешься в потолок - идёшь за другой концепцией (ЯП).

Если за время «в него уметь» ты не сдох с голода и выучил английский, то вопрос работы пропадает. Вакансии есть на всё. Просто уровень задач другой.

Теперь по Go. Сейчас в IT 90% задач - кодерские. Нет там программирования, совсем. Если научить кодить тело, оно кодит от своей тупости год-десять. Потом выгорает от тупой работы и завышенного самомнения. Так вот, Go в этой парадигме всегда оторвёт кусок (и отрывает).

Инструменты.Ты на задачи глянь. У нас ЛОР не может в автопроверку сообщений. На маты, на провокационные слова и так далее. Сидят, понимаешь, в галереи выкладывают с ухмылкой Маки и удаляя WSL, недоилита. За три клика тупая коза делает ‘ветер’, а наши специалисты создают для стукачества «некорректные сообщения».

За три тыка я могу теперь к «малинке» прикрутить распознавание своего питомца (и отдать эту инфу в MS, но это не важно, тут же люди, которым «нечего скрывать»). Я могу за пять тыков собрать антиспам. А я себя не считаю профи. И всё это бесшовно интегрируется. Для пацанов даже придумали MLcli, чтобы отвязать от VS и сделать более cross-platform. И через некоторое время эта экосистема (а началось по survey уже сейчас) всех выжмет из рынка.

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

Как бы это не нравилось обиженным суперпрофи с 20-ю годами кодинга на лишпе/плюсах, для бизнеса это только плюс.

lovesan когда-то показывал свой код на C++. Не стоит считать его суперпрофи с 20-ю годами опыта касательно C++ разработки.

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

.net core работает в люниксе.

Тсс, не надо ему шаблон рвать. А то как узнает, что за Nginx сидит Kestrel…

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

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

Да нет, гигантские зиккураты из 100500 микропен^H^H^Hсервисов, которые вместо того, чтобы решать задачу, гоняют данные отсюда туда и обратно, выглядят вполне себе уродливо и голанг тут никак не помогает.

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

Голанг – это такая жаба, только от гугла, а не от солнцевских. И относиться к нему надо соответственно.

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

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

С точки зрения бизнеса это выглядит по-другому. Мы имеем сложную вещь под NDA, которую новоприбывшему просто опасно давать, да и сольет еще код ненароком. Поэтому мы сделаем микросервис, который будет «общаться» с этим, но зато и ряд требований проще составить и отревьювить это все. Да и контрактору можно дать разрабатывать, не нанимая специально человека на зарплату. Качество конечно будет хуже, но зато дешевле в разы. Потом большинство вещей все равно делаются только до mvp, потом ищут инвесторов, и если не находят, а продукт не начинает сам себя окупать, то все выбрасывается, начинается пилиться новый продукт. Если что я тут говорю не про гугл, а наоброт про мелкие стартапы и т.д

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

Тут все VSCode нахваливают.

Нууу… не, я его тоже нахваливал. Но как и к любой ложке мёда, бочка говна прилагается, и в итоге пришлось на Emacs возвращаться :(

Так-то я могу и Windows понахваливать, потому что во многих аспектах nsotkrnl превосходит этот ваш пераццкий лялекс, только продукт под названием Windows в итоге является полным говном.

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

Сходи вон код Kubernettes посмотри. Там такая залупа

Свои задачи выполняет? Требованиям соответствует? Прод тянет? Да, и это понятно по количеству его внедрений. Что-то никто не бежит юзать фрибсдишные джайли или солярисовые зоны, все за бубернетес уцепились. И не надо про мух, мухи жрать хотят. Остальное про гошный код-это субъективное восприятие одного-двух индивидов, никому не интересное.

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

Свои задачи выполняет? Требованиям соответствует? Прод тянет? Да, и это понятно по количеству его внедрений. Что-то никто не бежит юзать фрибсдишные джайли или солярисовые зоны, все за бубернетес уцепились. И не надо про мух, мухи жрать хотят. Остальное про гошный код-это субъективное восприятие одного-двух индивидов, никому не интересное.

У тебя, я надеюсь, Windows 11 на компе?

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

Не надейся, на ноуте debian12, а радом тинкпад в качестве роутера с netbsd. Недавно включал свою нетру с солярисом 10 на борту, помолиться богу технологий

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

Не надейся, на ноуте debian12

Но почему? Windows 11 же свою задачу выполняет и «прод тянет». Миллионы юзеров не могут ошибаться. Гарантирую, дохрена погроммиздов даже на том же Го сидят на венде. Почему же у тебя Debian?

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

Windows 11 же свою задачу выполняет и «прод тянет

Потому-что это мой домашний ноут, что хочу, то с ним и делаю.

slew
()

пожрал рак бюрократии
...
промоушны и ассесменты
...
главная и единственная цель

ИБД ради KPİ?

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

Windows 11 же свою задачу выполняет и «прод тянет

Потому-что это мой домашний ноут, что хочу, то с ним и делаю.

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

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

То же самое можно сказать про любой узкозаточенный инструмент. Новым для меня было то, что го узкозаточен (я с ним не знаком). Выглядит логичным, скорее это + и го и гуглу.

Go это язык, на котором легко писать прикладной софт. Консольные почтовые клиенты, IRC чаты, веб-сервисы, FUSE-fs для какой-то нетребовательной к перфомансу задаче, приложения показывающие тебе погоду в магадане и прочее. Это Python со статической типизацией и строгим забором на то что ты можешь делать.

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

Программирование это не штамповка гаек на заводе, это настройка роботов которые уже штампуют гайки. И современные инструменты в этой отрасли тебе позволяют автоматизировать и само программирование.

Кажется, ты застрял в девяностых. Современная айтишечка в подавляющем большинстве случаев это формошлепство июнями 8/5. Ремесленничество. Рыночку нужно именно это, а не высоколобые саванты, пишущие кодогенераторы.

Посему смирись, приглуши ЧСВ и иди дальше клепай стриминги на функциональщине, которую может поддерживать полпроцента людей, называющих себя «Software developer».

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

На рабочем компе у тебя что?

rocky linux 9.2. Почему не винда там? Разработка под rpm-based линуксы. На винде проблематичней будет этим заниматься, чем на самом линуксе. Было время когда участвовал в разработке под солярис, тогда стоял солярис на рабочем месте (и дома).

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

rocky linux 9.2. Почему не винда там? Разработка под rpm-based линуксы.

Но зачем? Ведь сейчас все используют Docker и Kubernettes! Почему ты не используешь Docker?

Как видишь, чувак, точно так же есть 100500 причин не использовать K8s в проде, а использовать те же джейлы. Потому что K8s иногда таки не тянет. Или иногда он является лютейшим оверкиллом, когда нужно развернуть три сервиса, а не нанимать отдельного чувака чтобы он кластиром рулил.

hateyoufeel ★★★★★
()

Весь стартовый топик - это чистая фантазия TC-а, не имеющая никакого отношения к реальности.
А реальность такова, что Golang - это компилируемый язык, из коробки нормально поддерживающий идею «зеленых тредов» и, соответственно, позволяющий без лишнего геморроя писать быстро работающие «облегченные» приложения сетевой ориентации. Сразу добавлю, что всякие Java и .NET для задач подобного класса - это НЕ альтернатива, это для автоматизации работы всяких контор и прочих тяжеловесных проектов.
Ну а всякие конкретные языковые «плюшки» Golang - это уже вторично)

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

Вот у меня компания, создал ее, нужно писать код для индустрии, где деньги водятся. Например, интернет сервисы. На чем сервисы писать? Нужно чтоб как можно быстрее, нужно чтоб как можно проще (сложности городить будет на хобби проектах), нужно чтоб было производлительно и не жрало ресурсов, нужно чтоб разработка всего этого стоила как можно дешевле

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

Подумай немного что произойдет если описываемая тобой «серебряная пуля» на самом деле будет создана.

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

А реальность такова, что Golang - это компилируемый язык, из коробки нормально поддерживающий идею «зеленых тредов» и, соответственно, позволяющий без лишнего геморроя писать быстро работающие «облегченные» приложения сетевой ориентации.

А ты точно отличаешь зеленые треды от обычных? Правда? И что такое спинлок тоже знаешь? И как работает планировщик задач в ядре тоже?

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

Во новости-то, мужики и не знают.

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

Ой вавой, политика и ГУГЕЛЬ СКРЫВАЕТ!

Скажем так, тебе из твоего мира призма восприятия несколько жмёт. Разработка не заканчивается на микросервисах и даже не начинается, это вообще только инструмент управления сложностью и гугл решает её как умеет. Хорошо ли плохо ли - годовой отчёт собранию акционеров покажет, бгг.

А сложными системами занимаются далеко не все тоже и иногда го проходит по принципу «чем хуже, тем лучше».

Вот тебе пример: есть задача сконтачиться с одним там демоном по udp, взять с него данные и отправить через вебсокет на сервер, попутно обмазав небольшим количеством ништяков типа статистики, сохранения до тех пор пока сервер не подтвердил приём и ещё там пары мелочей. Но есть нюанс - крутиться всё это добро будет по ебеням и весям одной там зачуханой планетки в количестве нескольких тысяч штук, бывает, что в местах, где волки срать боятся и админить сие железо там только койоты могут.

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

Можно ли было взять питон или другую скриптовщину? Можно, но не нужно, потому что питоновое окружение настраивать надо аккуратно, а заниматься этим в масштабе тысяч устройств неохота. Плюс ты насегда застреваешь на старой версии, хорошо если на третьей и перенос между моделями устройств(чужой разработки, мы ими только пользуемся) тоже та ещё срань.

Можно ли было взять раст? Можно, я даже хотел, но шеф такой: «А если ты завтра, мудила на своём моцоцыколе разложишься, мы где замену искать будем?»

Ну и гошечка тут по сумме оказалась оптимальным выбором. Язык простой, язык дубовый, сложных архитектурных конструкций не предвидится, даже в условиях эмбеда производительность достаточная чтобы прожевать всё с большим запасом. А, да, ещё и сборка в статический бинарь, который «в себе» и запускается на любом ядре, как бы не со времён 2.6.38. Рантайм бы потоньше, флеш не резиновый, но UPX и tradeoff флеша на оперативку - приемлимое решение. При этом кросс-компиляция в одну переменную окружения и оно тупо работает от armv5 до mipsel(на этом моменте, в другой истории, раст, кстати, обосрался).

Люблю ли я го? Нет, что не мешает мне его использовать там, где это оправданно.

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

А ты точно отличаешь зеленые треды от обычных? Правда? И что такое спинлок тоже знаешь? И как работает планировщик задач в ядре тоже?

А ты точно понимаешь, почему так популярен Nginx-сервер? … и NodeJS?) Хватит тут какие-то младенческие понты кидать…)

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

А ты точно понимаешь, почему так популярен Nginx-сервер? … и NodeJS?)

Оказались в нужное время в нужном месте и заняли свои ниши. Или ты что-то иное подразумевал?

Ну и я про другое спрашивал если что.

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

Ну и я про другое спрашивал если что.

Ты не спрашивал - ты попытался выпендриться перед «дедушкой»))

Оказались в нужное время в нужном месте и заняли свои ниши. Или ты что-то иное подразумевал?

Это не объяснение. Я привел для примера эти два продукта, просто потому что и у них есть кое-что общее с Golang. Попробуй угадать, что?)

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

Ты не спрашивал - ты попытался выпендриться перед «дедушкой»))

Доложись по форме, как положено. Дедушка он блин.

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

Я привел для примера эти два продукта, просто потому что и у них есть кое-что общее с Golang.

Касательно nginx это звучит очень интригующе. Что же?

PS. Это не сарказм.

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

Касательно nginx это звучит очень интригующе. Что же?

Да процессор эффективно использует, поскольку задействован асинхронный ввод-вывод и не требуется плодить OS-овские треды и тратить ресурс процесора на их переключение. Соответствено, на той же железке Nginx обслуживает гораздо больше входящих запросов, чем прежние веб-сервера, ориентированные на использование кучи тредов.

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

В последний раз, когда я про него читал, nginx использовал модель process per CPU core и никаких зеленых нитей там не было. При этом один процесс nginx обрабатывает лишь K соединений из общего числа N. А асинхронность там задействовалась прямо на уровне кода обработки каждого соединения.

Тогда как Go явно подталкивает к модели green thread per connection и, как следствие, все N подключений обрабатываются одним процессом. При этом внутри goroutine пишется типа обычный «синхронный код», который оказывается асинхронным благодаря рантайму Go.

Следовательно, мне сложно увидеть общее между nginx и Go. Разве что за то время, что я про nginx не читал, туда уже green threads завезли (в чем сильно сомневаюсь).

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

Проверенное решение имеет стандарт ANSI 1994 года

Блен, этому стандарту уже скоро тридцатник стукнет. Мир как бы идёт вперёд, не? К примеру, скоро в каждом домофоне будет вычислительных ядер как в кедровой шышке — так и будем вручную блокировки на общее изменяемое состояние мусолить, как раньше выделение/освобождение памяти? %)

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

… по той же причине и серверные приложения, написанные на NodeJS, пашут эффективно. Ну у ноды есть одна неприятность - она работает в контексте одного OS-оского треда - и соответственно одного ядра. В Golang эта проблема решена и не надо придумывать всякие костыли, чтобы загрузить процессор на полную катушку.

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

Проверенное решение имеет стандарт ANSI 1994 года

Блен, этому стандарту уже скоро тридцатник стукнет. Мир как бы идёт вперёд, не? К примеру, скоро в каждом домофоне будет вычислительных ядер как в кедровой шышке — так и будем вручную блокировки на общее изменяемое состояние мусолить, как раньше выделение/освобождение памяти? %)

Проблема в том, что даже для 1994 года этот стандарт был говном. А в 2023 вообще говорить не о чем.

Судя по опыту C/C++, наличие «оффициального» стандарта у языка от ISO сотоварищи – это минус, а не плюс. Просто потому что такие стандарты – это долго, дорого и требует кучу бюрократии. И полностью ему соответствовать в итоге никто особо не пытается.

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

… по той же причине и серверные приложения, написанные на NodeJS, пашут эффективно. Ну у ноды есть одна неприятность - она работает в контексте одного OS-оского треда - и соответственно одного ядра. В Golang эта проблема решена и не надо придумывать всякие костыли, чтобы загрузить процессор на полную катушку.

Окей, а теперь давай про Java, треды которой тоже зеленее некуда.

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

даже для 1994 года этот стандарт был говном

Верблюд — это лошадь, разработанная комитетом, ага. Я понемаю, что в 1994 году это было не так очевидно и даже вообще не очевидно, но время-то ведь идёт, опыт накапливается, болевые точки и проблемные места становятся известны — а стандарт и ныне там, ничего не меняется.

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

Следовательно, мне сложно увидеть общее между nginx и Go

Общее у них - это использование асинхронного ввода-вывода. В Nginx конечно нет никаких зеленых тредов - там внутри все кодировалось как и потом в приложениях NodeJS. Но это не очень технологичное решение для массового программирования. Вот тут и подоспела гошечка, где программисту предоставляется более «гуманный» инструмент для программирования таких же шустрых приложений.

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

даже для 1994 года этот стандарт был говном

Верблюд — это лошадь, разработанная комитетом, ага. Я понемаю, что в 1994 году это было не так очевидно и даже вообще не очевидно, но время-то ведь идёт, опыт накапливается, болевые точки и проблемные места становятся известны — а стандарт и ныне там, ничего не меняется.

А чо бы ему меняться? Те лисперы, которым это не нравилось, сделали новые лиспы – Clojure и прочий Racket. А остальных всё устраивает.

Ну и потом, лишп никогда не был особо популярным язычком. Одно из двух его преимуществ перед другими – простота реализации и портирования – в Common Lisp нахрен похерена по причине чудовищной перегруженности стандарта.

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