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.

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

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

Половина изобретений человечества так случилась, это нормально.

cumvillain
()

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

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

потому и net и жаве пора обьявлять газават.

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

А на самом деле платформы как раз и нужны, чтобы не переизобретать каждый раз стандартную библиотеку с нуля.

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

А на самом деле платформы как раз и нужны, чтобы не переизобретать каждый раз стандартную библиотеку с нуля.

Какие платформы? У питона вот нет платформы.

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

Особо не вникал, но .Net это то же самое, что и Java, только от MS.

Вообще не так. Java это язык со стороны MS это С#.

Net(CLR) это скорее JVM … и как писал выше, я что то не помню под NET что то отличное от C#, причем под JVM всего полно, тот же JRuby к примеру.

И да NET до J2EE они не дотянули…

P.S. Не совсем понятно почему автора топика модераторы не забанят ? Он пишет оскорбления и подобное. Странно.

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

я что то не помню под NET что то отличное от C#

Наверное вы просто не интересовались темой.

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

Ну реакт вынуждает тебя писать костыли. Так что вполне инженерия. А вот vue это уже ремесленничество, ибо там всё есть, и тебе не нужно заниматся сбором конструктора, ты можешь сразу творить.

Все наоборот. Писать костыли - ремесленничество, сбор конструктора - инженерия.

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

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

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

У питона вот нет платформы.

Питон сам себе платформа. И для неё даже есть лисп :3

Лишп для чего угодно есть, но компилировать другие язычки в байт-код пердона или сам пердон – это было бы тем ещё безумием.

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

чтобы не переизобретать каждый раз стандартную библиотеку с нуля

А также виртуальную машину, формат байткода, систему типов, сборщик мусора и всё такое прочее.

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

компилировать другие язычки в байт-код пердона или сам пердон – это было бы тем ещё безумием.

Ну вот в жопаскрипт много чего компилируется, и ничего. Чем петон хуже жопаскрипта?

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

дебик

этот тс сломался, несите следующего

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

OZON

Ахахахаха. Открываем hh.ru:

Ozon Bank - один из ключевых активов Ozon Fintech и платформа для роста и экспансии на российском рынке. Сейчас проект на ранней стадии развития, это редкая возможность встать у истоков уникального продукта и писать код без оглядки на legacy. У нас много задач и амбициозный план развития, что тоже даёт дополнительные преимущества: быстрый карьерный рост и выбор направления. Прямо сейчас их четыре.

Наш стек:Golang, Docker, Kubernetes, postgresql, CI/CD.

Это он ещё не знает, что Tinkoff Travel на хачкеле написан.

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

Когда вижу core.async сразу кложуру вспоминаю, а тут оказывается свой core.async в гойланге, вон оно чо.

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

Понятия не имею, если честно. Этот топик уже в слишком глубокой стадии шизофрении.

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

Питоновая либа оттуда кучу всего тянет.

Что именно? Питоновая либа реализована через libc и экспортирует её части для FFI, но это особенность реализации. Никто не мешает писать пердон целиком поверх сисколлов, просто это никому не нужный лишний геморрой.

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

У тебя опечатка. Там нужно не «ручками», а «RAII понять не может».

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

В дерьмо он превратился

И гойские свиньи с радостью хавают изрыгаемые им помои считая, что это манна небесная, от самого Господа Бога.

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

SWsoft (openVZ), потом подтянулся гугль с cgroups.

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

как это связано с ЯП

Хрен знает, меня в каком-то смысле подташнивает от современного дизайна или программ, тошнотворные яркие цвета, типа простота, но не совсем.

Может я странный, и пипл схавает, вкусы разные и тд. Если бы привлекали оплачиваемых тестировщиков-людей, они бы могли как-то повлиять, что-то завернуть. В любом случае, это в каком-то смысле подняло бы солидность софта/информационного продукта, что люди там что-то протестировали, получили деньги, скажем, тыщща человек хотя бы.

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

DanilaZabiakaa
()

у тебе то что с того? почему это твоя война?

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

Надо подсказать товарищам буржуям чтоб на жабу санкции налодили. Вот забавные метания начнутся

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

Сексом я предпочитаю заниматься с женой, а не со скомпиленной и переиспользованной стандартной библиотекой питона.

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

я не спорю с тем, что это нестандартный подход, я спорю с тем, что

нельзя

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

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

Я исхожу из определения: „если теоеретически возможно, но на практике очень сложно, требует кучи сил и времени и чревато неочевидными проблемами и непредсказуемыми последствиями, значит нельзя“. На практике сделать новый язык под JVM или .Net — задача уровня курсовой работы студента 3-го курса. И этот новый язык сходу легко и без проблем получает доступ ко всем библиотекам под соответствующие платформы. А вот с питон-как-платформа у нас таких гарантий нету, напротив проблемы гарантированы.

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

nginx то свою функциональность добавляет, в отличие от докера

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

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

Да полно мелких компаний используют го

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

slew
()

Поржал, спасибо

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

Я бы сюда еще и Rust со Scala добавил бы

2.х скала в целом ниче так, в третьей там конструкций непривычных больше отсыпали. Главное не лезь в дебри с порога, после условного C# с LINQ (кому нужен шарп без линка?) относительно легко въехать. В библиотеках потом правда заблудишься между разными стримами и прочими ио-монадами

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

Сексом я предпочитаю заниматься с женой

А жена знает, что у тебя аккаунт на ЛОРе есть и что случилось с женой Ганса Райзера? Наверняка он тоже на ЛОР захаживал!

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

Как и во все остальное, за исключением плюсов и хаскеля с идрисом.

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

Та ладно. На Rust сейчас быдлокодеров – пруд пруди. Он внезапно зашёл фанатам JS, и они прямо заполонили. А шкалку толпы джавистов используют как такую улучшенную жабу. Ну или использовали, пока котлина не было.

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

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

Ну да, получается чудовищный говнокод

Ну так вот этого вот как раз и не хочется. Поэтому и сроки вот такие.

Это как в C++. Вроде бы человек уже через неделю начинает писать код, который компилируется и даже правильные результаты выдает. Но, например, локальные переменные-объекты создаются через new вместо того, чтобы размещаться на стеке; передача аргументов по значению или через указатель там, где уместно было бы использовать ссылки; классы с методами, хотя проще было бы структуру и набор свободных функций; иерархия классов там, где проще было бы шаблон класса применить; неиспользование const ни для параметров, ни для методов…

Вот чтобы это все причесать и научить следить за такими вещами время и нужно.

В других языках свой набор заморочек. Где-то поменьше (типа Java и Go), где-то заметно больше.

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

Я девопс, возможно это всё объясняет.

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

Ну так вот этого вот как раз и не хочется. Поэтому и сроки вот такие.

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

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

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

Это да. Но язык все-таки влияет.

Вот в упомянутой мной Scala, когда я ей интересовался, мне мозг выносили ко- и контра-вариантность (может быть из-за того, что толком они в имеющихся тогда доках описаны не были) и implicit-ы (или как их там).

Тогда как при изучении каких-то более рабоче-крестьянских языков (вроде Java или, внезапно, Eiffel-я) вообще особых сложностей не было.

Так что я бы все-таки делил языки на те, в которые вкатываться просто (при наличии пусть даже средних мозгов, вроде моих, и небольшого опыта) – Pascal, Java, Eiffel, Go сходу вспоминаются. И языки, в которые вкатываться не так просто – C++, Scala и, в какой-то степени, Rust.

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

Это да. Но язык все-таки влияет.

Да не, не особо. А при наличии годного ментора в команде это влияние сходит на нет.

Вот в упомянутой мной Scala, когда я ей интересовался, мне мозг выносили ко- и контра-вариантность

Тю! Ничо сложного. Немного практики и всё.

С другой стороны, я всегда шкалку видел как этакий недохачкелл, поэтому наверное меня такие мелочи на особо парят.

И языки, в которые вкатываться не так просто – C++, Scala и, в какой-то степени, Rust.

Да нет, на C++ толпы обезьян писали и пишут. Вспомни все эти безумные книги «C++ за 21 день» и чудовищный код из начала 2000х, когда они были модными.

hateyoufeel ★★★★★
()

Можно вести какую угодно демагогию, но против фактов не попрёшь - на Го уже написано с десяток топовых бесплатных инструментов с уникальной функциональностью, которыми повседневно массово пользуются юзеры и корпорации:

  • Docker/kubernetes,
  • kopia/restic,
  • Syncthing/rclone/croc,
  • куча туннелей/реверс-прокси на любой вкус и цвет (напр Traefik),
  • SFTPGo, gitea, cockroachdb, micro и т.д и т.п.

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

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

Так в начале двухтыщных и кресты были не те. Хотя какой-нибудь Шилдт уже тогда умел растечься страниц на восемьсот. Сейчас, наверное, на целый шкаф настрочил бы макулатуры.

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

Так в начале двухтыщных и кресты были не те. Хотя какой-нибудь Шилдт уже тогда умел растечься страниц на восемьсот. Сейчас, наверное, на целый шкаф настрочил бы макулатуры.

Чувак, ты C видел? Казалось бы, несложный язык должен быть, ведь в нём нет никаких фич типа полиморфизма (void* не считается), ООП. функциональщины и тому подобного. Но нет, килотонны чудовищного говнокода на C нас окружают. Посмотри на GObject, хотя бы. Вот такое же будущее ждёт Golang: гигантские фреймворки, обмазывающие всё это непонятной хренью для эмуляции функций языка, которых в голанге нет.

hateyoufeel ★★★★★
()
Ограничение на отправку комментариев: