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.

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

На ozon.ru зайди. Вот там вот дотнет.

Короче смешно даже обсуждать. Щас неудочки доказывают что дотнет не используется зато везде golang. Я просто угораю.

Хотя по факту, там на гошечке как раз веб-поебень разве что, прикрученная с боку.

А, ну еще да, на гошечке ДОКЕР, епте, и кубер, написанные как говно ессно и внутри гугла. При том что первое это просто обертка, CLI, по сути над линуксовыми механизмами контейнеризации, а второе - уже обертка над оберткой.

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

Я смотрю ты вообще прямо все «знаешь» и эрланг, и нутро озона, и прочее.

А по факту, ты просто ЛОРовский выдумщик.

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

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

А nginx, по сути, обертка над recvmsg() и sendmsg(). Лавсанчик, жги ещё.

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

Я смотрю ты вообще прямо все «знаешь» и эрланг, и нутро озона, и прочее.

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

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

С 70х и 80х нихера нового было не придумано. И мейнстрим там и застрял, вобщем-то.

Что это го, говно из 70х. Что современные ОС, кроме разве что, отчасти, винды, никуда не продвинулись по архитектуре. Что GUI, что интернет, и прочее и прочее.

Современное IT это сплошная деградация даже от уровня 70х.

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

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

Какую функциональность, просто байтики перекладывает из одного fd в другой.

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

Уровень дельфи, это в шараге, где ты лабы ща сдаешь

Тебя в шараге изнасиловали что ли? Почему у тебя постоянно всплывают лабы?

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

гугли Xerox PARC, Smalltalk, Lisp, вот это всё

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

GUI тоже в 70-х придумали? Расскажи поподробнее, очень интересно.

NLS в 1968 вышел.

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

Я смотрю ты вообще прямо все «знаешь» и эрланг, и нутро озона, и прочее.

не все, но по части го и ерланга, боюсь, тебе мне нечего рассказать. (погугли ergo framework на досуге и сопоставь с никнеймом «лоровского выдумщика»). так что по факту ты балабол без компетенций в поднимаемых вопросах.

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

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

Смешное, что несмотря на то что стандарт ANSI CL - 1994 года, мейнстрим он по сути обгоняет лет вот на 20 где-то, да.

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

не все, но по части го и ерланга, боюсь, тебе мне нечего рассказать.

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

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

Ну так, модно-молодежно. Просрут в итоге всё окончательно.

Тут, конечно, во многом и санкции виноваты. То что из-за них с MSSQL слезают и прочее.

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

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

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

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

Просрут в итоге

всё окончательно

Просрут

Оборот компании вырос на 71%

Лавсанчик, вангуй ещё.

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

байтики перекладывает из одного fd в другой

Ты щас 99% IT описал.

Оставшийся 1% это байтики перекладывает из одного адреса памяти в другой.

vbr ★★★★
()

Кто портянку читал? Расскажите чем там гошечка ТСа обидела?

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

Ну так не у меня, у тебя постоянно всплывает то, что ты ща в шараге лабы сдаешь

Да нет, ты чуть ли не в каждом втором посте про лабы пишешь. Покажи на кукле, куда тебя трогал преподаватель?

ну вот такая компетенция из тебя сквозит

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

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

санкции виноваты

Не слыхал, чтобы из-за санкций слазили с Java (хотя может я не в курсе?).

Это, кстати, один из самых больших минусов C# - хоть формально но и открытое, но по факту никому кроме MS не нужно, со всеми связанными с этим рисками.

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

По Go у меня мнения нет. Но вообще у гугла в ДНК записано «do not be evil», так что скорей всего он плохим заниматься не будет.

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

Недостижимая тебе?

Ну в каком-то смысле да. Сложновато мне было бы стать таким сельским дурачком как ты.

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

Привет. Я пишу плотно на Go уже лет 7. А начинал когда даже хайпа не было. До этого писал на C# и питоне. А до этого под embeeded на C и VHDL. Также работал реверс инженером. Знаю Го достаточно хорошо и могу о нем рассказать под разными углами.

Мне кажется, что вы не до конца разобрались в теме и начали накидывать на вентилятор.

У каждого есть своя позиция и он вправе её выражать. Однако ваши факты, добытые с просторов сети и «инсайдов» во многом не соответствуют действительности.

Go начинался как язык Alef ещё во времена Си, под Plan9. Если сравнивать Го и Alef, то можно ловить флешбеки.

Основную проблему, которую решает Go — быстрая (+кросс) компиляция и управление памятью. В остальном это просто наследник языка Си. Ну или можно сказать Си на стеройдах. Да и делали его собственно авторы C и UNIX.

Поэтому, кому близко процедурное/структурное мышление и желание знать как все устроено «под капотом» и отсутствие магии, то Go в этом плане подходит практически идеально. Это именно то, что делает язык высокоуровневым, на котором можно писать крупные надежные системы бизнес уровня (гонять json-ы :D).

Относительно других языков. Поверьте, плохо или хорошо писать можно на любом языке. Синтаксис же это вопрос привычки. Я например долго к питону привыкал. А потом кааак привык. Сейчас на Rust смотрю, аж глаза слезятся. Короче это вкусовщина и вопрос привычки. Например я абсолютно спокойно читаю ООП код GLib based библиотек. Хотя когда впервые увидел даже матерился. А потом классика: отрицание, гнев, торг… продукт.

Ваше негодование скорее всего кроется в предпочитаемых парадигмах. А именно конфликт ООП и не ООП. Вероятно вы привыкли мыслить в парадигме ООП, поэтому вас и коробит, что в Go надо понимать, как например работает слайс под капотом. Да и проектировать системы совсем иначе.

Мне, как привыкшему к работе с данными как с данными, а не как с абстракциями в виде классов и солидов, писать на Go комфортно. В языке есть все, что нужно для прикладной разработки. Тем не менее, я понимаю идеи ооп, долгое время писал на .net. Ничего, нормально. В дотнете меня скорее не устраивало, что проект билдится по 10 минут. А ещё то, что инженеры, начитавшись банды, делают по 20 слоев абстракции при 5 строках бизнес логики. И когда ресерчишь код, то логика упирается в очередную фабрику, где восстановить идею автора очень сложно. Плюс у оопшных штук не всегда хорошая производительность по объяснимым причинам.

Так что это всё вкусовщина. Если вам не нравится Го, то не стоит ругать то, что уже выстрелило и уверенно вошло в корпорации. Поверьте, это надолго. Компании умеют считать деньги за облака, а Го ест на порядок меньше ресурсов памяти и умеет утилизировать все процессоры. Плюс хорошо помещается в кеш. А писать на нем крупные системы можно довольно комфортно. Конечно есть и минусы. Как и во всём. Но он реально экономит сотни тысяч долларов на облаках в сравнении с java. Или ещё больше, в сравнении с django.

Надеюсь, что вы примите то, что вам не нравится Го и просто будете стараться обходить его стороной (как например я обхожу С++ :)). И не накидывать на пропейлер. Благо пока работы на разных технологиях достаточно.

А если интересно подискутировать — пишите. Расскажу все тонкости, плюсы и минусы.

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

Это, кстати, один из самых больших минусов C# - хоть формально но и открытое, но по факту никому кроме MS не нужно, со всеми связанными с этим рисками.

Я угораю просто от этого гона на MS. А типа, гугловское поделие использовать санкции не мешают чтоли?

Но вообще у гугла в ДНК записано «do not be evil»

Ты лет на 20 где-то отстал от реальности.

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

Ну в каком-то смысле да. Сложновато мне было бы стать таким сельским дурачком как ты.

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

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

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

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

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

Go начинался как язык Alef ещё во времена Си, под Plan9. Если сравнивать Го и Alef, то можно ловить флешбеки.

Да кто бы спорил, что это наркоман слизал что-то со своих наработок в Plan 9.

Основную проблему, которую решает Go — быстрая (+кросс) компиляция и управление памятью. В остальном это просто наследник языка Си. Ну или можно сказать Си на стеройдах. Да и делали его собственно авторы C и UNIX.

Чем он в «быстрой компиляции» обогнал Java, C# или Common Lisp? Туда же про управление памятью.

И какой из него наследник Си, если там GC в языке, если там нет ABI и так далее? Ты на нем драйвера не напишешь.

Поэтому, кому близко процедурное/структурное мышление и желание знать как все устроено «под капотом» и отсутствие магии, то Go в этом плане подходит практически идеально. Это именно то, что делает язык высокоуровневым, на котором можно писать крупные надежные системы бизнес уровня (гонять json-ы :D).

Еще раз, как мешают структурному и процедурному мышлению вышеперечисленные языки?

Ваше негодование скорее всего кроется в предпочитаемых парадигмах. А именно конфликт ООП и не ООП. Вероятно вы привыкли мыслить в парадигме ООП, поэтому вас и коробит, что в Go надо понимать, как например работает слайс под капотом. Да и проектировать системы совсем иначе.

Нет, конечно. Я вообще довольно прохладно отношусь к ООП, если это конечно не CLOS, или не Smalltalk и деривативы. Рекомендую, кстати, вылезти из своего зашоренного мирка, и с ними ознакомиться. Go коробит не «отсутствием ООП».

В дотнете меня скорее не устраивало, что проект билдится по 10 минут.

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

А ещё то, что инженеры, начитавшись банды, делают по 20 слоев абстракции при 5 строках бизнес логики.

Это проблема конкретных компаний и конкретных инженеров.

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

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

Компании умеют считать деньги за облака

За облака умеют, а за разработку и поддержку не умеют(а это главная статья расходов). И Google деньги например вообще не считает, у него их жопой жуй. Поэтому он может себе позволить натурально прилюдно срать(использовать Go).

Го ест на порядок меньше ресурсов памяти и умеет утилизировать все процессоры.

И .NET и Common Lisp и так далее, также не жрут много памяти.

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

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

Ты бы сразу сказал, я бы даже время на тебя тратить не стал.

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

Вот так из буханки хлеба..

На CL есть целые операционные системы:

https://github.com/froggey/Mezzano

а также Genera итд.

Это не значит что это наследник Си, и на нем круто писать драйвера и так далее.

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

Это не значит что это наследник Си, и на нем круто писать драйвера и так далее.

Не значит, но Golang получается отлично использовать для того же, для чего раньше использовался C в userspace: базы, бекенды, файловые системы в userspace’е, CLI утилиты и прочее.

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

Еще раз, для непонятливых. У Golang нету стандартизированного ABI, и внутри у него GC. Всё, проехали, никакой он не наследник Си. В этом плане даже у C++ проблемы, или там Rust. А Go вообще в пролете.

Базы, бекенды, файловые системы и CLI утилиты пишутся вообще на чем угодно. И на дотнете, и на Common Lisp, и на всем остальном, дурачок ты сельский.

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

Еще раз, для непонятливых. У Golang нету стандартизированного ABI, и внутри у него GC. Всё, проехали, никакой он не наследник Си. В этом плане даже у C++ проблемы, или там Rust. А Go вообще в пролете.

Причем тут ABI вообще? Мы не про библиотеки говорим.

Базы, бекенды, файловые системы и CLI утилиты пишутся вообще на чем угодно. И на дотнете, и на Common Lisp, и на всем остальном, дурачок ты сельский.

Не, не пишутся. Я не видел современных S3 хранилищ на CL, а на голанге есть minio.

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

Причем тут ABI вообще? Мы не про библиотеки говорим.

При том, кто наследник Си, а кто нет, дурик.

Не, не пишутся. Я не видел современных S3 хранилищ на CL, а на голанге есть minio.

Это потому что ты зашоренный дурачок. S3 хранилище ему. Вон на тебе RDF СУБД:

https://allegrograph.com/

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

При том, кто наследник Си, а кто нет, дурик.

Ты опять шизофазировать начал? Заканчивай уже.

S3 хранилище ему. Вон на тебе RDF СУБД.

Зачем мне graph database? Как я в него по S3 файл положу?

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

Зачем мне graph database? Как я в него по S3 файл положу?

Положи себе лиловый файл за воротник

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

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

Нет, последняя вот эта. Ты совсем плох стал уже.

cumvillain
()

Столько срача из-за одного язычка, про который я знаю только, что там core.async прибит гвоздями. Придётся, видимо, ознакомиться поподробнее — интересно же, из-за чего конкретно так полыхает %)

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