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.

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

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

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

.NET программист.

Что такое .NET программист? Ассоциироваться с каким-то конкретным языком - удел либо джунов либо недоучек.

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

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

Ну нет, это инвестиции называется. Когда работать нихера не надо, а оно само капает.

В бизнесе как-то работать надо, т.е. свой труд присутствует.

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

у тебя исходники clr дотнета есть? а то злые языки поговоривают, что он на с++. если так, то нехорошо это все.

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

Что такое .NET программист?

Программист, специализирующийся на платформе .NET

Ассоциироваться с каким-то конкретным языком

А что, .NET подразумевает какой-то один язык? Вы что, опять пьяным на LOR пишете?

Я в жизни писал дохера на чем

Да вы здесь один такой, единственный и неповторимый.

На вопросы про то, где видели C++ отвечать будете, илитарный вы наш?

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

В бизнесе как-то работать надо, т.е. свой труд присутствует.

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

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

кстати нашел. исходники CLR. и там с++ точно есть… просто посмотрел в пару мест.

https://github.com/dotnet/runtime

короче, катятся сльозы.

зы. там и чистый си в интерфейсах к железу… во как. да что ж такое!

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

Программист, специализирующийся на платформе .NET

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

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

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

Писал я, плотно за деньги, навскидку - на C, C++, C#, Java, Scala, Erlang, JS, PHP, Python, Perl, и так далее, это не считая всяких мелких правок на чем только угодно - на руби каком-нибудь, и не считая всякой скриптоты включая скриптоту на лиспах.

С++ я видел как на серверах, так и в десктопных приложениях, как в виде крупных кусков систем, так и в виде мелких вставок «для оптимизации». Как в проприетарном коде, так и, естественно, в куче опенсорса.

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

зы. там и чистый си в интерфейсах к железу… во как. да что ж такое!

Это потому, что .NET runtime делали ПТУшники с двумя курсами за плечами, которые про Common Lisp даже и не слышали, потому что lovesan-а на LOR-е не читают.

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

Потому что писал, плотно за деньги, навскидку - на C, C++, C#, Java, Scala, Erlang, JS, PHP, Python, Perl

Это за 15 лет в индустрии?

Поздравляю! Быть джуном в десятке языков и при этом такое ЧСВ, это прям достижение.

А что CL там нет?

Вы даже не нюхали CL в продакшене, оказывается.

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

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

Новые какие-то вещи, и в рантайме это видно, пишутся там на сишечке.

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

Нельзя быть «джуном в языке», дурень ты тупоголовый. И «синьором в X» тоже нельзя.

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

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

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

короче даже майкрософт неосилил избавиться от древних технологий. а ты хочешь нас заставить все бросить?

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

Нельзя быть «джуном в языке», дурень ты тупоголовый.

Запросто. Достаточно на вас посмотреть.

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

Так у него груз легаси которому скоро 30 лет будет, че ты хотел.

А так, существуют метациклические реализации .NET, конечно. Mono вон кстати почти что такой. Плюс есть Roslyn.

Еще раз, для непонятливых: и в рантайме дотнета, и в рантайме жабки - в хотспоте - С++ находится по одной единственной причине - это легаси.

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

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

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

Я, естественно, давно уже не джун.

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

А вот ты как раз не вылез по уровню развития из второго курса провинциальной шараги, типа какого-нибудь там бобруйского государственного

Илитарность так и прет.

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

Я, естественно, давно уже не джун

Ещё ниже скатился?

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

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

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

Писал я, плотно за деньги, навскидку - на C, C++, C#, Java, Scala, Erlang, JS, PHP, Python, Perl, и так далее

Говнокодер на все руки, кароч.

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

Как макака какая-то

Я писал на дотнете,
    не плакал,
На CL —
    не дрожала
        рука.
Какмакакакакаятокакал?
     …Ну и имечко
             у языка!

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

В том же C++,

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

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

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

в моно 6 процентов на Си.

roslyn это вообще какой-то набор компиляторов а не рантайм. ему и сишарпа хвтит за глаза.

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

Какие прокси? Это интерпретатор написанный на C#, который крутится на .NET, какие прокси? какие интеропы?

Еще раз - ты не в теме.

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

недалеко от истины

стартапы они такие

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

Ну нельзя же так, с козырей. Вы бы у него ещё сразу спросили за особенности представления чисел с плавающей точкой между .Net и CL, а также причём тут ANSI стандарт.

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

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

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

В защиту Лавсана - у меня такой же стек только чуть потолще и подольше, можно и в меня камни кидать по этому поводу.

Я, как честный обезьян, этого не скрываю.

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

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

Если вы этим будете заниматься, то да, и к бабке не ходи.

это сраные одноразовые поделки уровня шароварных видеоплееров под винду из 90х.

Зачем же вы собственный ограниченный опыт на всех экстраполируете?

Оно понятно, что если за 15 лет наговнокодить по чуть-чуть на десятке разных ЯП, то ничего толком не увидишь и не узнаешь, но считать что вокруг все такие… Впрочем, вполне в вашем духе.

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

Я, как честный обезьян, этого не скрываю.

Если бы вы такое же ЧСВ демонстрировали, то и в вас бы полетело, несумневайтеся.

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

Зачем же вы собственный ограниченный опыт на всех экстраполируете?

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

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

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

Ты никогда не видел высоконагруженных high availability систем на крестах, которые падают в корку на серверах клиентов

Представляете, не видел. Как-то не падают. Вот ведь в чем штука.

Поэтому ты и срань всякую типа modern C++ везде любишь тащить и прочее.

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

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

высоконагруженных high availability систем на крестах

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

вообще-то размер не говорит о способности к нагрузке. а скорей наоборот.

что за сервера такие, что они делают, что их 5 часов собирают?

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

Представляете, не видел. Как-то не падают. Вот ведь в чем штука.

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

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

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

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

ЧСВ удел шизов на Лиспах и умников на Оберонах (хотя троллить типов на Обероне в разы сложнее тк они гораздо умнее из тех что остались). Раньше ещё были шизы на Перле но, к сожалению - вымерли.

Доказывать что-либо в интернете анониму можно только ради кека, не более.

Я думал Лавсан настоящий лиспер прям с пеной у рта рассказывающий про производительность решений на CLOS, визжащий «не трогай MOP своими грязными лапами» и прочее веселье. А он… ну как это сказать? Стремящийся, что ли.

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

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

У нас в РБ в свое время был бум перевода сотрудников на ИП

Подтверждаю, я тоже застал это году в 2009 примерно.

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

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

Ну вас же просили не экстраполировать собственный опыт на всех.

Вот когда придется дебажить все это всратое говно, в котором непонятно где конкретно упало

Ну, если написать говно, то да, дебажить придеться.

Одно только непонятно: кто заставляет говно-то писать (ну кроме проблем в ДНК)?

и какая ебанина из шаблонов скомпилировалась не в то, что нужно

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

Сейчас на шаблонах принято писать так, что если скомпилировалось, то работает.

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

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

Про какой косяк речь?

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

ты никогда не видел высоконагруженных high availability систем на крестах, которые падают в корку на серверах клиентов

Т.е. в проектах, в которых ты учавствовал, и которые были на C++ были проблемы и они падали? Виновен C++ ? - Ну правильный вывод же.

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

И которые собираются еще по 5 часов.

На каком CPU и с каким объемом памяти? Можно примерное описание функционала этой системы?

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

Я не готов смотреть чужой С++ код до обеда. Стараюсь не расстраиваться на голодный желудок.

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

Писал я, плотно за деньги, навскидку - на C, C++, C#, Java, Scala, Erlang, JS, PHP, Python, Perl, и так далее, это не считая всяких мелких правок на чем только угодно - на руби каком-нибудь, и не считая всякой скриптоты включая скриптоту на лиспах.

Если ты попробуешь устроиться на позицию разработчика на любом из этих языков, то большинстве случаев будешь разочаован.

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

На каком CPU ? Можно примерное описание функционала этой системы?

Ну это не такая уж экзотика.

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

Не зря же в VK свой распределенный c++ный компилятор делали.

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

Нет, C++ виновен в том, что говнину на C++ невозможно дебажить вообще в принципе, особенно если корка из релизной сборки.

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

C++ же, особенно с огромным количеством разной степени всратости шаблонной магии(modern C++ херли) - вообще делает абсолютно невозможным сопоставить вручную проблемное место в корке с оригинальным кодом. Особенно на случаях выше шароварной ссанины на пару тыщ строк. Я даже лично знаю случаи когда из-за этого в прод выкладывались дебаг сборки - и вообще это не такая уж редкая практика(тут проблемка часто возникает в том что ха-ха-ха, в дебаг-сборке то все работает).

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

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

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

C++ же, особенно с огромным количеством разной степени всратости шаблонной магии

Я тоже не поддерживаю, когда шаблон на шаблоне и шаблоном погоняет. Но так не обязательно писать и это не будет означать, что ты пишешь НЕ НА MODERN C++.

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

Простые одноуровневые шаблоны (если так можно выразиться) вполне себе дебажатся.

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

Блин, т.е. не разобрались, в чем проблема и выложили то, что хоть как-то работает. Да еп жеш.

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